Fórum Problemas com instrução SQL #267823

09/02/2005

0

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

Responder

Posts

09/02/2005

Marcio.theis

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.


Responder

Gostei + 0

09/02/2005

Gtts

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.


Responder

Gostei + 0

09/02/2005

Marcio.theis

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


Responder

Gostei + 0

09/02/2005

Gtts

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.


Responder

Gostei + 0

09/02/2005

Marcio.theis

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.


Responder

Gostei + 0

09/02/2005

Gtts

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.


Responder

Gostei + 0

09/02/2005

Marcio.theis

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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar