Fórum Duvidas em relatorio #412035
27/01/2012
0
Tentei de varias formas de resolver este problema e nao consegui, mas vou tentar mais uma vez pois so falta este erro para acabar o meu aplicativo...
Tenho um aplicato de pedido e nele tenho duas tabelas pedidos e itens, na tabela pedidos cadastro as informações como codigopedido, dataentrega, prazo, fornecedor e obs, ja na tabela itens cadastro as informações produto, unidade, codigopedido, codigoitem, qtd, status, valor unitario e valortotal. Qdo falo o cadastro de pedido posso ter nele um item ou varios, relação pai e filho, entao crie na tabela item o campo status para dar baixa item por item e nao no pedido, pois os mesmos podem chegar em datas diferentes.
Preciso de um relatorio que faça uma pesquisa se o status de todos os itens do pedido estao como true e caso nao retorne as informações do pedido com os itens com a informação true (mas o relatorio nao vai mostrar o pedido se todos os itens estiverem como false, caso algum item esteja como true ele ira mostrar o pedido e somente o item com o status true).
O codigo que estou usand é este:
Mas ele da o seguinte erro:
Tipos de dados imcompativel na expressão de criterio
Tenho um aplicato de pedido e nele tenho duas tabelas pedidos e itens, na tabela pedidos cadastro as informações como codigopedido, dataentrega, prazo, fornecedor e obs, ja na tabela itens cadastro as informações produto, unidade, codigopedido, codigoitem, qtd, status, valor unitario e valortotal. Qdo falo o cadastro de pedido posso ter nele um item ou varios, relação pai e filho, entao crie na tabela item o campo status para dar baixa item por item e nao no pedido, pois os mesmos podem chegar em datas diferentes.
Preciso de um relatorio que faça uma pesquisa se o status de todos os itens do pedido estao como true e caso nao retorne as informações do pedido com os itens com a informação true (mas o relatorio nao vai mostrar o pedido se todos os itens estiverem como false, caso algum item esteja como true ele ira mostrar o pedido e somente o item com o status true).
O codigo que estou usand é este:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery1.SQL.Add(Select oc.codigo, oc.fornecedor, oc.estatus, oc.valor1, oc.valor2, oc.valor3, oc.valor4, oc.contato, oc.telefone, oc.prazodado, oc.plano, oc.dataatual, oc.dataentrega, oc.par1, oc.par2, oc.par3, oc.observacao, tf.fornecedor,);
ADOQuery1.SQL.Add(oc.classificacao from (tabelaoc as oc inner join tabelarepresentante as tf on oc.fornecedor = tf.codigo));
ADOQuery1.SQL.Add(where oc.dataentrega between :DataIni and :DataFim);
ADOQuery1.SQL.Add(and oc.estatus = :estatus);
ADOQuery1.SQL.Add(order by oc.codigo);
ADOQuery1.Parameters.ParamByName(DataIni).Value := DataIni;
ADOQuery1.Parameters.ParamByName(DataFim).Value := DataFim;
ADOQuery1.Parameters.ParamByName(estatus).Value := true;
ADOQuery2.SQL.Add(Select it.codigoinvisivel, it.codigo, it.produto, it.unidade, it.valorunitario, it.valorunitarioreal, it.qtd, it.valortotal, it.classificacao from tabelaitem as it where it.codigo = :codigo);
ADOQuery1.Open;
ADOQuery2.Open;Mas ele da o seguinte erro:
Tipos de dados imcompativel na expressão de criterio
Daniel
Curtir tópico
+ 0
Responder
Posts
29/01/2012
Emerson Nascimento
para listar o pedido a instrução deve ser mais ou menos assim:
select
○ oc.codigo, oc.fornecedor, oc.estatus, oc.valor1, oc.valor2, oc.valor3,
○ oc.valor4, oc.contato, oc.telefone, oc.prazodado, oc.plano, oc.dataatual,
○ oc.dataentrega, oc.par1, oc.par2, oc.par3, oc.observacao, tf.fornecedor,
○ oc.classificacao
from
○ tabelaoc as oc
inner join
○ tabelarepresentante as tf on oc.fornecedor = tf.codigo
where
○ oc.dataentrega between :DataIni and :DataFim
○ and oc.estatus = :estatus
○ and exists(select it.codigo from tabelaitem it where it.codigo = oc.codigo and it.status = T)
order by
○ oc.codigo
e, para listar o item:
Select
○ it.codigoinvisivel, it.codigo, it.produto, it.unidade, it.valorunitario,
○ it.valorunitarioreal, it.qtd, it.valortotal, it.classificacao
from
○ tabelaitem as it
where
○ it.codigo = :codigo and it.status = T
select
○ oc.codigo, oc.fornecedor, oc.estatus, oc.valor1, oc.valor2, oc.valor3,
○ oc.valor4, oc.contato, oc.telefone, oc.prazodado, oc.plano, oc.dataatual,
○ oc.dataentrega, oc.par1, oc.par2, oc.par3, oc.observacao, tf.fornecedor,
○ oc.classificacao
from
○ tabelaoc as oc
inner join
○ tabelarepresentante as tf on oc.fornecedor = tf.codigo
where
○ oc.dataentrega between :DataIni and :DataFim
○ and oc.estatus = :estatus
○ and exists(select it.codigo from tabelaitem it where it.codigo = oc.codigo and it.status = T)
order by
○ oc.codigo
e, para listar o item:
Select
○ it.codigoinvisivel, it.codigo, it.produto, it.unidade, it.valorunitario,
○ it.valorunitarioreal, it.qtd, it.valortotal, it.classificacao
from
○ tabelaitem as it
where
○ it.codigo = :codigo and it.status = T
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)