请问这样的 sql 语句为什么行不通?如何更改(100分)

  • 主题发起人 主题发起人 kisse
  • 开始时间 开始时间
K

kisse

Unregistered / Unconfirmed
GUEST, unregistred user!
ado 已经配置正确
procedure TForm1.Button1Click(Sender: TObject);
var time1,time2 : string;
begin
time1 := '2001-12-01';
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from 工资管理 where 发款日期 between');
ADOQuery1.sql.add('"' + time1 + '"' + 'and' + '"' + time2 +'"');
ADoquery1.Open;
end;
 
begin
time1 := '2001-12-01';
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from 工资管理 where 发款日期 between');
ADOQuery1.sql.add(' :a and :b');
adoquery.parameters.parambyname('a').value:=strtodate(time1);
adoquery.parameters.parambyname('b').value:=strtodate(time2);
ADoquery1.Open;
end;
 
这样就好
ado 已经配置正确
procedure TForm1.Button1Click(Sender: TObject);
var time1,time2 : string;
begin
time1 := '2001-12-01';
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from 工资管理 where 发款日期 between');
ADOQuery1.sql.add('''' + time1 + '''' + 'and ' + '''' + time2 +'''');
ADoquery1.Open;
end;
 
你的数据库中的字段一定是时间型的,你用字符型的去查当然错了,即使
查出来结果也是错误的,楼上的已经帮你完成了,来晚一步。
 
是'的表达问题,在delphi的字符串中两个'表示一个',即''表示'
正确表达方式如 天真 的回答
procedure TForm1.Button1Click(Sender: TObject);
var time1,time2 : string;
begin
time1 := '2001-12-01';
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from 工资管理 where 发款日期 between');
ADOQuery1.sql.add('''' + time1 + '''' + 'and ' + '''' + time2 +'''');
ADoquery1.Open;
end;
 
ado 已经配置正确
,不知用什么数据库,如果还不行,可能表名和字段名不能为汉字。
procedure TForm1.Button1Click(Sender: TObject);
var str : string;
begin
time1 := ;
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
str:='select * from 工资管理 where 发款日期>=''2001-12-01'' and 发款日期<=''2001-12-30''';
ADOQuery1.sql.add(str);
ADoquery1.Open;
end;
 
问题出在
ADOQuery1.sql.add('"' + time1 + '"' + 'and' + '"' + time2 +'"');
这一行
前两位的都是对的
 
多人接受答案了。
 
begin
time1 := '2001-12-01';
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
ADOQuery1.sql.add('select * from 工资管理 where 发款日期 ');
ADOQuery1.sql.add(' >=:a and 发款日期 <=:b');
adoquery.parameters.parambyname('a').value:=strtodate(time1);
adoquery.parameters.parambyname('b').value:=strtodate(time2);
ADoquery1.Open;
end;
 
ado 已经配置正确
,不知用什么数据库,如果还不行,可能表名和字段名不能为汉字。
procedure TForm1.Button1Click(Sender: TObject);
var str : string;
begin
time1 := ;
time2 := '2001-12-30';
ADOQuery1.Close;
ADOQuery1.sql.clear;
str:='select * from 工资管理 where 发款日期>=''2001-12-01'' and 发款日期<=''2001-12-30''';
ADOQuery1.sql.add(str);
ADoquery1.Open;
end;
 
后退
顶部