Query 查询

datree 2008-07-31 06:50:17
大家帮忙看看这段错在哪里,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;
...全文
111 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
datree 2008-08-02
  • 打赏
  • 举报
回复
谢谢楼上各位的解答
问题已经解决了
是RadioGroup对点击没有反应,没有给searchfield赋值
moklee 2008-08-01
  • 打赏
  • 举报
回复
order:='select * from friends where searchfield=:"'+searchwhat+'"';


你这个语句不对啊,如果searchfield是变量,应该这么写

order:='select * from friends where '+searchfield+'="'+searchwhat+'"';

你的写法 'select * from friends where searchfield=:"' 这整个是一个字符串啊!
楚人无衣 2008-08-01
  • 打赏
  • 举报
回复
1.用case方法处理RadioGroup1.ItemIndex更简单一些,甚至可以用常量数组
2.数据库中,非数字字段,须用引号引起来:order:='select * from friends where '+searchfield+'='''+searchwhat+''''; 就是对的,用QuotedStr()更好些
但你可以把RadioGroup1Click中代码移入findClick事件中处理
datree 2008-08-01
  • 打赏
  • 举报
回复
新手上路,问题多多!
谢谢moklee的解答!
我将searchfield:string; 声明成全局变量后还是有问题
错误提示为::‘语法错误(操作符丢失)在查询表达式’=‘xxx’‘’中
这该怎么解决呢?
moklee 2008-08-01
  • 打赏
  • 举报
回复
searchfield:string; 在这儿是局部变量,当点击事件执行完成后,变量searchfield就释放了,
所以你在这儿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 2008-08-01
  • 打赏
  • 举报
回复
真服了你了!

你把searchfield:string; 声明成全局变量啊!
datree 2008-08-01
  • 打赏
  • 举报
回复
改成order:='select * from friends where '+searchfield+'='''+searchwhat+'''';
不能通过编译 提示:Undeclared identifier 'searchfield'
将'+searchfield+'简化成表里的字段chinsesname能运行
datree 2008-07-31
  • 打赏
  • 举报
回复
数据库用的是access
在sql属性里写了一句 select * from friends
改成order:='select * from friends where searchfield='+searchwhat+''; 后 还是不能运行
提示为参数searchfield没有默认值
datree 2008-07-31
  • 打赏
  • 举报
回复
用的是access数据库
lizhijie98 2008-07-31
  • 打赏
  • 举报
回复
order:='select * from friends where searchfield=:"'+searchwhat+'"';

修改成order:='select * from friends where searchfield='''+searchwhat+'''';
上面的语句是用SQLSERVER数据库的 不知道你用的哪个数据库你用的"符号。
datree 2008-07-31
  • 打赏
  • 举报
回复
错误提示是:不正常的定义参数对象。提供了不一致或不完整的信息。
代码如下
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改成变量后运行出错
谢谢各位的关注!
fjtxwd 2008-07-31
  • 打赏
  • 举报
回复
把错误提示发出来看下阿,是不是unknow type?
datree 2008-07-31
  • 打赏
  • 举报
回复
不是,是一个变量
其值是用户点击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;
bookmark1:string;
begin
searchwhat:=Edit1.Text;
order:='select * from friends where searchfield=:"'+searchwhat+'"';
ADOQuery1.SQL.Clear;
ADOQuery1.Close;
ADOQuery1.SQL.Add(order);
ADOQuery1.Open;
end;
刚申请的账号,加不了分,请多多见谅!
moklee 2008-07-31
  • 打赏
  • 举报
回复
searchfield 是表friends 的字段吗?

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧