在delphi编数据库时,如果要添加一条记录,当其中 有一个字段是时间型的,怎么样用程序来表示:当所输入的时间格式不正确时,给出出错对话框? (10分)

  • 主题发起人 主题发起人 ★蓝天★
  • 开始时间 开始时间

★蓝天★

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi编数据库时,如果要添加一条记录,当其中 有一个字段是时间型的,
怎么样用程序来表示:当所输入的时间格式不正确时,给出出错对话框?
 
with query do
begin
close;
sql.clear;
sql.add('insert into table1 (date1,astr) values (:date1,:astr);
params[0].asdate:='2002-03-14';
params[1].asstring:='test';
prapare;
execsql;
end;
 
try
Table1.Append
Table1.FieldByName('Field1').asString:=...
Table1.FieldByName('Field1').asDateTime:=StrToDateTime(输入内容);
....
Table1.post;
except
这里可以捕捉错误,看是数据库的,那么提示数据库错误
如果是转换错误,提示转换错误、
end;
 
同意楼上的,建议在库中最好存为字符型,输入和输出时转换一下类型(尤其是ORACLE中,深受其害)!
 
能不能请各位说得具体一点,比方 讲,我现在有 个Tedit1,这里面必须得写一个日期型
的数据,当运行程序时,怎么来判断edit1中是不是写了正确的日期型数据。
 
应该在程序级就检查日期的合法性,而不是到数据库级
这样:
try
strtodate(edit1.text);
except
messagebox(handle,'日期转换错误','错误',mb_iconerror);
end;

 
直接使用delphi的日期标准控件不就解决问题了
 
是maskedit吧,错误信息是英文的,
 
設此時間字段為date1,表控件用adoquery1,
在adoquery1的字段date1的onsettext事件中寫代碼即可,如:
Procedure adoquery1date1settext(sender:tfield; const Text: String);
Begin
try
strtodatetime(text);
sender.asstring:=text;
except
application.messagebox('日期輸入错误,請重新輸入','提示,mb_ok);
abort;
end;
end;

若沒發現此事件,在adoquery1中建永久字段后可找到。
 
同意-->直接使用delphi的日期标准控件不就解决问题了
我这里有一个,应该可以解决你的问题,我用过,很好的。
需要的话,可以Email:Radian@sohu.com
 
我在edit1中写上1998,使用了下面 一段程序,
try
StrToDateTime(Edit1.Text);
except
raise Exception.Create(/'不是日期型/');
end;
却出现警告对话框,内容如下
project project1.exe raised exception class EConvertError with message''1998'is not valid date and time',process stopped.Use step or run to continue.
请问,该怎么解决?
 
你在编译期间是会谈出上面的错误框,可在实际的运行时(只运行exe文件)
你将只看到自己需要的错误信息
 
接受答案了.
 
后退
顶部