Fórum DBGrid #351530
08/01/2008
0
Boa tarde,
Tenho três tabelas em meu bd.
Uma de produtos, uma de pedido e outra de itens do pedido.
Criei o relacionamento master detail no delphi sem problemas,
a tela de pedido esta ok. Utilizo um dbgrid para inserir os itens.
Aqui tenho duas duvidas.
1a.No clientdateset do meu itens do pedido eu criei um campo lookup
para que pudesse aparecer o lookup na grid. Tem como colocar este
campo na dbgrid sem precisar cria-lo no clientdataset ? por este
procedimento, tenho que adicionar os campos no clientdateset, e eu
não costumo fazer isto. Isto é mais por curiosidade.
2a.Como já estou posicionado com o produto, existe alguma forma de
no meu dbgrid trazer o campo unidade que esta no cadastro do produto ?
em uma outra coluna ?
Gostaria que meu dbgrid ficasse assim:
Produto | Nome do Produto (lookup) | Und (Read-Only) | Preço
Quando abro minhas tabelas faço assim.
itens.commandtext := ´select * from itens order by pedido´
já tentei assim:
itens.commandtext := ´select itens.*, produto.unidade from itens left
join produto on (itens.produto = produto.codigo) order by pedido
Mas ele dá erro de SQL no left. Se deixo desta forma e tiro o relacionamento ele vai funcionar. Mas é evidente que preciso
do relacionamento.
Grato
Tenho três tabelas em meu bd.
Uma de produtos, uma de pedido e outra de itens do pedido.
Criei o relacionamento master detail no delphi sem problemas,
a tela de pedido esta ok. Utilizo um dbgrid para inserir os itens.
Aqui tenho duas duvidas.
1a.No clientdateset do meu itens do pedido eu criei um campo lookup
para que pudesse aparecer o lookup na grid. Tem como colocar este
campo na dbgrid sem precisar cria-lo no clientdataset ? por este
procedimento, tenho que adicionar os campos no clientdateset, e eu
não costumo fazer isto. Isto é mais por curiosidade.
2a.Como já estou posicionado com o produto, existe alguma forma de
no meu dbgrid trazer o campo unidade que esta no cadastro do produto ?
em uma outra coluna ?
Gostaria que meu dbgrid ficasse assim:
Produto | Nome do Produto (lookup) | Und (Read-Only) | Preço
Quando abro minhas tabelas faço assim.
itens.commandtext := ´select * from itens order by pedido´
já tentei assim:
itens.commandtext := ´select itens.*, produto.unidade from itens left
join produto on (itens.produto = produto.codigo) order by pedido
Mas ele dá erro de SQL no left. Se deixo desta forma e tiro o relacionamento ele vai funcionar. Mas é evidente que preciso
do relacionamento.
Grato
Emarcolongo
Curtir tópico
+ 0
Responder
Posts
11/01/2008
Djjunior
1º Não utilize o Master/Detail do Delhpi é bugado! (pelo menos no bde já tive muitos problemas) o melhor é no AfterPost da query Pai vc fechar e abrir a query filha é mais seguro
2º Pra ter o campo de unidade é mais fácil vc criar um campo calculado e no evento onCalc da query colocar algo do tipo:
3º O problema da sua query é que vc tá misturando as bolas... ou vc faz:
ou vc faz...
Forma usual no Oracle o (+) significa que é opcional ou seja left join se o (+) estivesse no itens.produto seria um right join sacou ?
2º Pra ter o campo de unidade é mais fácil vc criar um campo calculado e no evento onCalc da query colocar algo do tipo:
if not (CodProduto.isNull) and (CodProduto.Text <> ´´) then CodUnid.Text := BuscaUnid(codProduto);
3º O problema da sua query é que vc tá misturando as bolas... ou vc faz:
select itens.*, produto.unidade from itens left join produto on (itens.produto = produto.codigo) order by pedido (SQL ANSI não funcina no ORACLE abaixo das versões 9x)
ou vc faz...
select itens.*, produto.unidade from itens , produto where itens.produto = produto.codigo(+) order by pedido
Forma usual no Oracle o (+) significa que é opcional ou seja left join se o (+) estivesse no itens.produto seria um right join sacou ?
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)