Ir para conteúdo
Fórum Script Brasil
  • 0

Sql No Delphi


Guest Daniel Lourenco

Pergunta

Guest Daniel Lourenco

Olá pessoal, sou iniciante em Delphi e gostaria de saber se é possível fazer um select específico com a clausula "count" utilizando parâmetros, conforme abaixo:

cds_visitas.Close;

sds_visitas.Close;

cds_visitas.CommandText:='select count(num_visita) from visitas where cod_cliente like:Pcodvisita';

cds_visitas.Params[0].AsInteger:=StrToInt(DBEdit13.Text);

cds_visitas.Open;

Quando eu faço isso pelo ibexpress (firebird) funciona direito, já pelo Delphi dá o erro abaixo:

" ... não é um valor inteiro válido..."

Agora, se eu mudo o select conforme abaixo funciona, mas ele não faz o que eu preciso que é fazer um count no campo num_visita da minha tabela:

cds_visitas.Close;

sds_visitas.Close;

cds_visitas.CommandText:='select * from visitas where cod_cliente like:Pcodvisita';

cds_visitas.Params[0].AsInteger:=StrToInt(DBEdit13.Text);

cds_visitas.Open;

Será que existe uma solução para utilizar as opções do select especificamente a um campo usando count, Max, min, etc ?

Pelo que percebi, no firebird só consigo fazer selects trazendo todos os registro na memória “ select * from...”?

Se eu fizer isso também dá errado: 'select num_visita from visitas where cod_cliente like:Pcodvisita';

Agradeço se puder me ajudar...

Att. Daniel Lourenço.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá Daniel!

Mais o menos desde 1997 eu migrei meus aplicativos Clipper para Delphi, usando SQL da própria BDE, inicialmente com tabelas Fox26 e atualmente dBaseIV e VisualDBaseIV...

Então, sugiro que você experimente executar sua query usando o SQLBuilder primeiro ou o DBExplorer, para verificar se ela retorna um valor inteiro válido na contagem de registros...

Bom... fiz isso também... vê se ajuda!

- Criando uma tabela Visual dBASE7

create table 'visitas.dbf'
(
idvisitas autoinc,
num_visita char(4),
cod_cliente char(5)
)

- Incluindo algumas informações:

insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0001','00044')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0002','00223')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0004','00145')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0003','00031')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0005','00145')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0006','00032')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0007','00031')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0008','00044')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0009','00223')
insert into 'visitas.dbf' (num_visita, cod_cliente) values ('0010','00045')

- verificando

select * from 'visitas.dbf'
order by cod_cliente

idvisitas num_visita cod_cliente
        4 0003       00031
        7 0007       00031
        6 0006       00032
        1 0001       00044
        8 0008       00044
       10 0010       00045
        3 0004       00145
        5 0005       00145
        2 0002       00223
        9 0009       00223

- Contando as visitas ao cliente '00044'

Procedure TForm1.Button1Click(Sender: TObject);
Var
  iVisitas: LongInt;
  sCodCliente: String;
Begin
  sCodCliente := '00044';
  iVisitas := 0;
  With query1 do Begin
    SQL.Clear;
    SQL.Add('select count(cod_cliente) qtvisitas');
    SQL.Add('from ":temp:visitas.dbf"');
    SQL.Add('where cod_cliente="'+sCodCliente+'"');
    Prepare;
    Open;
    iVisitas := FieldByName('qtvisitas').AsInteger;
    Close;
    If iVisitas=0 then
      ShowMessage('Não teve nenhuma visita!')
    Else If iVisitas=1 then
      ShowMessage('Só teve uma visita!')
    Else
      ShowMessage('Foram '+IntToStr(iVisitas)+' visitas!');
    {EndIf}
  End;{With query1 do Begin}
End;

Ok?

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...