Advertisement
zoltanleo

Untitled

Mar 19th, 2023 (edited)
1,376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.93 KB | None | 0 0
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3.   qrySql: TIBSQL = nil;//uses IBSQL
  4.   mds: TMemDataset = nil;//uses memds, db
  5. begin
  6.   //DBConn - TIBDatabase
  7.   //TransRead - TIBTransaction
  8.   //должны быть определены перед началом следующего кода
  9.  
  10.   qrySql:= TIBSQL.Create(Application);//создаем некешериующий датасет
  11.   qrySql.Database:= DBConn;
  12.   qrySql.Transaction:= TransRead;
  13.  
  14.   mds:= TMemDataset.Create(Application);
  15.  
  16.   try
  17.     with mds do
  18.     begin
  19.       Clear(True);
  20.       FieldDefs.Add('ID', ftInteger);
  21.       FieldDefs.Add('FULLNAME', ftString,100);//длина поля должна соответствовать длине поля в БД
  22.       CreateTable;
  23.     end;
  24.  
  25.     try
  26.       TransRead.StartTransaction;//запускаем транзакцию
  27.       qrySql.SQL.Text:= 'select ID, FULLNAME from USERS_DB where DEL = 0 ';
  28.       qrySql.ExecQuery;
  29.  
  30.       if qrySql.Eof then Exit;
  31.  
  32.       mds.Active:= True;
  33.  
  34.       //заполняем датасет в памяти, последовательно вытаскивая по 1-му значению из БД
  35.       while not qrySql.Eof do
  36.       begin
  37.         mds.AppendRecord([
  38.             qrySql.FieldByName('ID').AsInteger,
  39.             Trim(qrySql.FieldByName('FULLNAME').AsString),
  40.                         ]);
  41.         qrySql.Next;
  42.       end;
  43.  
  44.       {****** вот тут работаем с записями мемори датасета *****}
  45.  
  46.       TransRead.Commit;//коммитим транзакцию --> qrySql сбросит весь кеш записей (будет пуст)
  47.     except
  48.       on E: EIBError do//uses IB
  49.       begin
  50.         TransRead.Rollback;//откатываем в случае ошибки
  51.         Application.MessageBox(PChar(E.Message),'Error', MB_ICONERROR);//uses LCLType
  52.       end;
  53.     end;
  54.   finally
  55.     mds.Free;
  56.     qrySql.Free;
  57.   end;
  58. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement