Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Ribamar

[Resolvido] Update Delphi x SQL (ADO)

Recommended Posts

Caros, bom dia

 

estou com problemas para atualização de um banco de dados SQL através do ADO:

     With Form1.ADOCadFer do begin
        Close;
        SQL.Add(' UPDATE dbo.CADFER ');
        SQL.Add('Set (NOMCLI ='+quotedstr(Form1.Edit1.text)+',CODPEÇ ='+quotedstr(Form1.Edit3.text)+',DESFER ='+quotedstr(Form1.Edit4.text)+',CARFER ='+quotedstr(Form1.Edit21.text)+',MODFER ='+quotedstr(Form1.Edit22.text)+',SERFER ='+quotedstr(Form1.Edit23.text) +')');
        SQL.Add('where NUMFER ='+quotedstr(Form1.DSvPesqProj.DataSet.FieldByName('Numero').AsString) +' AND '+quotedstr(Form1.DSvPesqProj.DataSet.FieldByName('ANO').AsString) +')');
       try
          ExecSQL;
       except
       end;
     end;

desta forma com Insert sem problemas, mas para o Update não, qual seria o dispador correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pude observar que você está utilizando Ç em um nome de campo no DB, até onde sei, isto não é permitido, mas se for no SQL Server, acho que pode.

 

tente executar a query diretamente no banco de dados e nos informe a mensagem de erro...

      With Form1.ADOCadFer do begin
        Close;
        SQL.Add(' UPDATE dbo.CADFER ');
        SQL.Add('Set (NOMCLI ='+quotedstr(Form1.Edit1.text)+',CODPEÇ ='+quotedstr(Form1.Edit3.text)+',DESFER ='+quotedstr(Form1.Edit4.text)+',CARFER ='+quotedstr(Form1.Edit21.text)+',MODFER ='+quotedstr(Form1.Edit22.text)+',SERFER ='+quotedstr(Form1.Edit23.text) +')');
        SQL.Add('where NUMFER ='+quotedstr(Form1.DSvPesqProj.DataSet.FieldByName('Numero').AsString) +' AND '+quotedstr(Form1.DSvPesqProj.DataSet.FieldByName('ANO').AsString) +')');
        ShowMessage(SQL.Text); // <-- Aqui você vai ver como está indo a query para o DB, com a mensagem aberta, pressione [Ctrl + C]
       try
          ExecSQL;
       except
       end;
     end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega imagine você sendo um componente ADO recebendo esse comando de UPDATE, está meio complexo como o bdexterholland tente executar esse UPDATE no próprio banco e também melhore um pouco essa passagem de parâmetros tipo:

 

With Form1.ADOCadFer do begin
Close;
SQL.Add(' UPDATE dbo.CADFER'); 
SQL.Add('Nome = :nome);
SQL.ParamByName('nome').AsString;
SQL.ExecSql;

 

Com essa passgem de valores fica mais facil pegar possíveis erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu amigos, com a mensagem pude perceber que o erro estava na linha de codigo que estava passado para o SQL, e não na forma, faltava um campo do banco e dois ")", que deveria estar lá.

 

 

 

Pude observar que você está utilizando Ç em um nome de campo no DB, até onde sei, isto não é permitido, mas se for no SQL Server, acho que pode.

 

tente executar a query diretamente no banco de dados e nos informe a mensagem de erro...

      With Form1.ADOCadFer do begin
        Close;
        SQL.Add(' UPDATE dbo.CADFER ');
        SQL.Add('Set (NOMCLI ='+quotedstr(Form1.Edit1.text)+',CODPEÇ ='+quotedstr(Form1.Edit3.text)+',DESFER ='+quotedstr(Form1.Edit4.text)+',CARFER ='+quotedstr(Form1.Edit21.text)+',MODFER ='+quotedstr(Form1.Edit22.text)+',SERFER ='+quotedstr(Form1.Edit23.text) +')');
        SQL.Add('where NUMFER ='+quotedstr(Form1.DSvPesqProj.DataSet.FieldByName('Numero').AsString) +' AND '+quotedstr(Form1.DSvPesqProj.DataSet.FieldByName('ANO').AsString) +')');
        ShowMessage(SQL.Text); // <-- Aqui você vai ver como está indo a query para o DB, com a mensagem aberta, pressione [Ctrl + C]
       try
          ExecSQL;
       except
       end;
     end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.