GARANTIR DESCONTO

Fórum Sql Com Inner Join - append funciona, edit não funciona #355292

12/03/2008

0

:?:
Olá a todos,
Uso Delphi 7 + Firebird 1.5 , Dbexpress.
Montei uma Sql para extrair os dados das tabelas usando Inner Join conforme mostrado abaixo:
>>>>>>>>>>>>
V_SqlMestre := ´SELECT A.TPR_COD, A.TPR_DTCADASTRO, ´ +
´A.CLI_COD, A.FRN_COD, A.TPR_VENCTO, A.TPR_PAGTO, ´ +
´A.TPR_VALORTOTAL, ´ +
´B.CLI_NOMEFANTASIA, ´ +
´C.FRN_NOMEFANTASIA, ´ +
´FROM TITULOSMESTRE A ´+
´INNER JOIN CLIENTES B ON A.CLI_COD = B.CLI_COD ´ +
´INNER JOIN FORNECEDORES C ON A.FRN_COD = C.FRN_COD ´ +
´ORDER BY A.TPR_COD ´;

V_SqlDtSt.CommandText := V_SqlMestre;
V_SqlDtSt.Close;
V_CliDtSt.Close;

V_CliDtSt.Open;

==== >>>>>>> A INCLUSÃO FUNCIONA

V_CliDtSt.Append;

With V_CliDtSt do
begin
FieldByName(´Tpr_Cod´).AsString := EdtCodigo.Text;
FieldByName(´Tpr_DtCadastro´).AsString := EdtDtCadastro.Text;
FieldByName(´Frn_Cod´).AsString := EdtCodFrn.Text;
FieldByName(´Cli_Cod´).AsString := EdtCodCli.Text;
FieldByName(´Tpr_Vencto´).AsString := EdtDtVencto.Text;
FieldByName(´Tpr_Pagto´).AsString := EdtDtPagto.Text;
FieldByName(´Tpr_ValorTotal´).AsCurrency := StrToFloat(EdtTot.Text);

Post;
If ApplyUpdates(0) = 0 then
V_SqlCncDados.Commit(Transacao)
else
V_SqlCncDados.Rollback(Transacao);
end;

==== >>>>>>> NÃO FUNCIONA NA EDIÇÃO

V_CliDtSt.Edit

With V_CliDtSt do
begin
FieldByName(´Tpr_Cod´).AsString := EdtCodigo.Text;
FieldByName(´Tpr_DtCadastro´).AsString := EdtDtCadastro.Text;
FieldByName(´Frn_Cod´).AsString := EdtCodFrn.Text;
FieldByName(´Cli_Cod´).AsString := EdtCodCli.Text;
FieldByName(´Tpr_Vencto´).AsString := EdtDtVencto.Text;
FieldByName(´Tpr_Pagto´).AsString := EdtDtPagto.Text;
FieldByName(´Tpr_ValorTotal´).AsCurrency := StrToFloat(EdtTot.Text);

Post;
If ApplyUpdates(0) = 0 then
V_SqlCncDados.Commit(Transacao)
else
V_SqlCncDados.Rollback(Transacao);
end;

Retorna a mensagem: Column Unknown CLI_NOMEFANTASIA
Não encontra a coluna CLI_NOMEFANTASIA.

Porque a inclusão funciona mesmo com colunas extraidas de outra tabela e na edição ao dar POST o sistema recusa. O CommandText é o mesmo.

Alguem pode me ajudar nisso.
Abraços
Neto


Neto

Neto

Responder

Posts

12/03/2008

Flyskin

você configurou quais os campos que devem entrar na instrução como condição where? os campos de join não podem estar setados...


Responder

Gostei + 0

12/03/2008

Neto

Grande flyskin,
já estamos ficando conhecidos, afinal a dica da função de semana do ano que vc falou foi ótima, obrigado novamente.

Sobre a dúvida em questão ( Sql ) os campos setados na condição where são os mesmos na inclusão e edição, não deveriam funcionar????

Abraços pra vc, amigo
Neto


Responder

Gostei + 0

12/03/2008

Flyskin

não porque no insert ele não utiliza o filtro where, já no update ele utiliza, portanto você deve identificar quais os campos que devem entrar na instrução where para o update e para o delete...
é sempre recomendado informar a chave primária da tabela principal para o where e o restante dos campos somente como update, com exceção dos campos vindos de um join que não devem ter nenhuma propriedade marcada...

espero ter ajudado, sempre que eu puder estou por aí...


Responder

Gostei + 0

13/03/2008

Neto

valeu......
T+


Responder

Gostei + 0

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

Aceitar