Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- procedure TForm1.FormCreate(Sender: TObject);
- var
- qrySql: TIBSQL = nil;//uses IBSQL
- mds: TMemDataset = nil;//uses memds, db
- begin
- //DBConn - TIBDatabase
- //TransRead - TIBTransaction
- //должны быть определены перед началом следующего кода
- qrySql:= TIBSQL.Create(Application);//создаем некешериующий датасет
- qrySql.Database:= DBConn;
- qrySql.Transaction:= TransRead;
- mds:= TMemDataset.Create(Application);
- try
- with mds do
- begin
- Clear(True);
- FieldDefs.Add('ID', ftInteger);
- FieldDefs.Add('FULLNAME', ftString,100);//длина поля должна соответствовать длине поля в БД
- CreateTable;
- end;
- try
- TransRead.StartTransaction;//запускаем транзакцию
- qrySql.SQL.Text:= 'select ID, FULLNAME from USERS_DB where DEL = 0 ';
- qrySql.ExecQuery;
- if qrySql.Eof then Exit;
- mds.Active:= True;
- //заполняем датасет в памяти, последовательно вытаскивая по 1-му значению из БД
- while not qrySql.Eof do
- begin
- mds.AppendRecord([
- qrySql.FieldByName('ID').AsInteger,
- Trim(qrySql.FieldByName('FULLNAME').AsString),
- ]);
- qrySql.Next;
- end;
- {****** вот тут работаем с записями мемори датасета *****}
- TransRead.Commit;//коммитим транзакцию --> qrySql сбросит весь кеш записей (будет пуст)
- except
- on E: EIBError do//uses IB
- begin
- TransRead.Rollback;//откатываем в случае ошибки
- Application.MessageBox(PChar(E.Message),'Error', MB_ICONERROR);//uses LCLType
- end;
- end;
- finally
- mds.Free;
- qrySql.Free;
- end;
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement