数据表达问题(0分)

  • 主题发起人 主题发起人 babyrun
  • 开始时间 开始时间
B

babyrun

Unregistered / Unconfirmed
GUEST, unregistred user!
Sql:= Format('insert into ebank(zone,brno,jydm,jydate,amount)'+'values (''%s'',''%s'',''%s'',''%t'',''%s'')',[addno,netno,code,sdate,money]);
在向数据库中写数据的时候,values表达为%s意味着输入的数据为文本数据。可是现在我想向数据库中写入的数据形式分别为数字、日期、货币型。那么values中应该如何表达?
 
数字 %d
日期 没有合适的只好先格式化日期
货币 用%.2f
另外sql中数字不需要引号。
Sql:= Format('insert into ebank(jydm//数字,jydate//日期,amount//货币) values (%d,''%s'',%.2f)',[123,FormatDateTime('YYYY-MM-DD',date),123.456]);
 
我在数据库表中设定的jydate字段是日期形式的,可是values中的描述是%s型的,这样的描述似乎不大对应啊?
 
var
d : Tdatetime;
begin
try
d := strToDate(edit1.text);
except
showmessage('错误的日期');
edit1.SetFocus;//调试时会有错误框弹出,实际运行时如果出错会出现showmessage
exit
end;

或者用(delphi 6.0 up)
strToDateDef(Edit1.Text,Date)
strtodatedef函数如果出现转换错误,会用第二个参数代替。
 
但是你的sql是string呀。
 
你的意思是说,将date转换成了日期形式的字符串,从而同数据库ebank表中的jydate字段对应?可我是将ebank表中的jydate字段设成了日期/时间形式,按照您说的将date转换成日期形式,但是它是字符串型的,不是如数据库ebank表中的日期/时间形式的啊!这样不会引起冲突么?
 
sql是字符串形式提交给数据引擎,由数据引擎来分析sql的数据
比如我们写的pas文件也是字符串形式的,只不过由编译器分析后
被解释成各种元素。
对于datatime类型字段提交sql,各种数据库有不同的格式
mssql中用引号,access中用#2001-1-1#形式。
需要针对不同数据库
使用不同的日期形式,
但提交的sql中一定是字符串,
只不过字符串的形式各不相同。
 
我想判断edit中输入的日期是否正确,我设定日期的标准形式为20030710形式的,如果不符合这种形式则报错退出。我是着用您的方法解决,不妥。该如何处理?
 
你可以按你的格式转换成日期类型,用Param的形式提交给SQL。
Params[0].AsDateTime := MyDate;
 
var
s : string;
d : TDateTime;
s := Format('%s-%s-%s',[Copy(Edit1.Text,1,4),Copy(Edit1.Text,5,2),Copy(Edit1.Text,7,2)]);
try
d := StrToDate(s);
except
showmessage('错误的日期');
edit1.SetFocus;
exit
end;
 
接受答案了.
 
后退
顶部