报错为
Project project1.exe raised exception class EConvertError with message '''
is not a vaild integer value.
不知道到底哪里错了
下面是源码
unit Wlgl;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, Mask, DBCtrls,IdGlobal;type
TFormwlgl = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DataSource1: TDataSource;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button5: TButton;
Button6: TButton;
TabSheet2: TTabSheet;
Label3: TLabel;
DateTimePicker1: TDateTimePicker;
DBGrid2: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure ShowModal();
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
public function isMoney(s:string):boolean ;
private
{ Private declarations }
public
{ Public declarations }
end;var
Formwlgl: TFormwlgl;implementation
uses DataBase;
{$R *.dfm}procedure TFormwlgl.FormCreate(Sender: TObject);
begin
ADOTable1.Connection:=DataModule1.ADOConnection1;
ADOTable1.TableName:='LairageState';
end;
procedure TFormwlgl.ShowModal();
begin
ADOTable1.Active:=true;
//ADOTable2.Active:=true;
Formwlgl.Show;
end;
function TFormwlgl.isMoney(s:string):boolean ;
var
i :integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if(isNumeric(s[i])=false)and(s[i]<>'.')then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end ;
procedure TFormwlgl.Button2Click(Sender: TObject);
var
Present: TDateTime;
date1: string;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
try
if (DBEdit1.Text='')or(length(DBEdit1.Text)>10) then
begin
messageDlg('"记录编号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit1;
abort;
end;
if (DBEdit2.Text='')or(length(DBEdit2.Text)>50) then
begin
messageDlg('"入库商品"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit2;
abort;
end;
if (DBEdit4.Text='')or(length(DBEdit4.Text)>50) then
begin
messageDlg('"入库规格"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit4;
abort;
end;
if (DBEdit5.Text='')or(length(DBEdit5.Text)>4) or(isNumeric(DBEdit5.Text)=false)then
begin
messageDlg('"入库量"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit5;
abort;
end;
if (DBEdit6.Text='')or(length(DBEdit6.Text)>10)then
begin
messageDlg('"订购单号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit6;
abort;
end;
if (DBEdit7.Text='')or(length(DBEdit7.Text)>50) then
begin
messageDlg('"经手人"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit7;
abort;
end;
if (DBEdit8.Text='')or(length(DBEdit8.Text)>10) then
begin
messageDlg('"仓库号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit8;
abort;
end;
date1:=DateTostr(DateTimePicker1.Date);
if(date1='')or(length(date1)>50) then
begin
messageDlg(date1,mtWarning,[mbOk],0);
activeControl:=DateTimePicker1;
abort;
end;
// messageDlg(date1,mtWarning,[mbOk],0);
with ADOTable1 do
begin
open;
append;
fieldByName('InID').AsInteger:=strToInt(DBEdit1.Text);
fieldByName('LaiID').AsDateTime:=DateTimePicker1.Date;
fieldByName('LaiDate').Value:=DateToStr(DateTimePicker1.Date);
fieldByName('LaiStandard').AsString:=DBEdit4.Text;
fieldByName('LaiQuantity').AsInteger:=strToInt(DBEdit5.Text);
fieldByName('OrderNum').AsInteger:=strToInt(DBEdit6.Text);
fieldByName('HandleManID').AsString:=DBEdit7.Text;
fieldByName('LairageNum').AsInteger:=strToInt(DBEdit8.Text);
post;
end
except
on ex:EConvertError do
begin
messageDlg('输入有误,请重试!',mtWarning,[mbOk],0);
end;
end;end;procedure TFormwlgl.Button1Click(Sender: TObject);
begin
//messageDlg(DateTostr(DateTimePicker1.Date),mtWarning,[mbOk],0);
//activeControl:=DateTimePicker1;
// abort;
ADOTable1.Cancel;
end;procedure TFormwlgl.Button3Click(Sender: TObject);
begin
ADOTable1.Delete;
end;procedure TFormwlgl.Button5Click(Sender: TObject);
begin
Formwlgl.Close;
end;end.数据库为SQLserver2000
请问怎么解决?
Project project1.exe raised exception class EConvertError with message '''
is not a vaild integer value.
不知道到底哪里错了
下面是源码
unit Wlgl;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, Mask, DBCtrls,IdGlobal;type
TFormwlgl = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
DataSource1: TDataSource;
ADOTable1: TADOTable;
DBGrid1: TDBGrid;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
DBEdit8: TDBEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button5: TButton;
Button6: TButton;
TabSheet2: TTabSheet;
Label3: TLabel;
DateTimePicker1: TDateTimePicker;
DBGrid2: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure ShowModal();
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
public function isMoney(s:string):boolean ;
private
{ Private declarations }
public
{ Public declarations }
end;var
Formwlgl: TFormwlgl;implementation
uses DataBase;
{$R *.dfm}procedure TFormwlgl.FormCreate(Sender: TObject);
begin
ADOTable1.Connection:=DataModule1.ADOConnection1;
ADOTable1.TableName:='LairageState';
end;
procedure TFormwlgl.ShowModal();
begin
ADOTable1.Active:=true;
//ADOTable2.Active:=true;
Formwlgl.Show;
end;
function TFormwlgl.isMoney(s:string):boolean ;
var
i :integer;
begin
i:=1;
if length(s)=0 then
begin
result:=false;
exit;
end;
while i<=length(s) do
begin
if(isNumeric(s[i])=false)and(s[i]<>'.')then
begin
result:=false;
exit;
end;
i:=i+1;
end;
result:=true;
end ;
procedure TFormwlgl.Button2Click(Sender: TObject);
var
Present: TDateTime;
date1: string;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
Present:= Now;
try
if (DBEdit1.Text='')or(length(DBEdit1.Text)>10) then
begin
messageDlg('"记录编号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit1;
abort;
end;
if (DBEdit2.Text='')or(length(DBEdit2.Text)>50) then
begin
messageDlg('"入库商品"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit2;
abort;
end;
if (DBEdit4.Text='')or(length(DBEdit4.Text)>50) then
begin
messageDlg('"入库规格"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit4;
abort;
end;
if (DBEdit5.Text='')or(length(DBEdit5.Text)>4) or(isNumeric(DBEdit5.Text)=false)then
begin
messageDlg('"入库量"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit5;
abort;
end;
if (DBEdit6.Text='')or(length(DBEdit6.Text)>10)then
begin
messageDlg('"订购单号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit6;
abort;
end;
if (DBEdit7.Text='')or(length(DBEdit7.Text)>50) then
begin
messageDlg('"经手人"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit7;
abort;
end;
if (DBEdit8.Text='')or(length(DBEdit8.Text)>10) then
begin
messageDlg('"仓库号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit8;
abort;
end;
date1:=DateTostr(DateTimePicker1.Date);
if(date1='')or(length(date1)>50) then
begin
messageDlg(date1,mtWarning,[mbOk],0);
activeControl:=DateTimePicker1;
abort;
end;
// messageDlg(date1,mtWarning,[mbOk],0);
with ADOTable1 do
begin
open;
append;
fieldByName('InID').AsInteger:=strToInt(DBEdit1.Text);
fieldByName('LaiID').AsDateTime:=DateTimePicker1.Date;
fieldByName('LaiDate').Value:=DateToStr(DateTimePicker1.Date);
fieldByName('LaiStandard').AsString:=DBEdit4.Text;
fieldByName('LaiQuantity').AsInteger:=strToInt(DBEdit5.Text);
fieldByName('OrderNum').AsInteger:=strToInt(DBEdit6.Text);
fieldByName('HandleManID').AsString:=DBEdit7.Text;
fieldByName('LairageNum').AsInteger:=strToInt(DBEdit8.Text);
post;
end
except
on ex:EConvertError do
begin
messageDlg('输入有误,请重试!',mtWarning,[mbOk],0);
end;
end;end;procedure TFormwlgl.Button1Click(Sender: TObject);
begin
//messageDlg(DateTostr(DateTimePicker1.Date),mtWarning,[mbOk],0);
//activeControl:=DateTimePicker1;
// abort;
ADOTable1.Cancel;
end;procedure TFormwlgl.Button3Click(Sender: TObject);
begin
ADOTable1.Delete;
end;procedure TFormwlgl.Button5Click(Sender: TObject);
begin
Formwlgl.Close;
end;end.数据库为SQLserver2000
请问怎么解决?
要保証DBEdit1.Text的内容為数字...
begin
messageDlg('"记录编号"输入错误,请重新输入!',mtWarning,[mbOk],0);
activeControl:=DBEdit1;
abort;
end;
仅这样判断无法保证DBEdit1.Text的内容是数字...
except
ShowMessage('...应为数字!');
DBEdit1.SetFocus;
Exit;
end;
在DBedit的keypress 事件里写上
procedure TForm1.DBEdit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) then
begin
key := #0;
end;
end;