在做一个酒店系统时遇到这样的问题高手帮忙啊
project hotel.exe rsised exception class eoleexception with message'语法错误(操做符丢失)在查询表达式'*from 订房数据历史表 where 订房序号=?'中 process stopped.use step or run to continue.
代码如下:
//退订摸块
unit cancelbook;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, Buttons, DB, ADODB, DBTables;type
TcancelbookForm = class(TForm)
DBGrid1: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
procedure BitBtn2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
cancelbookForm: TcancelbookForm;implementation
uses main,cancelrpt;
{$R *.dfm}procedure TcancelbookForm.BitBtn2Click(Sender: TObject);
begin
adodataset1.Close;
close;
end;procedure TcancelbookForm.FormActivate(Sender: TObject);
begin
dbgrid1.DataSource:=datasource1;
dbgrid1.ReadOnly:=true;
datasource1.DataSet:=adodataset1;
adodataset1.Connection:=adoconnection1;
adodataset1.CommandText:='select * from 订房数据历史表';
adodataset1.Open;
edit1.Text:='0';
edit2.text:='';
end;procedure TcancelbookForm.BitBtn1Click(Sender: TObject);
var
adotable1:TAdoTable;
adodataset2:TAdodataset;
begin
adotable1:=TAdoTable.Create(self);
adotable1.Connection:=adoconnection1;
adodataset2:=TAdodataset.Create(self);
adodataset2.Connection:=adoconnection1;
adodataset2.Parameters.clear;
adodataset2.Parameters.AddParameter;
adodataset2.Parameters[0].name:='s0';
adodataset2.Parameters[0].DataType:=ftstring;
adodataset2.Parameters[0].Size:=12;
adodataset2.Parameters[0].Direction:=pdinput;
adodataset2.Parameters[0].Value:=adodataset1.FieldByName('订房序号').AsString;
adodataset2.CommandText:='select * form 订房数据历史表 where 订房序号=:s0';
adodataset2.open;
adodataset2.fieldbyname('结账日期').asdatetime:=now;
adodataset2.FieldByName('应收金额').Ascurrency:=StrToInt(edit1.text);
adodataset2.fieldbyname('实收金额').ascurrency:=StrToInt(edit1.text)-adodataset1.FieldByName('押金数').Ascurrency;
adodataset2.FieldByName('说明').AsString:=edit2.text;
adodataset2.FieldByName('操作员').AsString:=username;
adodataset2.post;
adodataset2.Close;
adodataset2.Parameters.Clear;
adodataset2.Parameters.add;
adodataset2.Parameters[0].name:='s0';
adodataset2.Parameters[0].DataType:=ftstring;
adodataset2.Parameters[0].Size:=6;
adodataset2.Parameters[0].Value:=adodataset1.fieldbyname('客房编号').asstring;;
adodataset2.CommandText:='select * from 资金清算表 where 客房编号=:s0';
adodataset2.Active:=true;
adodataset2.Delete;
adodataset2.close;
adodataset2.CommandText:='select * from 客房管理 where 客房编号=:s0';
adodataset2.Active:=true;
adodataset2.Edit;
adodataset2.FieldByName('使用标志').asboolean:=false;
adodataset2.post;
adodataset2.close;
adotable1.TableName:='资金清算历史表';
adotable1.open;
adotable1.append;
adotable1.edit;
adotable1.FieldByName('订房编号').asstring:=adodataset1.FieldByName('订房编号').asstring;
adotable1.FieldByName('客房编号').asstring:=adodataset1.FieldByName('客房编号').asstring;
adotable1.FieldByName('客人名称').asstring:=adodataset1.FieldByName('客人名称').asstring;
adotable1.FieldByName('证件编号').asstring:=adodataset1.FieldByName('证件编号').asstring;
adotable1.FieldByName('押金').AsCurrency:=Strtoint(edit1.text)-adodataset1.FieldByName('押金').AsCurrency;
adotable1.FieldByName('预计每天费用').ascurrency:=adodataset1.FieldByName('客房单价').ascurrency;
adotable1.FieldByName('预计天数').asinteger:=adodataset1.FieldByName('预计天数').asinteger;
adotable1.FieldByName('事由').asstring:='退订客房,退还住房押金,收取手续费';
adotable1.fieldbyname('订房日期').asdatetime:=now;
adotable1.fieldbyname('操作人').asstring:=username;
adotable1.post;
adotable1.close;
adotable1.TableName:='当天收支报表';
adotable1.open;
adotable1.append;
adotable1.edit;
adotable1.FieldByName('订房编号').asstring:=adodataset1.FieldByName('订房编号').asstring;
adotable1.FieldByName('客房编号').asstring:=adodataset1.FieldByName('客房编号').asstring;
adotable1.FieldByName('客人名称').asstring:=adodataset1.FieldByName('客人名称').asstring;
adotable1.FieldByName('证件编号').asstring:=adodataset1.FieldByName('证件编号').asstring;
adotable1.FieldByName('实收金额').AsCurrency:=Strtoint(edit1.text)-adodataset1.FieldByName('押金').AsCurrency;
adotable1.FieldByName('说明').asstring:='退还住房押金,收取手续费';
adotable1.fieldbyname('日期').asdatetime:=now;
adotable1.fieldbyname('操作人').asstring:=username;
adotable1.post;
adotable1.close;
adotable1.TableName:='收支历史报表';
adotable1.open;
adotable1.append;
adotable1.edit;
adotable1.FieldByName('订房编号').asstring:=adodataset1.FieldByName('订房编号').asstring;
adotable1.FieldByName('客房编号').asstring:=adodataset1.FieldByName('客房编号').asstring;
adotable1.FieldByName('客人名称').asstring:=adodataset1.FieldByName('客人名称').asstring;
adotable1.FieldByName('证件编号').asstring:=adodataset1.FieldByName('证件编号').asstring;
adotable1.FieldByName('实收金额').AsCurrency:=Strtoint(edit1.text)-adodataset1.FieldByName('押金').AsCurrency;
adotable1.FieldByName('说明').asstring:='退还住房押金,收取手续费';
adotable1.fieldbyname('日期').asdatetime:=now;
adotable1.fieldbyname('操作人').asstring:=username;
adotable1.post;
adotable1.close;
cancelrptform.QRLabel3.caption:=adodataset1.FieldByName('订房编号').asstring;
cancelrptform.QRLabel5.Caption:=adodataset1.FieldByName('客房编号').asstring;
cancelrptform.QRLabel7.Caption:=adodataset1.FieldByName('客人名称').asstring;
cancelrptform.QRLabel9.Caption:=adodataset1.FieldByName('证件编号').asstring;
cancelrptform.QRLabel11.Caption:=inttostr(adodataset1.FieldByName('押金').Asinteger);
cancelrptform.QRLabel13.Caption:=edit1.text;
cancelrptform.QRLabel15.Caption:=inttostr(Strtoint(edit1.text)-adodataset1.FieldByName('押金').Asinteger);
cancelrptform.QRLabel17.Caption:='退还住房押金,收取手续费';
cancelrptform.QRLabel19.Caption:=username;
cancelrptform.QRLabel21.Caption:=datetimetostr(date);
while application.MessageBox('是否打印订房单(Yes/No)','提示信息',mb_yesno)=IDYes do
cancelrptform.QuickRep1.print;
adodataset1.Delete;
end;end.
project hotel.exe rsised exception class eoleexception with message'语法错误(操做符丢失)在查询表达式'*from 订房数据历史表 where 订房序号=?'中 process stopped.use step or run to continue.
代码如下:
//退订摸块
unit cancelbook;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, Buttons, DB, ADODB, DBTables;type
TcancelbookForm = class(TForm)
DBGrid1: TDBGrid;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
DataSource1: TDataSource;
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
procedure BitBtn2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
cancelbookForm: TcancelbookForm;implementation
uses main,cancelrpt;
{$R *.dfm}procedure TcancelbookForm.BitBtn2Click(Sender: TObject);
begin
adodataset1.Close;
close;
end;procedure TcancelbookForm.FormActivate(Sender: TObject);
begin
dbgrid1.DataSource:=datasource1;
dbgrid1.ReadOnly:=true;
datasource1.DataSet:=adodataset1;
adodataset1.Connection:=adoconnection1;
adodataset1.CommandText:='select * from 订房数据历史表';
adodataset1.Open;
edit1.Text:='0';
edit2.text:='';
end;procedure TcancelbookForm.BitBtn1Click(Sender: TObject);
var
adotable1:TAdoTable;
adodataset2:TAdodataset;
begin
adotable1:=TAdoTable.Create(self);
adotable1.Connection:=adoconnection1;
adodataset2:=TAdodataset.Create(self);
adodataset2.Connection:=adoconnection1;
adodataset2.Parameters.clear;
adodataset2.Parameters.AddParameter;
adodataset2.Parameters[0].name:='s0';
adodataset2.Parameters[0].DataType:=ftstring;
adodataset2.Parameters[0].Size:=12;
adodataset2.Parameters[0].Direction:=pdinput;
adodataset2.Parameters[0].Value:=adodataset1.FieldByName('订房序号').AsString;
adodataset2.CommandText:='select * form 订房数据历史表 where 订房序号=:s0';
adodataset2.open;
adodataset2.fieldbyname('结账日期').asdatetime:=now;
adodataset2.FieldByName('应收金额').Ascurrency:=StrToInt(edit1.text);
adodataset2.fieldbyname('实收金额').ascurrency:=StrToInt(edit1.text)-adodataset1.FieldByName('押金数').Ascurrency;
adodataset2.FieldByName('说明').AsString:=edit2.text;
adodataset2.FieldByName('操作员').AsString:=username;
adodataset2.post;
adodataset2.Close;
adodataset2.Parameters.Clear;
adodataset2.Parameters.add;
adodataset2.Parameters[0].name:='s0';
adodataset2.Parameters[0].DataType:=ftstring;
adodataset2.Parameters[0].Size:=6;
adodataset2.Parameters[0].Value:=adodataset1.fieldbyname('客房编号').asstring;;
adodataset2.CommandText:='select * from 资金清算表 where 客房编号=:s0';
adodataset2.Active:=true;
adodataset2.Delete;
adodataset2.close;
adodataset2.CommandText:='select * from 客房管理 where 客房编号=:s0';
adodataset2.Active:=true;
adodataset2.Edit;
adodataset2.FieldByName('使用标志').asboolean:=false;
adodataset2.post;
adodataset2.close;
adotable1.TableName:='资金清算历史表';
adotable1.open;
adotable1.append;
adotable1.edit;
adotable1.FieldByName('订房编号').asstring:=adodataset1.FieldByName('订房编号').asstring;
adotable1.FieldByName('客房编号').asstring:=adodataset1.FieldByName('客房编号').asstring;
adotable1.FieldByName('客人名称').asstring:=adodataset1.FieldByName('客人名称').asstring;
adotable1.FieldByName('证件编号').asstring:=adodataset1.FieldByName('证件编号').asstring;
adotable1.FieldByName('押金').AsCurrency:=Strtoint(edit1.text)-adodataset1.FieldByName('押金').AsCurrency;
adotable1.FieldByName('预计每天费用').ascurrency:=adodataset1.FieldByName('客房单价').ascurrency;
adotable1.FieldByName('预计天数').asinteger:=adodataset1.FieldByName('预计天数').asinteger;
adotable1.FieldByName('事由').asstring:='退订客房,退还住房押金,收取手续费';
adotable1.fieldbyname('订房日期').asdatetime:=now;
adotable1.fieldbyname('操作人').asstring:=username;
adotable1.post;
adotable1.close;
adotable1.TableName:='当天收支报表';
adotable1.open;
adotable1.append;
adotable1.edit;
adotable1.FieldByName('订房编号').asstring:=adodataset1.FieldByName('订房编号').asstring;
adotable1.FieldByName('客房编号').asstring:=adodataset1.FieldByName('客房编号').asstring;
adotable1.FieldByName('客人名称').asstring:=adodataset1.FieldByName('客人名称').asstring;
adotable1.FieldByName('证件编号').asstring:=adodataset1.FieldByName('证件编号').asstring;
adotable1.FieldByName('实收金额').AsCurrency:=Strtoint(edit1.text)-adodataset1.FieldByName('押金').AsCurrency;
adotable1.FieldByName('说明').asstring:='退还住房押金,收取手续费';
adotable1.fieldbyname('日期').asdatetime:=now;
adotable1.fieldbyname('操作人').asstring:=username;
adotable1.post;
adotable1.close;
adotable1.TableName:='收支历史报表';
adotable1.open;
adotable1.append;
adotable1.edit;
adotable1.FieldByName('订房编号').asstring:=adodataset1.FieldByName('订房编号').asstring;
adotable1.FieldByName('客房编号').asstring:=adodataset1.FieldByName('客房编号').asstring;
adotable1.FieldByName('客人名称').asstring:=adodataset1.FieldByName('客人名称').asstring;
adotable1.FieldByName('证件编号').asstring:=adodataset1.FieldByName('证件编号').asstring;
adotable1.FieldByName('实收金额').AsCurrency:=Strtoint(edit1.text)-adodataset1.FieldByName('押金').AsCurrency;
adotable1.FieldByName('说明').asstring:='退还住房押金,收取手续费';
adotable1.fieldbyname('日期').asdatetime:=now;
adotable1.fieldbyname('操作人').asstring:=username;
adotable1.post;
adotable1.close;
cancelrptform.QRLabel3.caption:=adodataset1.FieldByName('订房编号').asstring;
cancelrptform.QRLabel5.Caption:=adodataset1.FieldByName('客房编号').asstring;
cancelrptform.QRLabel7.Caption:=adodataset1.FieldByName('客人名称').asstring;
cancelrptform.QRLabel9.Caption:=adodataset1.FieldByName('证件编号').asstring;
cancelrptform.QRLabel11.Caption:=inttostr(adodataset1.FieldByName('押金').Asinteger);
cancelrptform.QRLabel13.Caption:=edit1.text;
cancelrptform.QRLabel15.Caption:=inttostr(Strtoint(edit1.text)-adodataset1.FieldByName('押金').Asinteger);
cancelrptform.QRLabel17.Caption:='退还住房押金,收取手续费';
cancelrptform.QRLabel19.Caption:=username;
cancelrptform.QRLabel21.Caption:=datetimetostr(date);
while application.MessageBox('是否打印订房单(Yes/No)','提示信息',mb_yesno)=IDYes do
cancelrptform.QuickRep1.print;
adodataset1.Delete;
end;end.
写错了
应该是 from
并且参数也没有得到赋值
gangjh(阿飞¡¹¡¹¡¹¡¹¡¹¡¹¡¹¡¹¡¹¡¹)
着个呀袄怎么弄啊
我是第一次弄这个东西啊
谢谢上面两位高人的指点
改好之后又出现这个错误提示
使用if adotable1.State in [dsEdit,dsInsert] then
判断一下。
adotable1.open;
adotable1.append;
adotable1.edit;//增加了就不能edit,注意adotable1的state状态。