Problemas com instrução SQL

Delphi

09/02/2005

OLÁ A TODOS.

Estou com o seguinte problema: tenho um form onde irei fazer o recebimento de contas do meu sistema. inicialmente tenho um dblookupcombobox para listar qual o cliente, após isso tenho um dbgrid onde irei listar a(s) conta(s) que o cliente possui. uso a tabela com nome conta_receber, onde quero listar os seguintes campos no dbgrid: documento, data_emissao, vencimento, valor. Alguém poderia me ajudar como faria a instrução: outro problema é que quando vou colocar o código para ele fazer a seleção, com base na dblookupcombox na query que inseri em meu programa na opção SQL dá erro também, já tentei com um edit que faz uma consulta em outro form mas também não deu certo.
Desde já muito obrigado!


Gtts

Gtts

Curtidas 0

Respostas

Marcio.theis

Marcio.theis

09/02/2005

Para fazer isto vc deve de usar um Query, onde que vc poderia fazer algo como:

No envento OnChange do seu dblookupcombobox colocaria

if dblookupcombobox.Text <> ´´ then
    qry.Close;
    qry.SQL.Clear;
    qry.SQL.Add(´select documento, data_emissao, vencimento, valor´);
    qry.SQL.Add(´from conta_receber´);
    qry.SQL.Add(´where conta_receber = ´ + IntToStr(tblClienteNUCLIENTE.Value));
    qry.Open;


Caso não ficou claro para vc, coloque seu código para podermos dar uma olhada nele.


GOSTEI 0
Gtts

Gtts

09/02/2005

muito obrigado pela sua colaboração!

Funcionou e não deu nenhum erro. Se eu tentar com um edit, como citei logo acima, em qual evento que colocaria a instrução? No caso o Edit iria receber o valor que selecionei na consulta em outro form em um DBGrid.


GOSTEI 0
Marcio.theis

Marcio.theis

09/02/2005

Fica a sua escolha entre o OnChange e OnExit, eu prefiro o OnExit, mas vc quem escolhe.


GOSTEI 0
Gtts

Gtts

09/02/2005

Márcio.

Coloquei o código, confome tu postou no fórum, só que usei um edit.

if edit2.Text ´´ then
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(´select documento, data_emissao, vencimento, valor´);
query1.SQL.Add(´from conta_receber´);
query1.SQL.Add(´where conta_receber = ´ + IntToStr([u:31e1bab0df]tblClienteNUCLIENTE.Value[/u:31e1bab0df]));
query1.Open;

minha dúvida agora é o que coloco onde está sublinhado? O erro de compilação está ali. Coloque o nome da tabela e o campo NOME e não deu certo. Se puder me ajudar, ficarei muito grato.


GOSTEI 0
Marcio.theis

Marcio.theis

09/02/2005

No caso na instrução SQL vc deve de passar o código do cliente, no caso se o nome do campo na tabela conta_receber for igual a NUCLIENTE, ficaria assim:

query1.SQL.Add(´where conta_receber.nucliente = ´ + IntToStr(tblClienteNUCLIENTE.Value));

o (tblClienteNUCLIENTE.Value) no caso é o código do cliente que foi selecionado, se vc quiser passar o nome pode passar diretamente o Edit.Text, mas o seu SQL iria mudar para:

query1.Close;
query1.SQL.Clear;
query1.SQL.Add(´select documento, data_emissao, vencimento, valor´);
query1.SQL.Add(´from conta_receber, cliente´);
query1.SQL.Add(´where conta_receber.nucliente = cliente.nucliente´);
query1.SQL.Add(´and cliente.nmcliente = ´´´ + Edit.Text + ´´´´);
query1.Open;

mas na minha opinião, o melhor seria vc executar o SQL buscando o cliente pelo seu código, pois vc pode de ter clientes com o mesmo nome e neste caso iria trazer os dois.


GOSTEI 0
Gtts

Gtts

09/02/2005

MARCIO.

tentei buscar pelo código, conforme tu me indicou e o código ficou o seguinte:

[color=green:64966eb4d0]if edit1.Text ´´ then
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(´select documento, data_emissao, vencimento, valor´);
query1.SQL.Add(´from conta_receber, cliente´);
query1.SQL.Add(´where conta_receber.codigo_cliente = ´ + IntToStr(tbClientesCODIGO.Value));
query1.SQL.Add(´where conta_receber.nucliente = cliente.CODIGO´);
query1.SQL.Add(´and cliente.nmcliente = ´´´ + Edit2.Text + ´´´´);
query1.Open; [/color:64966eb4d0]

o problema é que compila, não dá erro nenhum e qdo vou executar ele faz a consulta tudo sem problema o edit recebe o cógigo mas dáa seguinte mensagem:

invalid variant type conversion!

Tu saberia me dizer o que está acontecendo?

Desde já muito grato.


GOSTEI 0
Marcio.theis

Marcio.theis

09/02/2005

Bom... se vc usar a busca pelo código o seu SQl pode ficar assim:

edit1.Text ´´ then
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(´select documento, data_emissao, vencimento, valor´);
query1.SQL.Add(´from conta_receber, cliente´);
query1.SQL.Add(´where conta_receber.nucliente = cliente.CODIGO´);
query1.SQL.Add(´and conta_receber.codigo_cliente = ´ + IntToStr(tbClientesCODIGO.Value));
query1.Open;

o erro (Invalid Variant Type Conversion! ) ocorre quando vc não converteu uma variável, como por exemplo de string para integer, algum lugar poderia estar esperando integer e venho string, assim ocorre o erro.


GOSTEI 0
POSTAR