SQL出错? (35分)

  • 主题发起人 小女人
  • 开始时间

小女人

Unregistered / Unconfirmed
GUEST, unregistred user!
ADOQuery2.SQL.add('select * from hnit where jyfw like ''%'+hdss+'%'' and ds like ''%'+hdsy+'%'' order by '+sign+' desc');
我想可能是SQL写法上有错!帮我看看吧!
-------------------------------------------------------------
procedure TForm2.Button2Click(Sender: TObject);
var
hdss:string;
hdsy:string;
sign:string;
begin
if radiogroup1.ItemIndex=-1 then
hdss:=''
else
hdss:=RadioGroup1.items[RadioGroup1.ItemIndex];
if combobox2.Text='全省' then
hdsy:=''
else
hdsy:=ComboBox2.text;
case RadioGroup1.ItemIndex of
0: sign:='1';
1: sign:='2';
2: sign:='3';
3: sign:='4';
4: sign:='5';
5: sign:='6';
6: sign:='7';
7: sign:='8';
8: sign:='9';
9: sign:='bgjj';
10: sign:='10';
11: sign:='11';
12: sign:='12';
13: sign:='13';
14: sign:='14';
15: sign:='15';
else sign:='nu';
end;
with ADOQuery2 do
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.add('select * from hnit where jyfw like ''%'+hdss+'%'' and ds like ''%'+hdsy+'%'' order by '+sign+' desc');
ADOQuery2.Open;
if ADOQuery2.Eof=false then
StatusBar1.SimpleText:=' 当前搜索条件为:'+hdsy+'经营'+hdss+'的所有商家'
else
MessageDlg('没有您要查找的公司',mtwarning,[mbok],0);


end;
end;
 
截取运行中的SQL到执行器中试试便知。
 
同意楼上说法
 
order by '+sign+' desc' 这里应该有问题吧!
 
我看也是这里有问题 order by '+sign+' desc' 程序运行到这里时 sign='un'
un字段为数字型字段, 不知是不是 多了一对单引号?
 
在格式上提点意见
with ADOQuery2 do
begin
Close;
SQL.Clear;
SQL.add('select * from hnit where jyfw like ''%'+hdss+'%'' and ds like ''%'+hdsy+'%'' order by '+sign+' desc');
try
Open;
except
//*****
end;
if Eof then
StatusBar1.SimpleText:=' 当前搜索条件为:'+hdsy+'经营'+hdss+'的所有商家'
else
//MessageDlg('没有您要查找的公司',mtwarning,[mbok],0);
Application.MessageBox('没有您要查找的公司', '提示', MB_ICONINFORMATION + MB_OK);
end;
 
同意楼上说法
order by '+sign+' desc' 这里应该有问题吧!
 
sign是不是列名(字段名)?
如果是的话,没有必要加一对单引号的啊!
order by sign desc
如果不是,就换个数字试试
order by 2 desc (1表示第一列,2表示第二列,依此类推)
 
sign是一个string变量
 
var s:string;

s:='select * from hnit where jyfw like '+''''+'%'+hdss+'%'+''''+
' and ds like '+''''+'%'+hdsy+'%'+''''+' order by hdsy desc ';
ADOQuery2.SQL.add(s);


 
多人接受答案了。
 
顶部