Fórum Problemas DM.IBTable1.Edit #531814

15/09/2015

0

Boa noite!


Porque todas as vezes e uso o "DM.IBTable1.Edit;", ele só altera a primeira linha do banco? exemplo:
DM.IBTable1.Edit;

DM.IBTable1.FieldByName('Cont_id').AsString:= edt1.text;

DM.IBTable1.FieldByName('Cont_nome').AsString:= edt2.text;

DM.IBTable1.FieldByName('Cont_Usuario').AsString:= edt3.text;

DM.IBTable1.FieldByName('Cont_maquina').AsString:= edt4.text;



aqui seria como esta minha tabela.



[img]http://arquivo.devmedia.com.br/forum/imagem/444757-20150915-182949.png[/img]
Rodrigo Carlos

Rodrigo Carlos

Responder

Posts

16/09/2015

Ricardo Araujo

o dataset trabalha em apenas uma registro, seria bando unidirecional , se quiser atualizar vários Registros de uma vez terá que usa SQL puro.
Responder

Gostei + 0

16/09/2015

Fabio Cardoso

qual seu objetivo? Atualizar uma linha do banco aleatória onde vc escolhe a linha e altera ou esses parâmetros todos devem ser replicados na tabela toda?

Se for localizar um linha no banco use :

 if DM.IBTable1.Locate('NOME_CAMPO_A_PESQUISAR', EdtLocalizar.Text, []) then
begin
  DM.IBTable1.Edit;
  DM.IBTable1.FieldByName('Cont_id').AsString:= edt1.text;
  DM.IBTable1.FieldByName('Cont_nome').AsString:= edt2.text;
  DM.IBTable1.FieldByName('Cont_Usuario').AsString:= edt3.text;
  DM.IBTable1.FieldByName('Cont_maquina').AsString:= edt4.text;
end;



AGORA, se for
para que estes dados fiquem repetidos na tabela todam você pode colocar um tquery no seu form
e fazer tipo abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var
  s:string;
begin
  s:= 'UPDATE TABELA SET Cont_id = :P1, Cont_nome= :P2 ;'
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add(S);
  Query1.ParamByName('P1').AsString := edt1.text;
  Query1.ParamByName('P2').AsString := edt2.text;
  try
    Query1.ExecSQL;
  except on
    e:exception do
    begin
      showmessage(e.Message);
      abort;
    end;
  end;
end;


Espero ter ajudado!
Responder

Gostei + 0

17/09/2015

Rodrigo Carlos

Oi bom dia!

Desculpe a demora em responder, deu certo desta forma:

DM.IBTable1.Locate('NOME_CAMPO_A_PESQUISAR', EdtLocalizar.Text, []);
DM.IBTable1.Edit;
DM.IBTable1.FieldByName('Cont_id').AsString:= edt1.text;

Muito obrigado pela ajuda.
Responder

Gostei + 0

17/09/2015

Fabio Cardoso

ok, qualquer coisa manda ai se eu puder ajudar Estou as ordens!
Responder

Gostei + 0

17/09/2015

Rodrigo Carlos

Brigadão Fabio, valeu mesmo.
Responder

Gostei + 0

17/09/2015

Ricardo Araujo

precisando de alguma coisa so falar...
Responder

Gostei + 0

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

Aceitar