update
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
Posts
01/03/2013
Vander Ferraz
Tente colocar as atualizações em outra query.
04/03/2013
Maurício Curi
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;
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;
Clique aqui para fazer login e interagir na Comunidade :)