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