为何出错?(50分)

  • 主题发起人 主题发起人 zjmg
  • 开始时间 开始时间
Z

zjmg

Unregistered / Unconfirmed
GUEST, unregistred user!
很菜的初级问题:为何将combobox1中选中的字段加入下列语句中报错?

procedure TForm2.Button1Click(Sender: TObject);
begin
Query1.close;
query1.sql.clear;
query1.sql.add('select 编号,性别,身高,出生年月');
query1.sql.add('from"hj.db"');
query1.sql.add('where 性别=combobox1.items[0]');
query1.prepare;
query1.open;
end;
 
query1.sql.add('where 性别=combobox1.items[0]');
改为
query1.sql.add('where 性别=''combobox1.items[0]''');
 
procedure TForm2.Button1Click(Sender: TObject);
begin
Query1.close;
query1.sql.clear;
query1.sql.add('select 编号,性别,身高,出生年月');
query1.sql.add('from hj');
query1.sql.add('where 性别= :性别');
query1.ParamByName('性别').Value := combobox1.items[0]');
query1.prepare;
query1.open;
end;
 
同意楼上的
 
procedure TForm2.Button1Click(Sender: TObject);
begin
Query1.close;
query1.sql.clear;
query1.sql.add('select 编号,性别,身高,出生年月');
query1.sql.add('from"hj.db"');
query1.sql.add('where 性别='''+combobox1.items[0]+'''');
query1.prepare;
query1.open;
end;
 
procedure TForm2.Button1Click(Sender: TObject);
begin
Query1.close;
query1.sql.clear;
query1.sql.add('select 编号,性别,身高,出生年月');
query1.sql.add(' from hj');
query1.sql.add(' where 性别='''+combobox1.items[0]+'''');
query1.prepare;
query1.open;
end;
 
softboy
说的对!
 
combobox1.items[0] ---> combobox1.text
 
鼠标
说的都对!
 
我一贯的写法是:
procedure TForm2.Button1Click(Sender: TObject);
var
sqltext:string;
begin
with query1 do
begin
sqltext:='select 编号,性别,身高,出生年月 from "bj.db" where 性别='''+combobox1.text+'''';
close;
sql.clear;
sql.add(sqltext);
prepare;
open;
end;
end;
這樣准沒問題。你就是錯在where後靣了。combobox.text是個字符串變量,
要讓sql語句明白,就要寫成我所寫的那個樣子。當然還有其它方法,如給
它一個參數之類,但都不如我寫的這個直觀且方便。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
878
import
I
后退
顶部