我的这段代码怎么老提示至少一个参数未被指定值,该怎么改的?(50)

  • 主题发起人 主题发起人 svba
  • 开始时间 开始时间
S

svba

Unregistered / Unconfirmed
GUEST, unregistred user!
sqlStr:= 'select * from events where eventTime Between :DateStart and :DateEnd'; ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(sqlStr); Dialogs.ShowMessage(FormatDateTime('c', DateTimePicker1.DateTime)); ADOQuery1.Parameters.ParamByName('DateStart').Value:= DateTimePicker1.Date; ADOQuery1.Parameters.ParamByName('DateEnd').Value:= DateTimePicker1.Date; ADOQuery1.Open;
 
:DateStart and :DateEnd前加“:”应该是错的吧,我感觉好像不需要加“:”的
 
如果你是采用三层结构的话,有可能是ADOQUERY1连接的PROVIDER参数没有设对,要设置Provider允许动态的改变常数就可以了!
 
正确的啊,是不是“:”未为全角字符了
 
sqlStr:= 'select * from events where eventTime Between '''+datetostr(DateTimePicker1.Date)+'''and '''+datetostr(DateTimePicker2.Date)+''';
 
ADOQuery1.Parameterchecked:=True
 
设置Parameterchecked 为 TRUE
 
语句没有问题,用showmessage(ADOQuery1.sql.text),看一下~~得到语句在查询分析器中执行一下~~
 
你肯定是用ACCESS数据吧? 茄子的做法是正确的.
 
sqlStr:= 'select * from events where eventTime Between :DateStart and :DateEnd';这句是不是有问题啊,在Delphi中这不是一句String型的句子。原文输出了,.....
 
建议你看看时间格式有没有问题。有时候date和time区别很严格。
 
ADOQuery1.Parameters.ParamByName('DateStart').Value:= DateTimePicker1.Date; ADOQuery1.Parameters.ParamByName('DateEnd').Value:= DateTimePicker1.Date;改成 ADOQuery1.Parameters.ParamByName('DateStart').asString:= dateToStr(DateTimePicker1.Date); ADOQuery1.Parameters.ParamByName('DateEnd').asString:= dateToStr(DateTimePicker1.Date);试试
 
delphi世界qq群:23981160,希望delphi的朋友进来
 
猜测:是access数据库,并且最后形成的字符串中包含:或者?等字符。你可以用组合字符串的方式(即没有参数的那种)试试,如果也有问题就把sql语句显示出来分析。当用冒号表示一个参数时,access的日期参数往往要用井号包围,建议用?表示一个参数
 
LZ不说话,大家尽在瞎猜测。。LZ不厚道。。。BS,如何提问都不清楚。
 
后退
顶部