dbExpress访问Interbase(FireBird1.0)出现的错误.

Crazy_ing 2003-05-31 05:10:54
维的Delphi7高效数据库程序设计第二章中的 2.4 使用TSqlStoredProc,同样是FireBird,运行例子,使用scdsRaiseSalary出现 Paramter 'EID' not found
如果改成用spRaiseSalary出现 'dbExpress Error: Operation Not Supported'
这个就不知道为什么了,大家有这个问题吗?
...全文
45 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Crazy_ing 2003-06-05
  • 打赏
  • 举报
回复
我顶
Crazy_ing 2003-06-02
  • 打赏
  • 举报
回复
up
kxy 2003-06-01
  • 打赏
  • 举报
回复
object dmCallStoredProc: TdmCallStoredProc
OldCreateOrder = False
Left = 338
Top = 192
Height = 183
Width = 342
object sconnD7Books: TSQLConnection
ConnectionName = 'D7Books'
DriverName = 'Interbase'
GetDriverFunc = 'getSQLDriverINTERBASE'
LibraryName = 'dbexpint.dll'
LoginPrompt = False
Params.Strings = (
'DriverName=Interbase'
'BlobSize=-1'
'CommitRetain=False'
'Database=e:\interbasedata\D7books.gdb'
'ErrorResourceFile='
'LocaleCode=0000'
'Password=masterkey'
'RoleName=RoleName'
'ServerCharSet='
'SQLDialect=1'
'Interbase TransIsolation=ReadCommited'
'User_Name=sysdba'
'WaitOnLocks=True')
VendorLib = 'GDS32.DLL'
Connected = True
Left = 64
Top = 24
end
object scdsEmployee: TSimpleDataSet
Active = True
Aggregates = <>
Connection = sconnD7Books
DataSet.CommandText = 'select * from EMPLOYEE'
DataSet.MaxBlobSize = -1
DataSet.Params = <>
Params = <>
Left = 200
Top = 32
end
object spRaiseSalary: TSQLStoredProc
MaxBlobSize = -1
Params = <
item
DataType = ftString
Name = 'EID'
ParamType = ptInput
end
item
DataType = ftFloat
Name = 'RPERCENT'
ParamType = ptInput
end>
SQLConnection = sconnD7Books
StoredProcName = 'RAISESALARY'
Left = 64
Top = 104
end
object scdsRaiseSalary: TSimpleDataSet
Aggregates = <>
Connection = sconnD7Books
DataSet.CommandText = 'RAISESALARY'
DataSet.CommandType = ctStoredProc
DataSet.MaxBlobSize = -1
DataSet.Params = <
item
DataType = ftString
Name = 'EID'
ParamType = ptInput
end
item
DataType = ftFloat
Name = 'RPERCENT'
ParamType = ptInput
end>
Params = <>
Left = 200
Top = 104
end
end
kxy 2003-06-01
  • 打赏
  • 举报
回复
unit udmCallStoredProc;

interface

uses
SysUtils, Classes, DBXpress, Provider, SqlExpr, DB, DBClient, DBLocal,
FMTBcd, SimpleDS;

type
TdmCallStoredProc = class(TDataModule)
sconnD7Books: TSQLConnection;
scdsEmployee: TSimpleDataSet;
spRaiseSalary: TSQLStoredProc;
scdsRaiseSalary: TSimpleDataSet;
private
{ Private declarations }
public
{ Public declarations }
end;

var
dmCallStoredProc: TdmCallStoredProc;

implementation

{$R *.xfm}

end.
Crazy_ing 2003-06-01
  • 打赏
  • 举报
回复
object Form1: TForm1
Left = 166
Top = 120
Width = 603
Height = 357
VertScrollBar.Range = 353
HorzScrollBar.Range = 425
ActiveControl = DBGrid1
Caption = 'Form1'
Color = clBackground
Font.CharSet = fcsAnyCharSet
Font.Color = clBlack
Font.Height = 17
Font.Name = #183's2OcuAe'
Font.Pitch = fpVariable
Font.Style = []
Font.Weight = 40
ParentFont = False
OnActivate = FormActivate
PixelsPerInch = 120
TextHeight = 17
TextWidth = 9
object DBNavigator1: TDBNavigator
Left = 0
Top = 0
Width = 603
Height = 33
DataSource = DataSource1
Align = alTop
TabOrder = 0
end
object DBGrid1: TDBGrid
Left = 0
Top = 33
Width = 603
Height = 240
Align = alTop
DataSource = DataSource1
TabOrder = 1
TitleFont.CharSet = fcsAnyCharSet
TitleFont.Color = clBlack
TitleFont.Height = 17
TitleFont.Name = #183's2OcuAe'
TitleFont.Pitch = fpVariable
TitleFont.Style = []
TitleFont.Weight = 40
Columns = <
item
Expanded = False
FieldName = 'EID'
Visible = True
end
item
Expanded = False
FieldName = 'NAME'
Visible = True
end
item
Expanded = False
FieldName = 'SALARY'
Visible = True
end
item
Expanded = False
FieldName = 'PHONE'
Visible = True
end
item
Expanded = False
FieldName = 'ADDRESS'
Visible = True
end
item
Expanded = False
FieldName = 'JOBTITLE'
Visible = True
end
item
Expanded = False
FieldName = 'BIRTHDAY'
Visible = True
end
item
Expanded = False
FieldName = 'HIREDATE'
Visible = True
end>
end
object btnRaiseSalary: TButton
Left = 8
Top = 288
Width = 193
Height = 49
Caption = #21152#34218
TabOrder = 2
OnClick = btnRaiseSalaryClick
end
object cbEID: TComboBox
Left = 216
Top = 296
Width = 209
Height = 25
ItemHeight = 19
TabOrder = 3
OnChange = cbEIDChange
end
object edtPercent: TEdit
Left = 216
Top = 328
Width = 209
Height = 25
TabOrder = 4
Text = '0.05'
end
object DataSource1: TDataSource
DataSet = dmCallStoredProc.scdsEmployee
Left = 40
Top = 8
end
end
Crazy_ing 2003-06-01
  • 打赏
  • 举报
回复
unit fCallStoredProcMain;

interface

uses
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs,
QStdCtrls, QGrids, QDBGrids, QExtCtrls, QDBCtrls, DB;

type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
btnRaiseSalary: TButton;
cbEID: TComboBox;
edtPercent: TEdit;
procedure FormActivate(Sender: TObject);
procedure btnRaiseSalaryClick(Sender: TObject);
procedure cbEIDChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses udmCallStoredProc, SqlExpr, SimpleDS;

{$R *.xfm}

procedure TForm1.FormActivate(Sender: TObject);
var
aBK : TBookMark;
begin
if (cbEID.Items.Count = 0) then
begin
aBK := dmCallStoredProc.scdsEmployee.GetBookmark;
try
cbEID.Items.BeginUpdate;
dmCallStoredProc.scdsEmployee.First;
while not dmCallStoredProc.scdsEmployee.Eof do
begin
cbEID.Items.Add(dmCallStoredProc.scdsEmployee.FieldByName('EID').Value);
dmCallStoredProc.scdsEmployee.Next;
end;
cbEID.ItemIndex := 0;
finally
cbEID.Items.EndUpdate;
dmCallStoredProc.scdsEmployee.GotoBookmark(aBK);
dmCallStoredProc.scdsEmployee.FreeBookMark(aBK);
end;
end;
end;

procedure TForm1.btnRaiseSalaryClick(Sender: TObject);
begin
with dmCallStoredProc.scdsRaiseSalary do
//with dmCallStoredProc.spRaiseSalary do
begin
Params.ParamByName('EID').Value := cbEID.Text;
Params.ParamByName('RPERCENT').Value := StrToFloat(edtPercent.Text);
Execute;
//ExecProc;
end;
end;

procedure TForm1.cbEIDChange(Sender: TObject);
begin
dmCallStoredProc.scdsEmployee.Locate('EID', cbEID.Text, []);
end;

end.
Crazy_ing 2003-06-01
  • 打赏
  • 举报
回复
program PCallStoredProc;

uses
QForms,
fCallStoredProcMain in 'fCallStoredProcMain.pas' {Form1},
udmCallStoredProc in 'udmCallStoredProc.pas' {dmCallStoredProc: TDataModule};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TdmCallStoredProc, dmCallStoredProc);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Acquarius 2003-06-01
  • 打赏
  • 举报
回复
再具体一些。你说的这本书不是大家都买了的。
Crazy_ing 2003-05-31
  • 打赏
  • 举报
回复
up

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧