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;
...全文
130 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 的字段吗?
内容概要:本文围绕“光伏-储能-数据中心”系统的容量优化配置展开研究,旨在通过构建数学模型并结合Matlab编程实现,对园区内光伏发电、储能设备与数据中心算力负荷之间的多能互补关系进行协同优化。研究综合考虑可再生能源出力的波动性、储能系统的充放电特性以及数据中心的动态用电需求与算力调度特性,建立以最小化综合成本、降低碳排放强度、提升能源自给率等为目标的多目标优化模型,并采用先进的智能优化算法(如粒子群、灰狼、鲸鱼等)进行求解,从而确定光伏装机容量与储能系统配置的最优方案。文中提供了完整的Matlab代码实现流程,涵盖数据预处理、模型构建、算法求解与结果可视化全过程,属于综合能源系统与信息基础设施深度融合的前沿交叉课题。; 适合人群:具备电力系统、能源工程、自动化或计算机等相关专业背景,熟悉Matlab编程与基本优化算法原理,从事新能源利用、绿色数据中心、综合能源系统规划与低碳调度等方向的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握光伏-储能-数据中心耦合系统的建模思路与多能流协同机制;② 学习基于Matlab的多目标容量优化配置方法与智能算法应用技巧;③ 为工业园区、数字经济园区及绿色数据中心的能源系统规划、节能减排与可持续运行提供科学决策依据和技术解决方案。; 阅读建议:建议结合所提供的Matlab代码,深入理解目标函数设计、约束条件设定及算法实现细节,可通过调整负荷参数、改变气候数据、引入新的优化目标或约束条件等方式进行拓展性实验,以深化对系统特性的认知并提升实际科研与工程应用能力。

2,508

社区成员

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

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