SQL问题--Update出错!!!时间和字符串转换的问题!!!!

CunningBoy 2003-11-03 11:21:46
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))) + ',')这句的问题。
...全文
118 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
scsdljb 2003-11-05
  • 打赏
  • 举报
回复
如果是SQL2000则在代入日期变量时这样的
SQL.Add('update table1 set field_time = ''' + FormatDateTime('yyyy-mm-mm hh:ss:mm',now) + ''' ');
这样就没有问题了吧.这个问题我曾经也遇到过,不过有时不加''号还可以通过.
CunningBoy 2003-11-05
  • 打赏
  • 举报
回复
帮帮我吧,我的头都大了……
gmc007 2003-11-04
  • 打赏
  • 举报
回复
在ACCESS中 日期时间 是用 # 号括起来的

CunningBoy 2003-11-04
  • 打赏
  • 举报
回复
我加上引号后,还是出错,提示说“UPDATE 语句 语法错误”
fhuibo 2003-11-04
  • 打赏
  • 举报
回复
getdate() 只是取日期的还是用fromatdatetime好
suwen88 2003-11-04
  • 打赏
  • 举报
回复
按楼上说的吧,用参数吧
hongjg 2003-11-04
  • 打赏
  • 举报
回复
我上面的错了,应该直接传递数据库中的字段的类型的值。AdoQuery1.Parameters.ParamByName('time').Value := Now;
hongjg 2003-11-04
  • 打赏
  • 举报
回复
值使用参数传递,一般不会有错:
AdoQuery1.Parameters.ParamByName('time').Value:=StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
yurenjf 2003-11-04
  • 打赏
  • 举报
回复
同意楼上所言,时间要加引号的
CunningBoy 2003-11-04
  • 打赏
  • 举报
回复
我用的是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 continue
LKJ99 2003-11-04
  • 打赏
  • 举报
回复
我试过,

时间参数加引号:
SQL.Add('Time=' + #39 + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + #39 + ',');
CunningBoy 2003-11-04
  • 打赏
  • 举报
回复
我用的数据库是Access,请问该如何处理?
wrydao 2003-11-04
  • 打赏
  • 举报
回复
用getdate()或用参数:time
SQL.Add(':Time‘);
adoquery1.parameters.parambyname('time').value:=StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
angelface 2003-11-04
  • 打赏
  • 举报
回复
up
oklida 2003-11-03
  • 打赏
  • 举报
回复
如果你的数据库是SQL Server 就用getdate()
是ORACLE就用SYSDATE
oklida 2003-11-03
  • 打赏
  • 举报
回复
不如改成 SQL.Add('Time=getdate()')

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧