大家帮忙看看这段错在哪里,searchfied和searchwhat都是由用户输入的变量
else if RadioGroup1.ItemIndex=4 then
searchfield:='workplace'
else if RadioGroup1.ItemIndex=5 then
searchfield:='sort';
end;procedure Tsearch.findClick(Sender: TObject);
var
searchwhat:string;
order:string;
begin
searchwhat:=Edit1.Text;
order:='select * from friends where searchfield=:"'+searchwhat+'"';
ADOQuery1.SQL.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Add(order);
ADOQuery1.Open;
end;
else if RadioGroup1.ItemIndex=4 then
searchfield:='workplace'
else if RadioGroup1.ItemIndex=5 then
searchfield:='sort';
end;procedure Tsearch.findClick(Sender: TObject);
var
searchwhat:string;
order:string;
begin
searchwhat:=Edit1.Text;
order:='select * from friends where searchfield=:"'+searchwhat+'"';
ADOQuery1.SQL.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Add(order);
ADOQuery1.Open;
end;
解决方案 »
- 再问FindControl
- 新年快乐!鼠标事件,在线等待
- 怎么给窗口分割后的每一块加上滚动条?
- 我将datacontrol组中的控件都hide掉了,怎么再恢复过来?
- Listview为什么不能全选中
- 请问高手!C代码:void uncompress(char *line) { register char *p = line; }如何改写为DELPHI代码?
- 一个简单的数据库问题(在线等待)
- 如何压缩db数据库,paradox格式的.请给出代码
- 我的 sql2000+delphi做的管理软件有这样的问题……
- 求助!怎样能使一个表里的......
- 谁有开发语音卡程序的资料
- 如何将数据导出到excel(求代码)
其值是用户点击radiogroup输入
这段全部代码如下:
procedure Tsearch.RadioGroup1Click(Sender: TObject);
var
searchfield:string;
begin
if RadioGroup1.ItemIndex=0 then
searchfield:='chinesename'
else if RadioGroup1.ItemIndex=1 then
searchfield:='corp'
else if RadioGroup1.ItemIndex=2 then
searchfield:='graduateschool'
else if RadioGroup1.ItemIndex=3 then
searchfield:='mobilephone'
else if RadioGroup1.ItemIndex=4 then
searchfield:='workplace'
else if RadioGroup1.ItemIndex=5 then
searchfield:='sort';
end;procedure Tsearch.findClick(Sender: TObject);
var
searchwhat:string;
book1:string;
begin
searchwhat:=Edit1.Text;
order:='select * from friends where searchfield=:"'+searchwhat+'"';
ADOQuery1.SQL.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Add(order);
ADOQuery1.Open;
end;
刚申请的账号,加不了分,请多多见谅!
代码如下
procedure Tsearch.RadioGroup1Click(Sender: TObject);
var
searchfield:string;
begin
if RadioGroup1.ItemIndex=0 then
searchfield:='chinesename'
else if RadioGroup1.ItemIndex=1 then
searchfield:='corp'
else if RadioGroup1.ItemIndex=2 then
searchfield:='graduateschool'
else if RadioGroup1.ItemIndex=3 then
searchfield:='mobilephone'
else if RadioGroup1.ItemIndex=4 then
searchfield:='workplace'
else if RadioGroup1.ItemIndex=5 then
searchfield:='sort';
end; procedure Tsearch.findClick(Sender: TObject);
var
searchwhat:string;
order:string;
begin
searchwhat:=Edit1.Text;
order:='select * from friends where searchfield=:"'+searchwhat+'"';
ADOQuery1.SQL.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Add(order);
ADOQuery1.Open;
end;
将searchfield改为表friends的字段(chinesename等)可以运行 将searchfield改成变量后运行出错
谢谢各位的关注!
上面的语句是用SQLSERVER数据库的 不知道你用的哪个数据库你用的"符号。
在sql属性里写了一句 select * from friends
改成order:='select * from friends where searchfield='+searchwhat+''; 后 还是不能运行
提示为参数searchfield没有默认值
你这个语句不对啊,如果searchfield是变量,应该这么写order:='select * from friends where '+searchfield+'="'+searchwhat+'"';你的写法 'select * from friends where searchfield=:"' 这整个是一个字符串啊!
不能通过编译 提示:Undeclared identifier 'searchfield'
将'+searchfield+'简化成表里的字段chinsesname能运行
所以你在这儿procedure Tsearch.findClick(Sender: TObject); 用不了,
解决办法是把在procedure Tsearch.RadioGroup1Click(Sender: TObject); 声明的searchfield:string; 删掉,放到全局变量那儿!
procedure Tsearch.RadioGroup1Click(Sender: TObject);
var
searchfield:string;
begin
if RadioGroup1.ItemIndex=0 then
searchfield:='chinesename'
else if RadioGroup1.ItemIndex=1 then
searchfield:='corp'
else if RadioGroup1.ItemIndex=2 then
searchfield:='graduateschool'
else if RadioGroup1.ItemIndex=3 then
searchfield:='mobilephone'
else if RadioGroup1.ItemIndex=4 then
searchfield:='workplace'
else if RadioGroup1.ItemIndex=5 then
searchfield:='sort';
end;
谢谢moklee的解答!
我将searchfield:string; 声明成全局变量后还是有问题
错误提示为::‘语法错误(操作符丢失)在查询表达式’=‘xxx’‘’中
这该怎么解决呢?
2.数据库中,非数字字段,须用引号引起来:order:='select * from friends where '+searchfield+'='''+searchwhat+''''; 就是对的,用QuotedStr()更好些
但你可以把RadioGroup1Click中代码移入findClick事件中处理
问题已经解决了
是RadioGroup对点击没有反应,没有给searchfield赋值