Fórum update #435952
01/03/2013
0
procedure TForm1.BitBtnSalvarClick(Sender: TObject);
Var i : Integer;
begin
inherited;
DM2.ADOQry.Close;
DM2.ADOQry.Open;
for i := 0 to item.Items.Count - 1 do
begin
DM2.ADOQry.SQL.text:= 'Select * from tab Where num_processo like :ParamNumProcListview';
DM2.ADOQry.Parameters.ParamByName('ParamNumProcListview').Value:=(item.Items[i].SubItems[0]);
if not DM2.ADOQry.IsEmpty then
begin
DM2.ADOQry.SQL.Clear;
DM2.ADOQry.SQL.Add('Update tab set nome= :ParamNomeListview, num_processo= :ParamNumProcListview, obs= DM2.ADOQrynum_processo.Value+' ;'+ :ParamObsListview where num_processo= :ParamNumProc_listview');
DM2.ADOQry.Parameters.ParamByName('ParamNomeListview').Value:=(item.Items[i].Caption);
DM2.ADOQry.Parameters.ParamByName('ParamNumProc_listview').Value:=(item.Items[i].SubItems[0]);
DM2.ADOQry.Parameters.ParamByName('ParamObsListview').Value:=(item.Items[i].SubItems[1]);
DM2.ADOQry.ExecSQL;
end
else
begin
DM2.ADOQry.Close;
DM2.ADOQry.Open;
DM2.ADOQry.Insert;
DM2.ADOQry.FieldByName('nome').AsString:= item.Items[i].Caption;
DM2.ADOQry.FieldByName('num_processo').AsString:= item.Items[i].SubItems[0];
DM2.ADOQry.FieldByName('obs').AsString:= item.Items[i].SubItems[1];
DM2.ADOQry.Post;
end;
end;
item.Clear;
Edit1.SetFocus;
end;Maurício Curi
Curtir tópico
+ 0Posts
01/03/2013
Vander Ferraz
Tente colocar as atualizações em outra query.
Gostei + 0
04/03/2013
Maurício Curi
Gostei + 0
04/03/2013
William
Minha única dúvida é, vc está usando um loop para selects, inserts e updates, não sei o tamanho da sua base de dados mas esse tipo de rotina pode reduzir a performance da sua aplicação.
Não testei dá uma olhada ...
procedure TForm1.BitBtnSalvarClick(Sender: TObject);
Var i : Integer;
begin
inherited;
DM2.ADOQry.Close;
DM2.ADOQry.SQL.Clear;
for i := 0 to item.Items.Count - 1 do
begin
DM2.ADOQry.SQL.text:= 'Select * from tab Where num_processo like :ParamNumProcListview';
DM2.ADOQry.Parameters.ParamByName('ParamNumProcListview').Value:=(item.Items[i].SubItems[0]);
DM2.ADOQry.Open;
if not DM2.ADOQry.IsEmpty then
begin
DM2.ADOAux.Close;
DM2.ADOAux.SQL.Clear;
DM2.ADOAux.SQL.Add('Update tab set nome= :ParamNomeListview, num_processo= :ParamNumProcListview, obs= DM2.ADOQrynum_processo.Value+' ;'+ :ParamObsListview where num_processo= :ParamNumProc_listview');
DM2.ADOAux.Parameters.ParamByName('ParamNomeListview').Value:=(item.Items[i].Caption);
DM2.ADOAux.Parameters.ParamByName('ParamNumProc_listview').Value:=(item.Items[i].SubItems[0]);
DM2.ADOAux.Parameters.ParamByName('ParamObsListview').Value:=(item.Items[i].SubItems[1]);
DM2.ADOAux.ExecSQL;
end
else
begin
DM2.ADOAux.Close;
DM2.ADOAux.SQL.Clear;
DM2.ADOAux.SQL.Add('INSERT INTO tab (nome, um_processo, obs)VALUES(:nome, :num_processo, :obs)');
DM2.ADOAux.FieldByName('nome').AsString:= item.Items[i].Caption;
DM2.ADOAux.FieldByName('num_processo').AsString:= item.Items[i].SubItems[0];
DM2.ADOAux.FieldByName('obs').AsString:= item.Items[i].SubItems[1];
DM2.ADOAux.ExecSQL;
end;
end;
item.Clear;
Edit1.SetFocus;
end;Gostei + 0
04/03/2013
Bruno Leandro
for inteiro voce pode utilizar assim IntToStr(DM2.ADOQrynum_processo.Value)
DM2.ADOAux.SQL.Add('Update tab set nome= :ParamNomeListview, obs= :ParamObsListview where num_processo= :ParamNumProc_listview');
DM2.ADOAux.Parameters.ParamByName('ParamNomeListview').Value:=(item.Items[i].Caption);
DM2.ADOAux.Parameters.ParamByName('ParamNumProc_listview').Value:=(item.Items[i].SubItems[0]);
DM2.ADOAux.Parameters.ParamByName('ParamObsListview').Value:=( DM2.ADOQrynum_processo.Value+' ;'+item.Items[i].SubItems[1]);
DM2.ADOAux.ExecSQL;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)