GARANTIR DESCONTO

Fórum Erro -206 dbExpress amp; FB #350653

16/12/2007

0

Olá...

Estou usando DBEXPRESS, FIREBIRD!
Estou com um problema aqui difícil de se resolve... espero que alguem me ajude.. pois é de extrema importancia no momento...

Tenho um form LOGRADOURO onde busca o registro CIDADE com o seguinte código:
**
begin
try
Application.CreateForm(TfrmCidade, frmCidade);
frmCidade.BtnRetorno.Visible := True;
frmCidade.ShowModal;
DM.cdsLogradouroID_CIDADE.AsInteger := DM.cdsCidadeID_CIDADE.AsInteger ;
[color=red:c8da5b223f] DM.cdsLogradouroNOME_CIDADE.AsString := frmcidade.DtSrc.DataSet.fieldByname(´NOME_CIDADE´).Value;[/color:c8da5b223f]
finally
frmCidade.Release;
frmCidade := nil;
end;
end;
**

Acontece que na linha:
DM.cdsLogradouroNOME_CIDADE.AsString := frmcidade.DtSrc.DataSet.fieldByname(´NOME_CIDADE´).Value;
É gerada a exception -206 por não ter o campo NOME_CIDADE na tabela logradouro, pois somente o ID é gravado na tabela...

O erro é este, o que sugerem como correção????


SQL da tabela cidade:
SELECT C.ID_CIDADE,
C.NOME_CIDADE,
C.ESTADO
FROM CIDADE C
ORDER BY ID_CIDADE

SQL da tabela Logradouro:
SELECT L.ID_LOGRADOURO,
L.ID_CIDADE,
L.ENDERECO,
L.CEP,
L.BAIRRO,
C.NOME_CIDADE AS NOME_CIDADE,
C.ESTADO
FROM LOGRADOURO L
LEFT OUTER JOIN CIDADE C ON C.ID_CIDADE = L.ID_CIDADE
ORDER BY ID_LOGRADOURO

Obrigado...


I.need.help

I.need.help

Responder

Posts

16/12/2007

I.need.help

Então... alguma sugestão?


Responder

Gostei + 0

16/12/2007

Sistemald

Este erro esta dando na hora de salvar?

se for você tem que nos campos que não são da tabela principal e setar a sua propriedade para hidden true, e update e where para false.


Responder

Gostei + 0

16/12/2007

I.need.help

Realmente é no momento da gravação...

Tentei ajustar ProviderFlags e deu o mesmo erro!

Mais alguma dica?

Obrigado!


Responder

Gostei + 0

16/12/2007

Sistemald

Ajuste o Provider para whereKeyonly, e sete também a field correspondente a chave primaria para inkey para true.

O fields deve ser acertados no clientdataset


Responder

Gostei + 0

17/12/2007

I.need.help

Deu o mesmo erro, olha só.

[img:78255ff566]http://dec17.imgshare.us/8R3.jpg[/img:78255ff566]


Responder

Gostei + 0

17/12/2007

Oswaldosaraujo

Deu o mesmo erro, olha só. *** imagem removida pela moderação ***


Olá

Acho que para vc conseguir gravar nesta tabela, vc terá que fazer uma tabela aninhada com uma SQLQuery e um CDS para vc gravar na segunda tabela.

Outra coisa é que, quando vc tem vários tabelas na query, é bom vc colocar no OnGetTableName do Provider o nome da Tabela Principal...as vezes dá este erro ao gravar na principal


Responder

Gostei + 0

17/12/2007

I.need.help

Até agora, sem solução...
Talvez por falta de informação da minha parte!

Vcs estão entendendo o problema ao menos?

Obrigado! :cry:


Responder

Gostei + 0

17/12/2007

Ulisses_sjardim

Fala companheiro!

O erro se deve ao seguinte, você disse que o campo nome_cidade não pertence a tabela logradouro. Só que quando o datasetprovider gera a instrução de inserção ou atualização, as providerflags do campo nome_cidade devem estar todas setadas como false. Caso contrário o mesmo irá gerar estas instruções com a coluna nome_cidade o qual não existe na tabela gerando o erro que você notificou. :)

Você deve ainda setar a pfInKey como True para o campo chave da tabela logradouro e a propriedate UpdateMode do datasetprovider como wherekeyonly.

Lembrando que as providerflags devem ser configuradas na query(sqldataset, sqlquery) e no clientdataset.


Responder

Gostei + 0

17/12/2007

I.need.help

Fala companheiro! O erro se deve ao seguinte, você disse que o campo nome_cidade não pertence a tabela logradouro. Só que quando o datasetprovider gera a instrução de inserção ou atualização, as providerflags do campo nome_cidade devem estar todas setadas como false. Caso contrário o mesmo irá gerar estas instruções com a coluna nome_cidade o qual não existe na tabela gerando o erro que você notificou. :) Você deve ainda setar a pfInKey como True para o campo chave da tabela logradouro e a propriedate UpdateMode do datasetprovider como wherekeyonly. Lembrando que as providerflags devem ser configuradas na query(sqldataset, sqlquery) e no clientdataset.


Entendi... então..!
Na qryLogradouro e no cdsLogradouro apenas UPDATE e KEY ficaram TRUE, o NOME_CIDADE e ESTADO ficaram todos FALSE!

Ulisses, obrigado pela explicação. Consegui o resultado desejado em minha aplicação, que era exibir os dados retornados e efetuar a gravação desses dados..(O que antes gerava o erro)!

Agradeço mais uma vez!

:lol: Abraços


Responder

Gostei + 0

18/12/2007

Ulisses_sjardim

Espero sempre poder ajudar.
Flw!!! 8)


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar