在Form1上根据datetimepicker1和datetimepicker2时间区间查询数据。where operno='''+edit1.text+''' and handletime>='''+datetimepicker1''' and handletime<='''+datetimepicker2'''以上代码出现错误,请指教!
where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''
procedure TForm1.Button1Click(Sender: TObject); var s1,s2:string; begin s1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.date); s2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.date); with adoquery1 do begin close; sql.Text:='select * from ±íÃû where operno='+QuotedStr(edit1.Text)+' and handletime>='+QuotedStr(s1)+' and handletime<='+QuotedStr(s2); open; end;end;
procedure TForm1.Button1Click(Sender: TObject); var s1,s2:string; begin s1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.date); s2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.date); with adoquery1 do begin close; sql.Text:='select * from 表名 where operno='+QuotedStr(edit1.Text)+' and handletime>='+QuotedStr(s1)+' and handletime<='+QuotedStr(s2); open; end;end;
字段都正确,又出现这个错误: [Error] Unit1.pas(51): Undeclared identifier: 'HandleTime' [Error] Unit1.pas(51): ')' expected but identifier 'yyyy' found [Error] Unit1.pas(51): Operator not applicable to this operand type [Error] Unit1.pas(51): Incompatible types: 'String' and 'Integer' [Error] Unit1.pas(52): Incompatible types: 'String' and 'Integer' [Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
handletime字段值是这样的:2008-05-09 17:43:41.950
strsql: string; strsql := 'select * from tbl where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''
' Select * from 表名 where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''' ' 注意换行与空格,每次换行后单引号要紧加个空格才能形成正确的SQL语句 如:(错误写法) 'Select * from' +'表名 where ....'(正确写法) ' Select * from' +' 表名 where ....'
完整代码是: begin if edit1.Text='' then begin application.MessageBox('输入操作员号不能为空','提示',0+64); exit; end; ADOquery1.SQL.Clear; ADOquery1.Close; ADOquery1.SQL.Add('select peono as 工号,peoname as 姓名,cardno as 卡号,' +'opertype as 类型,handletime as 挂失时间,operno as 操作员,' +'opername as 操作员姓名 from mcardled' +'where operno='''+edit1.text+'''order by handletime'); +'where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''); dbgrid1.Font.Color:=clteal; ADOquery1.Open; edit1.SetFocus; edit1.SelectAll; if ADOquery1.RecordCount=0 then begin application.MessageBox('你输入的数据不存在','提示',0+64); exit; end; end;
ADOquery1.SQL.Add('select peono as 工号,peoname as 姓名,cardno as 卡号,' +'opertype as 类型,handletime as 挂失时间,operno as 操作员,' +'opername as 操作员姓名 from mcardled' +'where operno='''+edit1.text+'''order by handletime'); //多了');',去掉. ------------>+'where operno='''+edit1.text+'''order by handletime' +'where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''); dbgrid1.Font.Color:=clteal; ADOquery1.Open;
谢谢大家了,找到原因了。 多了一个单引号。 operno='''+edit1.text+'''' and
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2:string;
begin
s1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.date);
s2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.date); with adoquery1 do begin
close;
sql.Text:='select * from ±íÃû where operno='+QuotedStr(edit1.Text)+' and handletime>='+QuotedStr(s1)+' and handletime<='+QuotedStr(s2);
open;
end;end;
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2:string;
begin
s1:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.date);
s2:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.date); with adoquery1 do begin
close;
sql.Text:='select * from 表名 where operno='+QuotedStr(edit1.Text)+' and handletime>='+QuotedStr(s1)+' and handletime<='+QuotedStr(s2);
open;
end;end;
字段都正确,又出现这个错误:
[Error] Unit1.pas(51): Undeclared identifier: 'HandleTime'
[Error] Unit1.pas(51): ')' expected but identifier 'yyyy' found
[Error] Unit1.pas(51): Operator not applicable to this operand type
[Error] Unit1.pas(51): Incompatible types: 'String' and 'Integer'
[Error] Unit1.pas(52): Incompatible types: 'String' and 'Integer'
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'
strsql := 'select * from tbl where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''''
' Select * from 表名 where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+''' '
注意换行与空格,每次换行后单引号要紧加个空格才能形成正确的SQL语句
如:(错误写法)
'Select * from'
+'表名 where ....'(正确写法)
' Select * from'
+' 表名 where ....'
begin
if edit1.Text='' then
begin
application.MessageBox('输入操作员号不能为空','提示',0+64);
exit;
end;
ADOquery1.SQL.Clear;
ADOquery1.Close;
ADOquery1.SQL.Add('select peono as 工号,peoname as 姓名,cardno as 卡号,'
+'opertype as 类型,handletime as 挂失时间,operno as 操作员,'
+'opername as 操作员姓名 from mcardled'
+'where operno='''+edit1.text+'''order by handletime');
+'where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+'''');
dbgrid1.Font.Color:=clteal;
ADOquery1.Open;
edit1.SetFocus;
edit1.SelectAll; if ADOquery1.RecordCount=0 then
begin
application.MessageBox('你输入的数据不存在','提示',0+64);
exit;
end;
end;
+'opertype as 类型,handletime as 挂失时间,operno as 操作员,'
+'opername as 操作员姓名 from mcardled'
+'where operno='''+edit1.text+'''order by handletime'); //多了');',去掉.
------------>+'where operno='''+edit1.text+'''order by handletime'
+'where operno='''+edit1.text+''' and handletime>='''+FormatDateTime('yyyy-mm-dd',datetimepicker1.Date)+''' and handletime <='''+FormatDateTime('yyyy-mm-dd',datetimepicker2.Date)+'''');
dbgrid1.Font.Color:=clteal;
ADOquery1.Open;
多了一个单引号。
operno='''+edit1.text+'''' and