|
Вопрос # 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.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|