| 
| 
 | Вопрос # 2 983/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Как с помощью ADO записать в поле BLOB таблицы бд Access поток и потом считать? Код в приложении вызывает ошибку. Спасибо!
 Приложение:Переключить в обычный режим var  ms: TMemoryStream;  i: integer;  str: string[255];begin  ms:= TMemoryStream.Create;  i:= StrToInt(Edit1.text);  str := Edit2.text;  ms.Write(i,SizeOf(integer));  ms.Write(str, 255);  AdoTable.Edit;  TAdoBlobStream(AdoTable.Recordset.Fields[1]).LoadFromStream(ms);  AdoTable.Post;  ms.Free;end; 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 11 июля 2009, 14:53
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 11 июля 2009, 16:16; участников в обсуждении: 1. 
|   | Зозуля А. А. (статус: Посетитель), 11 июля 2009, 16:16 [#1]:Ошибку вызывает, скорее всего, метод POST (попробуйте эксперементально, просто я когда то давно с этим сталкивался). Поиск описания кода приведет Вас к "C++ Exception". Вот Вам "на скору руку состряпаная програмка", которая умеет записывать данные в таблицу БЕЗ ошибок и любого формата. Думаю, как потом считать их по аналогии разберетесь. Для работы создана в аксесе бд "test" с 1 таблицей "Example" с 3 поялми N, Time, Num. НЕ ЗАБУДЬТЕ исправить секцию "program", как показано ниже:
 
 program Project1;
 
 uses
 Forms,
 ComObj,
 Unit1 in '..\Unit1.pas' {Form1};
 
 {$R *.res}
 
 begin
 CoInitFlags := 0;
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
 end.
 
 Далее сама программа. Создайте пустую форму, разместите на ней только 1 кнопку и все.
 
 unit Unit1;
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls, DBTables;
 type
 TPotok = class(TThread)
 private
 protected
 procedure Execute; override;
 public
 constructor Create;
 end;
 
 type
 TForm1 = class(TForm)
 Button1: TButton;
 procedure Button1Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
 
 
 var
 Form1: TForm1;
 
 implementation
 
 {$R *.dfm}
 var
 Potoks: TPotok;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 Potoks:=TPotok.Create;
 end;
 
 constructor TPotok.Create;
 begin
 inherited Create(False);
 FreeOnTerminate:=True;
 end;
 
 procedure TPotok.Execute;
 var
 Q:TADOQuery;
 begin
 Q:=TADOQuery.Create(Application);
 Q.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False;Jet OLEDB
  atabase Password=""'; Q.Close;
 Q.SQL.Clear;
 Q.SQL.Add('INSERT INTO Example (N,Time,Num) VALUES ("1","'+DateTimeToStr(Now)+'","3")');
 Q.ExecSQL;
 Q.Free;
 end;
 
 end.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |