Lookup / SQL

Delphi

22/03/2005

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]


Row

Row

Curtidas 0

Respostas

Isaque

Isaque

22/03/2005

Informe-nos quais os componentes vc está utilizando para montar as instruções SQL.


GOSTEI 0
Row

Row

22/03/2005

DBEXPRESS

SQLDATASET - PROVIDER -CLIENTDATASET - DATASOURCE


GOSTEI 0
Isaque

Isaque

22/03/2005

Altere a instrução SQL :

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

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?


GOSTEI 0
Row

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?


GOSTEI 0
Row

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


GOSTEI 0
POSTAR