SQL问题--Update出错!!!时间和字符串转换的问题!!!!
if FormMain.ADOConnection1.Connected then
begin
with FormMain.ADOQuery4 do
begin
if Active then
Close;
SQL.Clear;
SQL.Add('UPDATE Information SET');
SQL.Add('Time=' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + ',');
// SQL.Add('Time=' + DateTimeToStr(Now) + ',');
SQL.Add('CH4Concent=' + FloatToStr(concent) + ',');
SQL.Add('pressure=' + FloatToStr(pressure) + ',');
SQL.Add('tfl=' + FloatToStr(tfl));
SQL.Add('WHERE' +'(CoalID=' + #39 + coalid + #39 + ') And' + '(WorkID=' + #39 + workid + #39 + ') And' + '(DeviceID=' + #39 + deviceid + #39 + ')');
try
ExecSQL;
except
exit;
end;
end;
end;
程序运行后出错:
Project Safty.exe are raised exception class EoleException with message 'Parameter 对象被不正确的定义。提供了不一致或不完整的信息。' Process stopped. Use Step or Run to continue
请各位大虾帮帮忙看看该如何修改!
我用单步调试时,发现是SQL.Add('Time=' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + ',')这句的问题。
问题点数:100、回复次数:16Top
1 楼oklida(JAVA战士)回复于 2003-11-03 23:29:18 得分 5
不如改成 SQL.Add('Time=getdate()')Top
2 楼oklida(JAVA战士)回复于 2003-11-03 23:31:58 得分 10
如果你的数据库是SQL Server 就用getdate()
是ORACLE就用SYSDATETop
3 楼angelface(§<@#$&^%$>§)回复于 2003-11-04 08:37:26 得分 0
upTop
4 楼wrydao(一刀)回复于 2003-11-04 08:39:53 得分 10
用getdate()或用参数:time
SQL.Add(':Time‘);
adoquery1.parameters.parambyname('time').value:=StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));Top
5 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 08:45:05 得分 0
我用的数据库是Access,请问该如何处理?Top
6 楼LKJ99(路是人走的,命是天定的)回复于 2003-11-04 08:57:19 得分 10
我试过,
时间参数加引号:
SQL.Add('Time=' + #39 + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + #39 + ',');
Top
7 楼yurenjf(Never)回复于 2003-11-04 09:04:51 得分 5
同意楼上所言,时间要加引号的Top
8 楼hongjg(阿谷)回复于 2003-11-04 09:07:40 得分 10
值使用参数传递,一般不会有错:
AdoQuery1.Parameters.ParamByName('time').Value:=StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
Top
9 楼hongjg(阿谷)回复于 2003-11-04 09:09:14 得分 10
我上面的错了,应该直接传递数据库中的字段的类型的值。AdoQuery1.Parameters.ParamByName('time').Value := Now;Top
10 楼suwen88(龙的传人)回复于 2003-11-04 09:11:23 得分 5
按楼上说的吧,用参数吧Top
11 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-11-04 09:12:57 得分 5
getdate() 只是取日期的还是用fromatdatetime好Top
12 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 09:36:19 得分 0
我加上引号后,还是出错,提示说“UPDATE 语句 语法错误”Top
13 楼gmc007(江西的佬表)回复于 2003-11-04 09:48:14 得分 20
在ACCESS中 日期时间 是用 # 号括起来的
Top
14 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 20:58:07 得分 0
我用的是ACCESS,改成这个语句:
SQL.Add('Time=#' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + '#,');
还是不行,提示出错:
Project Safty.exe are raised exception class EoleException with message 'Parameter 对象被不正确的定义。提供了不一致或不完整的信息。' Process stopped. Use Step or Run to continueTop
15 楼CunningBoy(南迁的候鸟)回复于 2003-11-05 20:14:11 得分 0
帮帮我吧,我的头都大了……Top
16 楼scsdljb(阿罗)回复于 2003-11-05 21:47:51 得分 10
如果是SQL2000则在代入日期变量时这样的
SQL.Add('update table1 set field_time = ''' + FormatDateTime('yyyy-mm-mm hh:ss:mm',now) + ''' ');
这样就没有问题了吧.这个问题我曾经也遇到过,不过有时不加''号还可以通过.Top




