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

Exibir Numa Combobox Registro De Query


Carlos Rocha

Pergunta

Olá pessoal, olha só.

Tenho 2 combobox no form

ComboBoxNome

ComboBoxCpfCnpj

o usando os dois códigos abaixo pra mostrar o cpf do cliente cujo nome, à medida que o nome é digitado no ComboBoxNome, mostrar no ComboBoxCpfCnpj.

Mas num dá certo, num da erro, nem sai o cpf.

O que estou fazendo de errado?

procedure TFormCadastros.ComboBoxCpfCnpjChange(Sender: TObject);
begin
SqlQueryClientes.Close;
SqlQueryClientes.sql.Clear;
SqlQueryClientes.SQL.Add('Select * from Clientes where CliNome = '+''''+ComboBoxNome.Text+''''+'');
SqlQueryClientes.Open;

SqlQueryClientes.first;
while not SqlQueryClientes.EOF do
begin
ComboBoxCpfCnpj.Items.Add(VarToStr(SqlQueryClientes.Fields[2].value));
SqlQueryClientes.Next;
end;

end;
procedure TFormCadastros.ComboBoxCpfCnpjChange(Sender: TObject);
begin
  SQLQueryClientes.Close;
  SQLQueryClientes.SQL.Clear;
  SQLQueryClientes.SQL.Add('select * from Clientes where CliNome = :Nome');
  SQLQueryClientes.ParamByName('Nome').AsString := ComboBoxNome.Text;
  SQLQueryClientes.Open;
  
SqlQueryClientes.first;
while not SqlQueryClientes.EOF do
begin
ComboBoxCpfCnpj.Items.Add(VarToStr(SqlQueryClientes.Fields[2].value));
SqlQueryClientes.Next;
end;

end;

Depois pretendo fazer o mesmo para todos os outros campos da tabela... Endereco, telefone...

Obrigado

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Ola amigo não sei se você precisa usar todo esse codigo ai que você digitou, se for apenas para descobrir o CNPJ/CPF de alguém assim que você digita no primeiro combobox porque você não usa somente o locate no onchange do comboobx:

Eis o codigo em locate

QUERYCLIENTES.LOCATE('NOME',COMBOBOXNOME.Text,[LoPartialKey]);

COMBOBOXCPFCNPJ.TEXT:=QUERYCLIENTESCPFCNPJ.VALUE;

Qualquer duvida posta ai amigo

falou!

T+

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei teu código mas num saiu nada, fora ele, outros códigos tambem forao testados.

procedure TFormCadastros.ComboBoxCpfCnpjChange(Sender: TObject);
begin
  SQLQueryClientes.Close;
  SQLQueryClientes.SQL.Clear;
//  SQLQueryClientes.SQL.Add('select * from Clientes where CliNome = :Nome');
//  SQLQueryClientes.ParamByName('Nome').AsString := ComboBoxNome.Text;

//  SQLQueryClientes.SQL.Add('select * from Clientes where CliNome nomecliente like '+''''+ComboBoxNome.Text+''''+'');
//  ComboBoxCpfCnpj.text := SQLQueryClientes.fieldbyname('CliCpfCnpj').AsString;

//  SQLQueryClientes.SQL.Add('select * from Clientes where CliNome like :Nome');
//  SQLQueryClientes.ParamByName('Nome').AsString := '%'+ComboBoxNome.Text'%';

//  SqlQueryClientes.SQL.Add('Select * from Clientes where CliNome Like %'+ ComboBoxNome.Text + '%');

//  SqlQueryClientes.SQL.Add('Select * from Clientes where CliNome Like :Parametro');
//  SqlQueryClientes.ParamByName('Parametro').Value := '%' + ComboBoxNome.Text + '%';

SQLQUERYCLIENTES.LOCATE('NOME',COMBOBOXNOME.Text,[LoPartialKey]);
COMBOBOXCPFCNPJ.TEXT:=SQLQUERYCLIENTES.Text;
  SQLQueryClientes.Open;
  
SqlQueryClientes.first;
while not SqlQueryClientes.EOF do
begin
ComboBoxCpfCnpj.Items.Add(VarToStr(SqlQueryClientes.Fields[2].value));
SqlQueryClientes.Next;
end;

end;

Sera que eu num to errando nos eventos?

Link para o comentário
Compartilhar em outros sites

  • 0

Ola Carlos você testou esse codigo no events onchang do comboboxnome e não funcionou?

procedure TForm1.ComboBoxNOMEChange(Sender: TObject);

begin

QUERYCLIENTES.LOCATE('EMPRESA',COMBOBOXNOME.Text,[LoPartialKey]);

COMBOBOXCPFCNPJ.TEXT:=QUERYCLIENTESPRODUTO.VALUE;

END;

Testei aqui e funcionou

Aguardo retorno

Link para o comentário
Compartilhar em outros sites

  • 0

Minha ultima tentativa foi assim.

procedure TFormCadastros.ComboBoxNomeChange(Sender: TObject);
begin
  SQLQueryClientes.Close;
  SQLQueryClientes.SQL.Clear;
  SQLQueryClientes.SQL.Add('select * from Clientes');
  SQLQueryClientes.Open;

  SqlQueryClientes.first;
  while not SqlQueryClientes.EOF do
   begin
     ComboBoxNome.Items.Add(VarToStr(SqlQueryClientes.Fields[1].value));
     ComboBoxCpfCnpj.Items.Add(VarToStr(SqlQueryClientes.Fields[2].value));
     SqlQueryClientes.Next;
   end;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

Coloque somente esse codigo como esta postado aqui no events do onchange do comboboxNOME

procedure TFormCadastros.ComboBoxNOMEChange(Sender: TObject);

begin

QUERYCLIENTES.LOCATE('NOME',COMBOBOXNOME.Text,[LoPartialKey]);

COMBOBOXCPFCNPJ.TEXT:=QUERYCLIENTES.Text;

end;

E faz um teste pra ver se funciona

Qualquer duvida posta ai

falou!

T+

Link para o comentário
Compartilhar em outros sites

  • 0

Assim não funciona?

procedure TForm1.ComboBoxNOMEChange(Sender: TObject);

begin

sqlQUERYCLIENTES.ACTIVE:=TRUE;

sqlQUERYCLIENTES.REFRESH;

WITH sqlQUERYCLIENTES DO

BEGIN

Close;

SQL.Clear;

SQL.Add('select * from CLIENTES');

OPEN;

sqlQUERYCLIENTES.LOCATE('EMPRESA',COMBOBOXNOME.Text,[LoPartialKey]);

COMBOBOXCPFCNPJ.TEXT:=sqlQUERYCLIENTESPRODUTO.VALUE;

END;

END;

Link para o comentário
Compartilhar em outros sites

  • 0

Fiz meus ajustes e cheguei nesse código que funcionou:

procedure TFormCadastros.ComboBoxNomeChange(Sender: TObject);
begin
SQLQueryClientes.ACTIVE:=TRUE;
SQLQueryClientes.REFRESH;
SQLQueryClientes.Close; 
SQLQueryClientes.SQL.Clear; 
SQLQueryClientes.SQL.Add('Select * From Clientes'); 
SQLQueryClientes.Open; 

SQLQueryClientes.LOCATE('CliNome',ComboBoxNome.Text,[LoPartialKey]);
ComboBoxCPFCNPJ.TEXT:=SQLQueryClientes.fieldbyname('CliCpfCnpj').AsString;

SQLQueryClientes.first; 
while not SQLQueryClientes.EOF do 
begin 
ComboBoxNome.Items.Add(VarToStr(SQLQueryClientes.Fields[1].value)); 
SQLQueryClientes.Next; 
end; 

end;

Mas..

Estou usando DBExpress, portanto SQLConnection com SQLQueryGridClientes.

Como ficaria esse mesmo código caso eu usasse o zeos pra acessar o mysql?

Link para o comentário
Compartilhar em outros sites

  • 0

Ufa ate que enfim tu conseguiu amigo

Esqueci desse detalhe realmente se você não estiver usando query com o fields tem que usar o fieldbyname

ComboBoxCPFCNPJ.TEXT:=SQLQueryClientes.fieldbyname('CliCpfCnpj').AsString;

Qual seria a necessidade desse EOF? porque tem que percorer a tabela toda?

SQLQueryClientes.first;

while not SQLQueryClientes.EOF do

begin

ComboBoxNome.Items.Add(VarToStr(SQLQueryClientes.Fields[1].value));

SQLQueryClientes.Next;

Sobre o ZEOS infelizmente ainda não tive a oportunidade de conhece-lo, tabalho com IBExpert e Interbase.

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...