你试试这样写行不行?procedure TForm1.Button1Click(Sender: TObject); var name:string; begin name:=inputbox('输入姓名','请输入学生姓名:',''); query1.Close; with query1 do begin sql.Clear; sql.Add('select a.ksh,a.zkzh,a.xm');//写出ksh,zkzh,xm出自那个表,这里假设你出自t_tdd sql.add('from t_tdd a,fp b');//用别名 sql.Add('where a.ksh=b.ksh and a.xm=:name'); params[0].AsString:=name; prepare; open; end; end;
注意SQL中的空格 sql.Add('select ksh,zkzh,xm'); sql.add(' from t_tdd,fp'); sql.Add(' where t_tdd.ksh=fp.ksh and t_tdd.xm=:name');
我现在的问题是程序运行后,dbgrid1中的数据为空。例如:在t_tdd表中存在一条记录的xm字段值为"纪亮"(xm类型为char(64)).但我在程序运行后在inputbox的对话框中输入"纪亮"后dbgrid1中的数据为空。若我将程序代码改为如下: procedure TForm1.Button1Click(Sender: TObject); begin query1.Close; with query1 do begin sql.Clear; sql.Add('select ksh,zkzh,xm'); sql.add('from t_tdd,fp'); sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=“纪亮"'); prepare; open; end; end; 程序运行正常,dbgrid1中会显示出数据。请教专家这是怎么回事?
sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=“纪亮"'); 要这么写sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm='纪亮'');
我的问题是如下程序什么地方出错了? procedure TForm1.Button1Click(Sender: TObject); var name:string; begin name:=inputbox('输入姓名','请输入学生姓名:',''); query1.Close; with query1 do begin sql.Clear; sql.Add('select ksh,zkzh,xm'); sql.add('from t_tdd,fp'); sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=:name'); params[0].AsString:=name; prepare; open; end; end; 程序运行后按下button1后在inputbox对话框中输入纪亮后,dbgrid1中不显示任何数据。而在t_tdd表中有xm=“纪亮",但查不出来,是怎么回事?
var
name:string;
begin
name:=inputbox('输入姓名','请输入学生姓名:','');
query1.Close;
with query1 do
begin
sql.Clear;
sql.Add('select a.ksh,a.zkzh,a.xm');//写出ksh,zkzh,xm出自那个表,这里假设你出自t_tdd
sql.add('from t_tdd a,fp b');//用别名
sql.Add('where a.ksh=b.ksh and a.xm=:name');
params[0].AsString:=name;
prepare;
open;
end;
end;
sql.Add('select ksh,zkzh,xm');
sql.add(' from t_tdd,fp');
sql.Add(' where t_tdd.ksh=fp.ksh and t_tdd.xm=:name');
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.Close;
with query1 do
begin
sql.Clear;
sql.Add('select ksh,zkzh,xm');
sql.add('from t_tdd,fp');
sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=“纪亮"');
prepare;
open;
end;
end;
程序运行正常,dbgrid1中会显示出数据。请教专家这是怎么回事?
要这么写sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm='纪亮'');
procedure TForm1.Button1Click(Sender: TObject);
var
name:string;
begin
name:=inputbox('输入姓名','请输入学生姓名:','');
query1.Close;
with query1 do
begin
sql.Clear;
sql.Add('select ksh,zkzh,xm');
sql.add('from t_tdd,fp');
sql.Add('where t_tdd.ksh=fp.ksh and t_tdd.xm=:name');
params[0].AsString:=name;
prepare;
open;
end;
end;
程序运行后按下button1后在inputbox对话框中输入纪亮后,dbgrid1中不显示任何数据。而在t_tdd表中有xm=“纪亮",但查不出来,是怎么回事?
比如tab1中的字段a 需要这么写tab1.a才可以,你的sql语句有问题:)
改为
sql.Add(' where t_tdd.ksh=fp.ksh and t_tdd.xm='''+name+'''');