Não consigo gravar com join
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.
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
Curtidas 0
Respostas
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
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
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.
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
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...
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
14/12/2008
Realmente foi nos providerflags tinha alguns campos configurado errado
Valeu!
Obrigado a todos.
Valeu!
Obrigado a todos.
GOSTEI 0