Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как создать SP с помощью IBX компонентов (Delphi 7) / 9 сообщений из 9, страница 1 из 1
14.07.2004, 12:00:19
    #32603450
IgorK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
Приветствую!
Подскажите как сделать такое - нужно в рантайме создать SP в базе Interbase. Используются IBX компоненты. TIBQuery и TIBDataSet на
Код: plaintext
CREATE PROCEDURE ... 
ругаются, хотя тот же текст через IBExpert отлично создает процедуру, но он вроде FIBPlus пользует.
...
Рейтинг: 0 / 0
14.07.2004, 12:07:58
    #32603470
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
Можно через TIBQuery , только не вызывай метод Open , а ExecSQL .
И свойство ParamCheck выставь в false .
...
Рейтинг: 0 / 0
14.07.2004, 12:18:25
    #32603506
IgorK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
Так и пробую, только когда доходит до 'as' кричит, что все не так!
...
Рейтинг: 0 / 0
14.07.2004, 12:19:43
    #32603511
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
Прям так и кричит?
...
Рейтинг: 0 / 0
14.07.2004, 12:26:52
    #32603540
AndriyKo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
IgorKТак и пробую, только когда доходит до 'as' кричит, что все не так!

Ну дык текст процедуры дай, что ли. И описание ошибки тож.
...
Рейтинг: 0 / 0
14.07.2004, 12:36:13
    #32603564
f_w_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
IgorKПриветствую!
Подскажите как сделать такое - нужно в рантайме создать SP в базе Interbase. Используются IBX компоненты. TIBQuery и TIBDataSet на
Код: plaintext
CREATE PROCEDURE ... 
ругаются, хотя тот же текст через IBExpert отлично создает процедуру, но он вроде FIBPlus пользует.
Сдается мне, что DDL операторы надо выполнять через IBSQL.
...
Рейтинг: 0 / 0
14.07.2004, 12:39:27
    #32603577
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
TIBQuery, в сущности - обёртка вокруг TIBSQL.
...
Рейтинг: 0 / 0
15.07.2004, 06:07:22
    #32604998
Klick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
имхо: процедуры в рантайме = не есть гуддд!
процедуры в дизайнтайме = есть гуддд !!!!
:)
...
Рейтинг: 0 / 0
16.07.2004, 15:47:54
    #32608523
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать SP с помощью IBX компонентов (Delphi 7)
Все работает, однако. Delphi 7 (+SP). FireBird 1.5.1 RC3

Вот форма:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
object Form1: TForm1
  Left =  194 
  Top =  106 
  Width =  617 
  Height =  243 
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = - 11 
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch =  96 
  TextHeight =  13 
  object Button1: TButton
    Left =  404 
    Top =  28 
    Width =  101 
    Height =  25 
    Caption = 'Через IBSQL'
    TabOrder =  0 
    OnClick = Button1Click
  end
  object Button2: TButton
    Left =  404 
    Top =  72 
    Width =  101 
    Height =  25 
    Caption = 'Через IBQUERY'
    TabOrder =  1 
    OnClick = Button2Click
  end
  object IBDatabase1: TIBDatabase
    Connected = True
    DatabaseName = 'E:\Wrk\TestIBX\TEST.GDB'
    Params.Strings = (
      'user_name=sysdba'
      'password=masterkey'
      'lc_ctype=WIN1251')
    LoginPrompt = False
    IdleTimer =  0 
    SQLDialect =  3 
    TraceFlags = []
    AllowStreamedConnected = False
    Left =  44 
    Top =  12 
  end
  object IBSQL1: TIBSQL
    Database = IBDatabase1
    ParamCheck = False
    SQL.Strings = (
      'create procedure TEST1'
      'returns (Id integer)'
      ''
      'as'
      'begin'
      '  for  select id from BTABLE '
      '    into :Id do'
      '      suspend;'
      'end;')
    Transaction = IBTransaction1
    Left =  88 
    Top =  12 
  end
  object IBTransaction1: TIBTransaction
    Active = False
    DefaultDatabase = IBDatabase1
    Params.Strings = (
      'read_committed'
      'rec_version'
      'nowait')
    AutoStopAction = saNone
    Left =  156 
    Top =  20 
  end
  object IBQuery1: TIBQuery
    Database = IBDatabase1
    Transaction = IBTransaction1
    BufferChunks =  1000 
    CachedUpdates = False
    ParamCheck = False
    SQL.Strings = (
      'create procedure TEST2'
      'returns (Id integer)'
      ''
      'as'
      'begin'
      '  for  select id from BTABLE '
      '    into :Id do'
      '      suspend;'
      'end;')
    Left =  72 
    Top =  100 
  end
end

Вот текст программы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IBDatabase, IBSQL, DB, StdCtrls, IBCustomDataSet, IBQuery;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IBDatabase1: TIBDatabase;
    IBSQL1: TIBSQL;
    IBTransaction1: TIBTransaction;
    IBQuery1: TIBQuery;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not IBDatabase1.Connected then
  IBDatabase1.Open;
if not IBTransaction1.InTransaction then
  IBTransaction1.StartTransaction;
  try
    IBSQL1.ExecQuery;
    IBTransaction1.Commit
  except
    IBTransaction1.Rollback
  end

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if not IBDatabase1.Connected then
  IBDatabase1.Open;
if not IBTransaction1.InTransaction then
  IBTransaction1.StartTransaction;
  try
    IBQuery1.ExecSQL;
    IBTransaction1.Commit
  except
    IBTransaction1.Rollback
  end
end;

end.

В базе - одна табличка BTABLE, в которой есть поле Id .


Удачи.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как создать SP с помощью IBX компонентов (Delphi 7) / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]