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;
...全文
107 14 打赏 收藏 转发到动态 举报
写回复
用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 的字段吗?
PowerBI系列之Power Query专题1.  获取数据 数据源种类介绍和获取Excel数据源输入数据和拷贝数据:创建辅助表解析Json/XML数据格式获取Web网页数据和URL添加动态参数连接数据的四种模式:Import、DirectQuery、Live Connection、Dual双 属于混合模式连接数据库:Sql server、 Mysql(直连但是必须先安装一个mysql插件)DirectQuery直连查询:Sql serverODBC方式获取数据表关联或多个Sql或调用存储过程获取数据SQL中动态传参和自定义函数: sql中使用参数或数据库名称使用参数连接Sharepoint和OneDrive数据源连接Dataset和Dataflow 替换本地数据源为Sharepoint数据源并保留数据处理操作 终止当前数据刷新Loading:Cancel Query数据源设置-重置数据连接凭证PBIDS连接数据源创建和使用报表模块(输入或值列表)利用报表模板和参数控制线下报表数据权限DirectQuery启用自动页面刷新和更改检测管理聚合表提高DirectQuery查询性能动态M查询参数提高DirectQuery查询性能添加数据刷新时间 DateTime.LocalNow()和Getdate()2.  数据清洗和M语言M语言和官方文档介绍PowerQuery中查阅M函数:=#shared, Ctrl+Space提示数据清洗之常用技能:提升标题、更改数据类型、保留删除错误或空行,删除重复项、选择列和删除列、填充单元格、合并列、拆分、提取、替换、条件替换、添加自定义列,添加条件列、添加索引列、分组、添加年月日列、追加和合并查询透视和逆透视以及转置合并单元格的Excel文件处理导入文件夹中多Excel文件并合并解决多文件合并中列顺序不一致使用参数和函数批量导入文件 文本中提取中文、英文、数字等处理双引号转义 列拆分详解解决列名改变错误解决列丢失错误动态显示、排序和重命名列为所有列名添加前缀列名字母大写和分隔符调整Trim标题列中的多余空格如何处理load数据错误为什么load的Excel数据有null空行为什么load的Excel数据标题在第二行灵活添加占位符规范同类相似数据数据按多列排序为分组添加Index序号分组内值合并诊断工具分析数据处理过程PowerQuery小技巧分享 新冠病例活动轨迹地图标识 

2,498

社区成员

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

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