Não consigo gravar com join

Delphi

14/12/2008

Vejam o codigo abaixo quando dou applyudate diz coluna Descricao desconhecida. Retiro as 2 colunas do select retirando o join ai grava, o que tem de errado quando coloco o left join?

select ipva_seguro.placa_veiculo,
ipva_seguro.ano_ipva,
ipva_seguro.parcela,
ipva_seguro.dt_vencimento,
Ipva_seguro.dt_pagamento,
Ipva_Seguro.vlr_ipva,
Ipva_Seguro.vlr_ipva_pago,
ipva_seguro.vlr_tx_licenciamento,
ipva_Seguro.vlr_lacre_placa,
ipva_Seguro.vlr_seguro_obriga,
ipva_seguro.vlr_honorarios,
ipva_seguro.´OBS:´,
ipva_seguro.vlr_seguro_total,
ipva_seguro.dt_outros,
ipva_seguro.desc_outros,
ipva_seguro.dt_ven_stotal,
ipva_seguro.dt_ven_ipva,
ipva_seguro.dt_pgto_ipva,
ipva_seguro.numero_lacre,
cad_veiculos.placa_veiculo,
Cad_Veiculos.descricao
from Ipva_seguro
left outer join cad_veiculos on
ipva_Seguro.placa_veiculo = cad_Veiculos.placa_veiculo.

Realmente não sei o que ta errado.


Fernandoaco

Fernandoaco

Curtidas 0

Respostas

Edno

Edno

14/12/2008

não sou expert em SQL, mas Join é usado em CONSULTAS, ou seja, se são consultas, qual a intenção de gravar coisas nela? E como seria, se a consulta carrega e associa dados de duas tabelas diferentes? Como o banco de dados gravaria?


GOSTEI 0
Fernandoaco

Fernandoaco

14/12/2008

Usando join evito usar campos lookups, configuro os fields dos campos join para que não faça nada, somente leitura.


GOSTEI 0
Catunda

Catunda

14/12/2008

vou supor que vc utilize o firebird ou interbase com dbexpress.
1 - crie os campos no sqldataset (não é no clientdataset) que está ligado ao provider.
2 - no campo chave primaria set a propriedade readonly para false, e na propriedade providerflags coloque:
pflnupdate:=true
pflnwhere:=true
pflnkey:=true
pfhiden:=false
3 - nos demais campos na propriedade providerflags coloque:
pflnupdate:=true
pflnwhere:=false
pflnkey:=false
pfhiden:=false
4 - no providerflags dos campos referentes a outra tabela coloque:
pflnupdate:=false
pflnwhere:=false
pflnkey:=false
pfhiden:=false
5 - set a propriedade updatemode do datasetprovider para upwherekeyonly

isto deve resolver.


GOSTEI 0
Jair Bg

Jair Bg

14/12/2008

Bom Dia, não vai conseguir, utilize relacionamento por condição
Troque no seu código isso:
from Ipva_seguro
left outer join cad_veiculos on
ipva_Seguro.placa_veiculo = cad_Veiculos.placa_veiculo.

Por isso:
from Ipva_seguro, cad_veiculos
WHERE (ipva_Seguro.placa_veiculo = cad_Veiculos.placa_veiculo)

ok...


GOSTEI 0
Fernandoaco

Fernandoaco

14/12/2008

Realmente foi nos providerflags tinha alguns campos configurado errado
Valeu!

Obrigado a todos.


GOSTEI 0
POSTAR