恳请赐教
var
sqlstr,a,p:string;
b,d,e: variant;
dresult: integer;
begin
a:=edit2.Text;
p:=combobox1.Text;
b:=edit3.Text;
d:=DateTimePicker1.date;
e:=DateTimePicker2.date;
if ( a<>'') and ( b<>'')and (p<>'' ) then
begin
with adoquery1 do
//先判断数据库中是否有了所要加的订单
adoquery1.Active:=false;
sqlstr:='select* from 采购订单表 where 名称='+quotedstr(a)+' and 订货人 ='+quotedstr(p)+' and 订货日期='+(datetostr(d))+' and 到货期限='+(datetostr(e))+' and 数量='+b+'';
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqlstr);
adoquery1.Active:=true ;
begin
sqlstr:='insert into 采购订单表(名称,数量,订货日期,到货期限,订货人) values('+quotedstr(a)+','+b+','+(datetostr(d))+', '+(datetostr(e))+','+quotedstr(p)+')';
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add(sqlstr);
dresult:=messagedlg('是否要把此单放入到数据库中',mtConfirmation,[mbyes,mbno],0) ;
if dresult=idyes then
begin
showmessage('是的要加的');
adoquery1.ExecSQL;
请问:为何我明明在表中放了一条完全一样的记录却总是因为日期不符合查找不到呢?从datetimepicker取出时间中到表中是不是过程中会自动转换呢/?谢谢您;我等
问题点数:60、回复次数:6Top
1 楼yiyideyi(一一得一)回复于 2005-04-01 11:48:42 得分 0
是不是变量d、e的类型问题?Top
2 楼duanhai(段海)回复于 2005-04-01 11:54:51 得分 10
樓主將數據庫中的日期字段也按字符格式化一下
注意,兩邊的都一樣
如SQL Server
convert(varhchar(10),订货日期,121)=FormatDateTime('yyyy-mm-dd',Now)Top
3 楼duanhai(段海)回复于 2005-04-01 11:58:16 得分 50
另外你將你的SQL語句拷貝到查詢分析器中執行,看有什麼結果
我想你的SQL應該是出在這兒:'订货日期='+(datetostr(d))
你應該將後面的條件加上單引號,如:'订货日期='+#39 + (datetostr(d)) + #39
如果不加的話,那麼數據庫會當成是1900年
Top
4 楼whbo(王红波(年轻人,要有所作为))回复于 2005-04-01 12:12:46 得分 0
为什么用variant?Top
5 楼shangwen()回复于 2005-04-01 12:46:58 得分 0
to: 一一得一 and 王红播 variant 也可以包含日期型的数据Top
6 楼shangwen()回复于 2005-04-01 13:05:14 得分 0
谢谢,各位,搞定了,就是查询的时候日期类型的要加 # 号,谢谢;Top




