Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.10.2009, 14:36
TheZvir TheZvir вне форума
Прохожий
 
Регистрация: 01.10.2009
Сообщения: 2
Репутация: 10
По умолчанию Добавление файла в БД фиреберд в БЛОБ поле

Здравствуйте я начинающий программист и столкнулся с проблемой, как в бд добавить файл

вот мой юнит

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, IBDatabase, IBCustomDataSet, IBTable, IBSQLMonitor, Grids, DBGrids,
  ExtCtrls, DBCtrls, IBQuery, StdCtrls;

type
  TForm1 = class(TForm)
    IBDatabase1: TIBDatabase;
    IBTable1: TIBTable;
    IBTransaction1: TIBTransaction;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    IBQuery1: TIBQuery;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button2: TButton;
    IBQuery2: TIBQuery;
    OpenDialog1: TOpenDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  NN ,P1 , P2 :string;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin
IBQuery1.Active:=False;
{NN:=Edit1.Text;
P1:=Edit2.Text;
P2:=Edit3.Text;}
Try
strtoint(Edit1.Text);
strtoint(Edit3.Text);
except
MessageDlg('Error !!!' , mtError ,[mbYes], 0);
exit;
end;
IBQuery1.Sql.Text:='insert into QWERTY (NN,POLE1,POLE2,APP) VALUES(:NN,:P1,:P2,:APP)';
IBQuery1.Params[0].asInteger:=strtoint(Edit1.Text);
IBQuery1.Params[1].asstring:=Edit2.Text;
IBQuery1.Params[2].asInteger:=strtoint(Edit3.Text);
IBQuery1.Params[3].
IBQuery1.ExecSQL;
IBTable1.Active:=False;
IBQuery1.Sql.Text:='select*from QWERTY ORDER BY SP1';
IBQuery1.Active:=True;
IBQuery1.Active:=False;
IBTable1.Active:=True;


end;

procedure TForm1.FormCreate(Sender: TObject);

begin
Label1.Caption:='NN';
Label2.Caption:='Pole 1';
Label3.Caption:='Pole 2';
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
Button1.Caption:='Äîáàâèòü';
Button2.Caption:='Exit';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;

end.

с текстом я то разобрался сортировку зделал по СП1 который в свою очередь через айбиЕксперт стоит тригер

Код:
AS
BEGIN
  IF (NEW.SP1 IS NULL) THEN
    NEW.SP1 = GEN_ID(GEN_QWERTY_ID,1);
END

а вот как файл туда вставить не знаю и желательно помогите как уже вставленный файл из БД взять (я с файлами вообще неразу не работал только приметивное Input и output )

я рылся в нете там нашол максимум отсылки на то что надо както с файлом через память работать

а как к IBQuery1.Params[3].asBlob зделать правильно не знаю добавить хочу екзешник
работаю на Делфи5ть а бд на локальной машыне
Ответить с цитированием
  #2  
Старый 01.10.2009, 16:03
Аватар для TOJluK
TOJluK TOJluK вне форума
Местный
 
Регистрация: 25.02.2009
Адрес: Минск
Сообщения: 551
Версия Delphi: 2007
Репутация: 110
По умолчанию

вставить
Код:
 IBQ.sql.text:='update Table_name set Field_name = :b'; // или insert вместо update
 IBQ.params.parseSQL(IBQ.sql.text, true);
 IBQ.params.parambyname('b').LoadFromFile('Path to filw',ftBlob);
 IBQ.execsql;
 IBT.Commit;

выгрузить (выдрал из своего кода- разберешься):
Код:
var s:Tstream;
 FileS:TFileStream;
begin
try
 IBQ_Blob.Open;
 s:=IBQ_Blob.CreateBlobStream(IBQ_Blob.FieldByName(Field_name), bmRead);
 if FileExists('Docs\'+File_name) then
  FileS:=TFileStream.Create('Docs\'+File_name,fmOpenWrite)
  else
   FileS:=TFileStream.Create('Docs\'+File_name,fmCreate);
 FileS.CopyFrom(s,s.Size);
 s.Free;
 FileS.Free;
 IBQ_Blob.Close;
 IBT_Blob.Commit;
  except
  ShowMessage('Ошибка при открытии шаблона '+File_name);
  end;
а, забыл при выгрузке в query sql будет:
Код:
select *  from Table_name

Последний раз редактировалось TOJluK, 01.10.2009 в 16:09.
Ответить с цитированием
  #3  
Старый 05.10.2009, 11:17
TheZvir TheZvir вне форума
Прохожий
 
Регистрация: 01.10.2009
Сообщения: 2
Репутация: 10
По умолчанию

Все спасибо разобрался .
С извлечением сложно правда было.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter