Lookup / SQL
Olah pessoal.
Estou usando SQL para criar campos que referenciam-se a outras tabela.
EX:
Tenho a tabeLa
[color=green:42fbcef34b]
GRUPOS
cod_grupo (pk)
nome_grupo
[/color:42fbcef34b]
ea tabela
[color=red:42fbcef34b]
PRODUTOS
cod_prod(pk)
cod_grupo (fk)
desc_prod
[/color:42fbcef34b]
no Sql de ´PRODUTOS´, selecionei tamem o nome do grupo a qual o produto pertence. [color=blue:42fbcef34b]´SELECT P.*, G.NOME_GRUPO FROM PRODUTOS P, GRUPOS G WHERE P.COD_GRUPO = G.COD_GRUPO´[/color:42fbcef34b]
estah mostrando em um grid blza
quando vou inserir algum produto, nada dá errado
o unico problema, eh quando eu vou alterar algum produto. aih dah um erro dizendo que aquele campo ´nome do grupo´ que eu selecionei no ´PRODUTOS´ não existe
´Collum Unknown NOME_GRUPO´
Alguem sabe como resolver isso?
Obrigado![/code]
Estou usando SQL para criar campos que referenciam-se a outras tabela.
EX:
Tenho a tabeLa
[color=green:42fbcef34b]
GRUPOS
cod_grupo (pk)
nome_grupo
[/color:42fbcef34b]
ea tabela
[color=red:42fbcef34b]
PRODUTOS
cod_prod(pk)
cod_grupo (fk)
desc_prod
[/color:42fbcef34b]
no Sql de ´PRODUTOS´, selecionei tamem o nome do grupo a qual o produto pertence. [color=blue:42fbcef34b]´SELECT P.*, G.NOME_GRUPO FROM PRODUTOS P, GRUPOS G WHERE P.COD_GRUPO = G.COD_GRUPO´[/color:42fbcef34b]
estah mostrando em um grid blza
quando vou inserir algum produto, nada dá errado
o unico problema, eh quando eu vou alterar algum produto. aih dah um erro dizendo que aquele campo ´nome do grupo´ que eu selecionei no ´PRODUTOS´ não existe
´Collum Unknown NOME_GRUPO´
Alguem sabe como resolver isso?
Obrigado![/code]
Row
Curtidas 0
Respostas
Isaque
22/03/2005
Informe-nos quais os componentes vc está utilizando para montar as instruções SQL.
GOSTEI 0
Row
22/03/2005
DBEXPRESS
SQLDATASET - PROVIDER -CLIENTDATASET - DATASOURCE
SQLDATASET - PROVIDER -CLIENTDATASET - DATASOURCE
GOSTEI 0
Isaque
22/03/2005
Altere a instrução SQL :
Para:
Com isso o Provider vai ´enteder´ que a tabela principal é a PRODUTOS e consequentimente gerar instruções Insert, Update e Delete apenas para campos dessa tabela.
Obs.: Os nomes de cada tabela sempre têm q está em Caixa alta (letras maiúsculas).
SELECT P.*, G.NOME_GRUPO FROM PRODUTOS P, GRUPOS G WHERE P.COD_GRUPO = G.COD_GRUPO
Para:
Select p.*, g.nome_grupo from PRODUTOS p INNER JOIN GRUPOS G ON (p.cod_grupo = g.cod_grupo)
Com isso o Provider vai ´enteder´ que a tabela principal é a PRODUTOS e consequentimente gerar instruções Insert, Update e Delete apenas para campos dessa tabela.
Obs.: Os nomes de cada tabela sempre têm q está em Caixa alta (letras maiúsculas).
GOSTEI 0
Row
22/03/2005
bom
mudei a SQL
deixei como vc indicou
porem continua dando o mesmo erro
ouvi falar alguma coisa sobre aquela propriedade ´providerflags´
tem algo relacionado?
mudei a SQL
deixei como vc indicou
porem continua dando o mesmo erro
ouvi falar alguma coisa sobre aquela propriedade ´providerflags´
tem algo relacionado?
GOSTEI 0
Row
22/03/2005
mudei a propriedade ´providerflags´ do tfield NOME_PROD do ClienteDataSet para [i:59361b5847]false[/i:59361b5847] mas mesmo assim não funcionou
tive que adicionar os TFIELDs também no SQLDataSet e fazer o mesmo procedimento mudando a propriedade ´providerflags´
Assim funcionou. Só gostaria de saber, qual é o correto, e o pq de adicionar os campos no SQLDataSet.
Estou usando o conceito de [b:59361b5847]nested table[/b:59361b5847]. isso influencia?
tive que adicionar os TFIELDs também no SQLDataSet e fazer o mesmo procedimento mudando a propriedade ´providerflags´
Assim funcionou. Só gostaria de saber, qual é o correto, e o pq de adicionar os campos no SQLDataSet.
Estou usando o conceito de [b:59361b5847]nested table[/b:59361b5847]. isso influencia?
GOSTEI 0
Row
22/03/2005
bom
agora o meu problema é o seguinte:
fiz a substituição dos lookups e deixei tudo por SQL.
só que quando eu preciso mostrar um campo que está relacionado através da SQL exatamente na hora que eu seleciono ele(sem dar o apply) o valor do campo não aparece.
EX: tenho um formulario de orçamentos (tabela ORCAMENTOS), e nesse form eu vou adicionando os produtos deste orcamento (ITENS_ORC - referencia a tabela PRODUTOS).
No momento em que adiciono os produtos, nada aparece, só quando eu dou um OK (applyupdates) e abro o formulario denovo para atualizar.
Isso me parece lógico, mais a SQL só seleciona os dados que estão no banco, e como na situação eu ainda estou só adicionando os produtos para dar um unico apply no final, eles não iraum aparecer.
Como posso resolver isso?
Me falaram para usar o evento OnCalcFields
agora o meu problema é o seguinte:
fiz a substituição dos lookups e deixei tudo por SQL.
só que quando eu preciso mostrar um campo que está relacionado através da SQL exatamente na hora que eu seleciono ele(sem dar o apply) o valor do campo não aparece.
EX: tenho um formulario de orçamentos (tabela ORCAMENTOS), e nesse form eu vou adicionando os produtos deste orcamento (ITENS_ORC - referencia a tabela PRODUTOS).
No momento em que adiciono os produtos, nada aparece, só quando eu dou um OK (applyupdates) e abro o formulario denovo para atualizar.
Isso me parece lógico, mais a SQL só seleciona os dados que estão no banco, e como na situação eu ainda estou só adicionando os produtos para dar um unico apply no final, eles não iraum aparecer.
Como posso resolver isso?
Me falaram para usar o evento OnCalcFields
GOSTEI 0