大虾帮我看看这段代码,在线等待。。。。。。。。。
数据库用的自带的paradox,那个Zhbh和Yblx本来就是字符型的字段,那个没什么,关键是日期型S字段frq的处理
var
Present,StartDate,EndDate: TDateTime;
Year, Month, Day: Word;
begin //只列出了其中一段
Present:=now;
DecodeDate(Present,Year, Month, Day);
Month:=StrToInt(Trim(MaskEdit1.Text));
Day:=1;
StartDate:=EncodeDate(Year,Month,Day);
Day:=28;
EndDate:=EncodeDate(Year,Month,Day);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select Ybsj From jlybsj');
Query1.SQL.Add('Where (Zhbh='+QuotedStr(ComboBox1.Text)+')');
Query1.SQL.Add(' And (Yblx='+QuotedStr(ComboBox2.Text)+')');
Query1.SQL.Add('And (Sfrq>:StartDate And Sfrq<:EndDate)');
Query1.Open;
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;
end
错误:Field 'StartDate'is of unknown type
意图比较明显,请大虾指点错在哪,应该怎么改
问题点数:0、回复次数:13Top
1 楼li_zhifu(东北人)回复于 2003-06-01 15:37:28 得分 0
Query1.SQL.Add('And (Sfrq>:StartDate And Sfrq<:EndDate)');
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;
Query1.Open;Top
2 楼li_zhifu(东北人)回复于 2003-06-01 15:38:02 得分 0
同一问题问两遍,你是想给40分啊,好,都给我吧Top
3 楼fhuibo(永远深爱一个叫“莎”的好女孩儿)回复于 2003-06-01 15:43:08 得分 0
好象没有错误
根据提示:是数据库中的StartDate设置的类型出错Top
4 楼trustme007(相信我)回复于 2003-06-01 15:52:36 得分 0
to 东北人,这个问题不是关键了,顺序改过来
提示错误:capability not supported
我是提了两次,可是开始和那位兄弟讨论了半天问题没有解决
如果能解决,100分我也无所谓的Top
5 楼trustme007(相信我)回复于 2003-06-01 15:54:21 得分 0
to sailor:StartDate是个变量,我在上面有申明的Top
6 楼li_zhifu(东北人)回复于 2003-06-01 16:13:19 得分 0
“to 东北人,这个问题不是关键了”
这当然是关键,在Open前才能给参数赋值
至于你说的提示信息是因为类型不匹配,你可以调试一下,看到哪一句后出错Top
7 楼trustme007(相信我)回复于 2003-06-01 16:19:00 得分 0
其他得还好调,可是这SQL语句一直困惑我,这个东东不好调,要么是一起执行得
怎么看得到是哪一条出错?有没有什么好方法
我说得这不是关键得意思,是我开始就是这样得,后来有个网友让我这样试试,我
就改一下试试Top
8 楼wyr521(论坛王子)回复于 2003-06-01 16:32:07 得分 0
query1.params[0].datatype:=?
这样定义数据类型,
在USES中引用table,dbtableTop
9 楼li_zhifu(东北人)回复于 2003-06-01 16:47:19 得分 0
表里的字段Sfrq的类型是你确定是日期型的么?Top
10 楼yixia(一侠)回复于 2003-06-01 16:50:17 得分 0
Query1.SQL.Add('And (Sfrq>:StartDate And Sfrq<:EndDate)');
把参数去掉看看,
用
query1.sql.add('and ')
query1.sql.add(' sfrq>'''+datetostr(StartDate)+''' and Sfrq <'''+ datetostr(EndDate)+'''')
我用ado时,用字符串不错Top
11 楼lxy13(甜甜)回复于 2003-06-01 16:54:04 得分 0
在Open前给参数赋值
Query1.Open;
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;
改为
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;
Query1.Open;
Top
12 楼trustme007(相信我)回复于 2003-06-01 17:07:28 得分 0
to:东北人,当然确定了,表里有数据的嘛
我改了一下,大家看看,错误提示是类型不匹配,我发现paradox的日期性格式
有点怪哦,因为在在SQL builder里面输入select * from jlybsj where Sfrq<2003-01-03
和select * from jlybsj where Sfrq<'2003-01-03'
select * from jlybsj where Sfrq<'2003-1-3'
select * from jlybsj where Sfrq<2003-1-3
都提示类型不匹配
var
Present: TDateTime;
StartDate,EndDate: String;
Year, Month, Day: Word;
Begin
Present:=now;
DecodeDate(Present,Year, Month, Day);
Month:=StrToInt(Trim(MaskEdit1.Text));
Day:=1;
StartDate:=FormatDateTime('''yyyy''-''M''-''d''',EncodeDate(Year,Month,Day));
Day:=28;
EndDate:=FormatDateTime('''yyyy''-''M''-''d''',EncodeDate(Year,Month,Day));
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Select Ybsj From jlybsj');
Query1.SQL.Add('Where (Zhbh='+QuotedStr(ComboBox1.Text)+')');
Query1.SQL.Add(' And (Yblx='+QuotedStr(ComboBox2.Text)+')');
Query1.SQL.Add('And Sfrq>'+QuotedStr(StartDate)+' And Sfrq<'+QuotedStr(EndDate));
ShowMessage(Query1.SQL.Text);
Query1.Open;
endTop
13 楼li_zhifu(东北人)回复于 2003-06-02 08:47:59 得分 0
formatdatetime('m/d/yy',now);
你再试试这种格式Top




