update od SQL的具体语法(30分)

  • 主题发起人 主题发起人 爬爬虫
  • 开始时间 开始时间

爬爬虫

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在query控件用update更新数据库的各种类型字段的值?
特别是datetime型的?以下语法的错误在哪儿?
...
var
NEW_Date:TDateTime;
I_text,SQL_Text:String ;

...

I_text:=Edit1.Text;
New_Date:=StrToDate(I_text);
...
SQL_Text:='update Table1 set date='+new_date;
//date is a Field name
...
query1.Execsql;
...


my_email:h87401@263.net
 
日期之间加双引号,
SQL_Text:='update Table1 set date="'+new_date + '"';

如果用Access97 , 将"双引号"改为"#"号,

如果是informix, 还要注意数据库对日期格式的定义, 即Y-M-D的顺序.


 
'update Table1 set date="'+new_date + '"' 赋值于一字符串变量时
有一个问题:new_date为一TdateTiem不能赋值于一个字符串型变量,
new_date为一变量!
 
sorry , 看错了一些,
var
NEW_Date:TDateTime;
I_text,SQL_Text:String ;

...

I_text:=Edit1.Text;
New_Date:=StrToDate(I_text);
...
SQL_Text:='update Table1 set date="'+DateTostr(new_date) + '"';
//date is a Field name
...
query1.Execsql;
...

 
SQL_Text:='update Table1 set date="'+DateToStr(new_date)+'"';

为什么不用Param?
with Query1 do
begin
Close;
SQL:='update Table1 set date=:MyDate';//应该在设计期完成
ParamByName('MyDate').AsDateTime:=new_date;
Open;
end;
 
赞成delphiwolf的写法:

with Query1 do
begin
Close;
SQL.text:='update Table1 set date=:MyDate';//这句应这样写
ParamByName('MyDate').AsDateTime:=new_date;
execSQL;//这样写
end;

 
ParamByName('MyDate').AsDateTime:=new_date;还可以这样写
Params[0].AsDateTime:=new_date;//若MyDate是第一个参数;
BTW:
open and execSQL are both right.
 
delphiwolf is right
 
呵呵,
SQL_Text:='update Table1 set date='+new_date;
new_date类型不对,
SQL_Text:='update Table1 set date="'+DateTostr(new_date) + '"';
这样,需要更改控制面板的区域设置中的短日期样式为"M/d/yy"才行, 还是这样吧:
var
theyear,themonth,theday:word;
begin
decodedate(new_date,theyear,themonth,theday);
SQL_Text:='update Table1 set date="'+inttostr(themonth) + '/'+inttostr(theday) + '/'+inttostr(theyear) + '"';
end;
 
多人接受答案了。
 
后退
顶部