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、回复次数:12Top
1 楼winsock2000(风筝)回复于 2003-11-03 23:27:50 得分 10
time='''+FormatDateTime('yyyy-mm-dd hh:nn:ss', Now)+'''Top
2 楼zhxr2003(Grancy)回复于 2003-11-04 17:16:55 得分 15
对于VARCHAR型日期型数据,需字符串处理.QuotedStr()
如楼上给你的时间前后加引号
SQL.Text :='Update Information Set Time='
+ QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))
+ ',CH4Concent=' + FloatToStr(concent)
+ ',pressure=' + FloatToStr(pressure)
+ ',tfl=' + FloatToStr(tfl)
+ ' WHERE (CoalID=' + QuotedStr(coalid)
+ ')
And (WorkID=' + workid + #39 + ') And' + '(DeviceID=' + #39 + deviceid + #39 + ')');
Top
3 楼zhxr2003(Grancy)回复于 2003-11-04 17:18:42 得分 15
具体情况根据你的数据类型而定了
SQL.Text :='Update Information Set Time='
+ QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))
+ ',CH4Concent=' + FloatToStr(concent)
+ ',pressure=' + FloatToStr(pressure)
+ ',tfl=' + FloatToStr(tfl)
+ ' WHERE (CoalID=' + QuotedStr(coalid)
+ ') And (WorkID=' + QuotedStr(workid)
+ ') And (DeviceID=' + QuotedStr(deviceid) ')';
Top
4 楼angle097113(深思不解)回复于 2003-11-04 18:05:20 得分 10
QuotedStr(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))Top
5 楼upingking()回复于 2003-11-04 19:46:58 得分 10
如果是sql server应该没问题.如果是access应该是
SQL.Add('Time=#' + DateTimeToStr(StrToDateTime(FormatDateTime('yyyy-mm-dd hh:nn:ss', Now))) + '#,')Top
6 楼CunningBoy(南迁的候鸟)回复于 2003-11-04 20:56:36 得分 0
我用的是ACCESS,也按照“upingking()”的方法做了,还是不行,提示出错:
Project Safty.exe are raised exception class EoleException with message 'Parameter 对象被不正确的定义。提供了不一致或不完整的信息。' Process stopped. Use Step or Run to continueTop
7 楼CunningBoy(南迁的候鸟)回复于 2003-11-05 20:23:03 得分 0
各位大虾帮帮忙吧,我的头都大了Top
8 楼Shiyl(云淡风清 卷舒自在)回复于 2003-11-05 21:56:48 得分 10
function FormatDateTime(const Format: string; DateTime: TDateTime): string;
既然是生成的是string型那么可以试着
SQL.Add('Time=''' +FormatDateTime('yyyy-mm-dd hh:nn:ss', Now) + ''',');
没有试过哦
呵呵就当灌水^o^Top
9 楼pengdali()回复于 2003-11-05 21:57:18 得分 15
access try:
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=''' + coalid + ''') And' + '(WorkID=''' + workid + ''') And' + '(DeviceID=''' + deviceid +''')');
try
ExecSQL;
except
exit;
end;
end;
end;Top
10 楼miszyf(miszyf)回复于 2003-11-06 09:54:46 得分 5
好像MM表示月份吧,而非mm.Top
11 楼miszyf(miszyf)回复于 2003-11-06 09:57:53 得分 5
分钟应该用mm吧。Top
12 楼superlionet(彼岸)回复于 2003-11-06 10:16:47 得分 5
我好象记得time 不能用做字段吧。 你换个字段名称看看Top




