DouglasP 1 Denunciar post Postado Março 1, 2009 Boa noite, como disse em outro topico to fzeno um programa e preciso fazer uma consulta no caso um count (*) em bando de dados mssql e retornar um valor no panel. no caso ficaria Total de contas: x (sendo x o resultado da pesquisa) grato. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 2, 2009 Bom, isto é simples... supondo que já fez sua consulta e tem o valor do total em alguma variável armazenado, digamos que uma variável string X, basta por o seguinte código após o término da mesma: panel.caption := 'Total de contas: ' + X; //Partindo da premissa que X é a variável que tem o valor do seu count armazenado. []'s Compartilhar este post Link para o post Compartilhar em outros sites
DouglasP 1 Denunciar post Postado Março 3, 2009 To fazendo a consulta assim, isso se tiver certo, ja que nao sei mecher direito com bd no delphi: With ADOQuery1 do begin Active := False; SQL.Clear; SQL.Add('select count(*) from memb_info'); ExecSQL; Close; como declaro uma string para o resultado? grato. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 3, 2009 Está quase certo... mas tem alguns ajustes a serem feitos.. o primeiro é que selects não se usa o execsql, mas o comando open. E é melhor usar o comando close ao invés do active := false; também. E outra: se der um open e logo depois um close na sua query vai perder o que ela iria te trazer. Vou ajustar seu código para mostrar a informação que precisa abaixo. With ADOQuery1 do begin Close; SQL.Clear; SQL.Add('select count(*) as Total from memb_info'); Open; if not IsEmpty then panel.caption := 'Total de contas: ' + FieldByName(Total).AsString else panel.caption := 'Total de contas: 0'; end; []'s Compartilhar este post Link para o post Compartilhar em outros sites
DouglasP 1 Denunciar post Postado Março 5, 2009 Deu um erro: ADOQuery1:Field not found :/ Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Março 5, 2009 Ops, erro meu... faltou por o Total entre ''. panel.caption := 'Total de contas: ' + FieldByName('Total').AsString Outra forma que poderia ser usada é esta: panel.caption := 'Total de contas: ' + Fields[0].asString No caso, o ADOQUERY1.Fields[0].asString te retornaria os valores do primeiro campo retornado na select, no caso em questão o valor do count. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Alan_Prog 0 Denunciar post Postado Abril 3, 2009 nao teria um jeito mais facil?? por exemplo.. no vb eh soh você colocar !field que retorna o valor da consulta.. nao tem como fazer isso no delphi? mas sem criar uma funçao pra isso? Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Abril 3, 2009 Você está fazendo uma contagem de registros não é?? Não tem como saber quantos registros tem antes de realizar a consulta no BD... então, de toda forma terá que gerar uma consulta no BD... e até onde sei não há como saber quantos registros tem na tabela sem consultar isso antes de alguma forma... mesmo que vá usar um componente Table ligado ao banco ele irá pesquisar antes na base os registros da tabela associada para você ter o seu total e você será obrigado a atualizar o mesmo sempre que algum registro for incluido/excluído para ter os dados reais e atualizados. E veja que os códigos que colocamos neste seu tópico não são de uma função, e sim os procedimentos para realizar a consulta e retornar o valor dela num componente da sua tela. []'s Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Abril 3, 2009 Olá há ùma forma sim de saber quantos registros tem uma tabela usando a API do delphi, porém, como o chrnos já disse, é necessário realizar uma consulta mesmo, na verdade, o que é obtido é a quantidade de registros a query retornou... SQLQuery1.RecordCount; Ps.: Eu obtive esta linha no lazarus mas o delphi também tem. Compartilhar este post Link para o post Compartilhar em outros sites