Vê se isso serve:

procedure DataModule1.Incrementa(Nome_Tabela: String; Chave_primaria:
TField);
var
Qry: TSQLQuery;
begin
    //termina a execução caso não esteja em modo de inserção
    if Chave_primaria.DataSet.State <> dsInsert then exit;
        Qry := TSQLQuery.Create(nil);         //cria uma instancia do objeto
        try
        Qry.SQLConnection1 := SQLConnection1;         //o seu componente de
conexão com o banco
        Qry.SQL.Add('select max('+Chave_primaria.FieldName+')'+' from
'+Nome_Tabela);
        Qry.Open;
        if Qry.Fields[0].IsNull then         //se estiver vazia a tabela
retornará nulo
            Chave_primaria.AsInteger:=1;    //este será o primeiro registro
            else
                Chave_Primaria.AsInteger:=Qry.Fields[0].AsInteger+1;
        finally
            FreeAndNil(Qry);    //libera o objeto da memória
        end;
  end;

Sds,

Neto


----- Original Message -----
From: "Gustavo Valente" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, September 23, 2004 9:44 AM
Subject: [delphi-br] Como atribuir o resultado de uma Query a uma variável?


Olá, Pessoal,

    Tudo bem?
    Estou usando uma query que retorna apenas um valor de um único
campo, e preciso atribuir esse valor a uma variável. Como poderei
fazer isso?
    O meu objetivo é criar uma rotina de autonumeração, já que, pelo
Interbase (versão 6.0, sql dialect 3), o Generator não funcionou para
chave primária.
    Abaixo, um trecho da procedure (uso Delphi 7.0):

        var max:string;
...
       dm.sqldssecundario.Close; ---> SQLDATASET é o componente mais
adequado para esse fim?
       dm.sqldssecundario.CommandText:='select max (codigo) from imovel';
       dm.sqldssecundario.Open;
       max:='RESULTADO DA QUERY'; --> Essa é a linha que está faltando!

dm.cldprincipal.FieldByName('codigo').AsString:=inttostr((strtoint(max)+1));

[s]

Gustavo


--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]

Links do Yahoo! Grupos










-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 

Responder a