Problemas DM.IBTable1.Edit

Delphi

15/09/2015

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

Curtidas 0

Respostas

Ricardo Araujo

Ricardo Araujo

15/09/2015

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

Fabio Cardoso

15/09/2015

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!
GOSTEI 0
Rodrigo Carlos

Rodrigo Carlos

15/09/2015

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.
GOSTEI 0
Fabio Cardoso

Fabio Cardoso

15/09/2015

ok, qualquer coisa manda ai se eu puder ajudar Estou as ordens!
GOSTEI 0
Rodrigo Carlos

Rodrigo Carlos

15/09/2015

Brigadão Fabio, valeu mesmo.
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

15/09/2015

precisando de alguma coisa so falar...
GOSTEI 0
POSTAR