数据库用的自带的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
意图比较明显,请大虾指点错在哪,应该怎么改
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
意图比较明显,请大虾指点错在哪,应该怎么改
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;
Query1.Open;
根据提示:是数据库中的StartDate设置的类型出错
提示错误:capability not supported
我是提了两次,可是开始和那位兄弟讨论了半天问题没有解决
如果能解决,100分我也无所谓的
这当然是关键,在Open前才能给参数赋值
至于你说的提示信息是因为类型不匹配,你可以调试一下,看到哪一句后出错
怎么看得到是哪一条出错?有没有什么好方法
我说得这不是关键得意思,是我开始就是这样得,后来有个网友让我这样试试,我
就改一下试试
这样定义数据类型,
在USES中引用table,dbtable
用
query1.sql.add('and ')
query1.sql.add(' sfrq>'''+datetostr(StartDate)+''' and Sfrq <'''+ datetostr(EndDate)+'''')我用ado时,用字符串不错
Query1.Open;
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;改为
Query1.ParamByName('StartDate').AsDateTime:=StartDate;
Query1.ParamByName('EndDate').AsDateTime:=EndDate;
Query1.Open;
我改了一下,大家看看,错误提示是类型不匹配,我发现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;end
你再试试这种格式