Нужно в Blob-поле сохранить doc

drug_tvoi_gruzovik
Дата: 13.05.2011 02:22:28
Здравствуйте!
Нужно занести в базу blob объект (doc). Вот так я пытаюсь это сделать, но здесь ошибка (сильно не ругайте):
procedure TmainForm.btnrep1Click(Sender: TObject);
var w:TBlobType;
begin
OpenDialog1.Execute;
lblrep1.Caption:=OpenDialog1.FileName;

fdm.Q1.SQL.Clear;
fdm.Q1.SQL.Add('insert into reports(rep,idstud,idlab) values (');
fdm.Q1.SQL.Add(':w'+','+enter.idUser+','+'1'+')');

fdm.Q1.ParamByName('w').DataType:=ftBlob;
fdm.Q1.ParamByName('w').ParamType:=ptInput;
fdm.Q1.ParamByName('w').LoadFromFile(lblrep1.Caption,w);
try
	fdm.Q1.ExecSQL;
except
	ShowMessage('Ошибка');
end;
end;

Может есть какие ссылки, посмотреть примеры.

Благодарю всех за внимание и какую-либо помощь!
drug_tvoi_gruzovik
Дата: 13.05.2011 03:42:43
Переписал функцию, в базу объект записывает (правда файл должен быть только в bmp О_о)

procedure TmainForm.btnrep1Click(Sender: TObject);
var w:TBlobType;
begin
OpenDialog1.Execute;
lblrep1.Caption:=OpenDialog1.FileName;
if fdm.TableReports <> nil then
begin
fdm.TableReports.Insert;
fdm.TableReports.FieldByName('id').AsString:='1';// этой строки не должно быть
fdm.TableReports.FieldByName('idstud').AsString:=enter.idUser;
fdm.TableReports.FieldByName('idlab').AsString:='1';
TBlobField(fdm.TableReports.FieldByName('rep')).LoadFromFile(lblrep1.Caption);
fdm.TableReports.Post;
end;
end;

Появилась новая проблема, не работает триггер - автоинкрементное поле. Когда делаю sql - запросы (update, insert) то ID автоматически изменяется. Вот таким образом Insert-Post почему-то не работает.

вот сам код таблицы
CREATE TABLE "REPORT" 
(
  "ID"	INTEGER NOT NULL,
  "IDSTUD"	INTEGER,
  "IDLAB"	INTEGER,
  "REP"	BLOB SUB_TYPE 0 SEGMENT SIZE 80,
 PRIMARY KEY ("ID")
);
SET TERM ^ ;


CREATE TRIGGER "TR_8457" FOR "REPORT" 
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(Gen_8457, 1);
END
 ^

COMMIT WORK ^
SET TERM ;^

Господа, как мне все-таки стоит поступить в сей ситуации?
Премного благодарю!
Ramin Hashimzade
Дата: 13.05.2011 09:59:51
3 вопроса:

1 СУБД какое?
2 Как это понять "(правда файл должен быть только в bmp О_о)" ???
3 Зачем менять ID при update, автоинкрементальное поле означается то взять новый ИД для новой записи.
Ramin Hashimzade
Дата: 13.05.2011 10:01:44
может тебя надо:

var
 bf: TBlobField;
begin
 OraQuery1.Close;
 OraQuery1.SQL.Text:='insert into my_temp(id, f_file) values(2, :p)';
 OraQuery1.Prepare;
 OraQuery1.ParamByName('p').LoadFromFile(Edit1.Text, ftBlob);
 OraQuery1.Execute;
end;

???
drug_tvoi_gruzovik
Дата: 14.05.2011 03:11:43
Ramin
спасибо, помогло!!!