我想用DELPHI调用ACCESS内部的EVAL()函数 多分

FCU 2008-05-24 09:17:03
adoquery1.close;
adoquery1.sql.text := 'select eval("1+1") as tt';
adoquery1.open;

======
提示EVAL()函数未定义,怎么办啊???

CWWW和高手们帮我想想解决办法吧,十分特别的急,多分奉上!!!
...全文
74 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2008-05-27
  • 打赏
  • 举报
回复
完善:
procedure TForm1.Button1Click(Sender: TObject);
var dd:string;dd1:string;
begin
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from ttu');
adoquery1.Open;
while not adoquery1.Eof do
begin
adoquery2.Close;
adoquery2.SQL.Clear;
dd1:='select '+ adoquery1.FieldByName('A').AsString+' as ff';
adoquery2.SQL.Add(dd1);
adoquery2.Open;
dd:=adoquery2.FieldByName('ff').AsString;
showmessage(dd);
adoquery1.Edit;
adoquery1.FieldByName('B').AsString:=dd;
adoquery1.UpdateRecord;
adoquery1.Next;
end ;

end;
wwwwb 2008-05-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 ccssddnnhelp 的回复:]
Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb

试试这个connection string,我用VB测试,完全可以啊"select eval(1+1) .....
====思想重于技巧====

.
贴子分数 <20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
reply via CSDN viewer
[/Quote]
用ADO?在DELPHI测试,提示EVAL未定义
wwwwb 2008-05-26
  • 打赏
  • 举报
回复
上个帖子没有说明运行环境,所以提问时,要说明运行环境、记录及正确结果,
节约大家与你的时间、资源。
wwwwb 2008-05-26
  • 打赏
  • 举报
回复
自行修改代码
wwwwb 2008-05-26
  • 打赏
  • 举报
回复
示例:
var dd:string;dd1:string;
begin
adoquery1.SQL.Clear ;
adoquery1.SQL.Add('select * from ttu');
adoquery1.Open;
while not adoquery1.Eof do
begin
adoquery2.Close;
adoquery2.SQL.Clear;
dd1:='select '+ adoquery1.FieldByName('A').AsString+' as ff';
adoquery2.SQL.Add(dd1);
adoquery2.Open;
dd:=adoquery2.FieldByName('ff').AsString;
showmessage(dd);
adoquery1.Next;
wwwwb 2008-05-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liuyann 的回复:]
我用VB调用EVAL好象可以啊。
====思想重于技巧====

reply via CSDN viewer
[/Quote]
VB中有此函数,DELHPI中没有,
EVAL是VBA函数,只能在ACCESS中使用,在其它语言中只能用相应的函数 OR 
自己编写子程序调用 
FCU 2008-05-26
  • 打赏
  • 举报
回复
我用的是DELPHI

连接库的是一个Connection; (Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\新建 Microsoft Office Access 应用程序.mdb;Persist Security Info=False)
ccssddnnhelp 2008-05-26
  • 打赏
  • 举报
回复

Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb

试试这个connection string,我用VB测试,完全可以啊"select eval(1+1) .....
==== ====

.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
liuyann 2008-05-24
  • 打赏
  • 举报
回复

我用VB调用EVAL好象可以啊。

==== ====

FCU 2008-05-24
  • 打赏
  • 举报
回复
晕.我没有说清楚,表是这样的,1+1其实是一个字段里的值:

字段:

A(text)      B(float)

12*2 NULL

12.2*0.4 NULL

10*5 NULL

========================================
想得出如下结果:


A(text)      B(float)

12*2 24

12.2*0.4 4.88

10*5 50


===============================
高手们请帮帮忙,看用语句可不可以实现,ACESS的,THS!!!
liuyann 2008-05-24
  • 打赏
  • 举报
回复

adoquery1.close;
adoquery1.sql.text := 'select 1+1 as tt';
adoquery1.open;


这样就行了,不用EVAL, 你可以在DELPHI中生成你的算式,直接利用SQL得到结果就行了。

==== ====

liuyann 2008-05-24
  • 打赏
  • 举报
回复

你的connection string 是什么?

==== ====

jacknes009 2008-05-24
  • 打赏
  • 举报
回复
正如
[Quote=引用 3 楼 liuyann 的回复:]
我用VB调用EVAL好象可以啊。

==== 思想重于技巧 ====



reply via CSDN viewer

[/Quote]

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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