ACCESS中的NZ函数,为什么用TADOQuery,发过去执行无效???

jb9802 2002-09-24 11:11:43
代码如下:
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select brandid,nz(trueq) from trialtable");
ADOQuery1->Open();

提示:nz未定义,可是这个语句在,ACCESS的查询是能执行的。
这是怎么原因呢?如果NZ不过用有别的办法决解空值问题吗?
...全文
53 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jb9802 2002-10-18
  • 打赏
  • 举报
回复
这个问题都快一个月了,咳,大家快来想想办法??
albert 2002-10-08
  • 打赏
  • 举报
回复
参考以下例子:

This example finds the average of the prices of all titles, substituting the value $10.00 for all NULL entries in the price column of the titles table.

USE pubs

GO

SELECT AVG(ISNULL(price, $10.00))

FROM titles

GO



Here is the result set:

--------------------------

14.24



(1 row(s) affected)


如果你想把空值变成0,用:
SELECT AVG(ISNULL(price, 0))
FROM titles
意思是把凡是Price的空值变成0之后求平均值。
jb9802 2002-10-08
  • 打赏
  • 举报
回复
ISNULL(price, 0),这个函数在SQL2000中是可以用的,但在ACSSESS中不行??
jb9802 2002-10-07
  • 打赏
  • 举报
回复
感谢: lingbin(林斌) 的帮助,你的办法用于显示是没有问题的。
我现在遇到的主要问题是在计算中空值是不是计算的,比如:
select (a.Field1+b.Field2) As F1F2
from a,b
where a.ID=b.ID
如果工表中的Field1有空值,不管B表中的Field2是不是空,计算出来的F1F2一定是空的????在查询中加入Nz后是没有问题的,但是BCB不支持??
lingbin 2002-09-30
  • 打赏
  • 举报
回复
写错了,
if(Field->AsString == NULL)
{
ADOQuery1->Edit();
Field->AsString = "0";
}应该改为:
if(Field->AsString.Trim() == "")
{
ADOQuery1->Edit();
Field->AsString = "0";
}

lingbin 2002-09-30
  • 打赏
  • 举报
回复
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select brandid,trueq from trialtable");
ADOQuery1->Open();
在DBGrid的OnDrawDataCell事件中写:
if(Field->AsString == NULL)
{
ADOQuery1->Edit();
Field->AsString = "0";
}
不过你不要用Post()函数,要不然就把0保存到数据库中了。
jb9802 2002-09-30
  • 打赏
  • 举报
回复
这个我也想过,不过有一些情况是一定会有空值得,比如我有左连接两个表的时候,因为右边表(被连接表)中不可以包含左边表中的所有记录是,生成的查询中就一定会有空值了。
lingbin 2002-09-30
  • 打赏
  • 举报
回复
那你在创建数据库是设置空的默认值为0,这样没有值它不就是0了。
albert 2002-09-24
  • 打赏
  • 举报
回复
同意lingbin(林斌)!
lingbin 2002-09-24
  • 打赏
  • 举报
回复
select brandid,nz(trueq) from trialtable
改为:
select brandid,trueq from trialtable where trueq is not null
jb9802 2002-09-24
  • 打赏
  • 举报
回复
不行呀,这个意思就不对了
select brandid,trueq from trialtable where trueq is not null
只返回trueq不空的那些,空的就反回不了,
我现在是想,空的记录也要返回,值要变成0;
很久没有布东东了,今天看到盒子上有朋友布了个三层的东东, 下来大概看了看,貌似使用起来不太方便,曾经用过ASTA和RmoObject,都不是那么让人满意,BUG多,并且庞大需要安装,使用十分不方便。 为了继续支持我喜欢的DELPHI和可爱的盒子, 特布个自己写的远程数据库对象希望能给大家平常的工作带来便利和高效(偶自己和同事们都用了挺长时间,十分稳定易用)。 用DELPHI的朋友少不了要和数据库打交道,一般小程序都使用ACCESS做数据库感觉十分方便,不用装服务端,客户端不用单独装驱动, 布程序时直接目录一拷贝就完事,但缺点是不方便从其它计算机对它进行访问, 有了偶这个东东,就可以很方便容易的实现咯。 ps : 就是连接Oracle和mysql,客户端也可以不用装驱动哦 使用步骤 解压后找个地方存放 将GobUnit目录添加到delphi的搜索路径 将DXSockEnt30(我改过bug的版本)的3个子目录也添加到delphi的搜索路径 即可使用和编译所有偶提供的代码 FAQ: 这个东东都提供什么功能? 答:提供最简单方便高效的方式,通过ADO对象实现远程数据库 这个东东为什么不封装成控件? 答:本类以单元形式封装,只要加到搜索路径后直接引用即可,无需经过安装等麻烦的步骤。 这个东东适合应用在什么场合? 答:适合应用于小型分布式程序。 这个东东掌握起来有难度吗? 答:没有任何难度,就和你开本地数据程序一样简单。 这个东东可以应用在我已有的程序里吗? 答:由于我使用的是AdoQuery作为数据集载体,所以无需更改为其他控件,现有的本地数据库程序也可以非常容易的改造为支持分布式数据库。 这个东东稳定吗? 答:经自己长期做小白鼠广泛的实际应用实践,现方便,稳定。 服务端的端口号是多少? 答:服务端的端口号可以随意设置,只要不和其他程序冲突就可以,并且客户端连接服务端时必须端口一致. 如果服务端重启了客户端需要重启吗? 答:不用,客户端只要连接上服务端以后就有自动断线重连的功能。 这个东东免费吗? 答:完全免费,并且开放所有源代码,你可以随意改进,传播它,当然如果更好用了,记得给我也一份 :)(要保留偶的版权和注释信息哦) 这个东东使用到了那些控件? 答:delphi的ADO控件,INDY,以及第3方Dxsock(服务端用)。 同时布的还有我自己积累的几个常用单元,有日志,调试,tcp的通用服务和客户端模块等,同样都是十分有用的东东。 这个东东有demo程序吗? 答:有最简单的示范程序,但时间关系只写了最简单的演示代码,还有很多值得你去挖掘的实用接口和单元。 我有了改进版本,怎么联系这个东东的作者? 答:QQ 22900104 ,Email 22900104@qq.com 马敏钊 布这个东东的目的是什么? 答:好用的东东大家分享,共同学习,共同进步,希望大家都能扬开源精神。 构架说明: 大概是这样的,偶有一个服务器对象,负责提供数据库服务,在需要提供数据服务的程序里创建它即可。 使用起来十分简单 首先引用服务端单元 uses UntRmodbSvr; //创建远程服务对象 (参数1 服务端口号 日志对象,如果不需要记录日志请填nil) Gob_RmoDBsvr := TRmodbSvr.Create(FSvrPort, nil); //连接数据库 可以是ADO支持的所有数据库 调用TDBMrg提供的获取各种数据库的链接字符串即可,这里连接Access数据库 Gob_RmoDBsvr.ConnToDb(TDBMrg.GetAccessConnStr('cfg.mdb')); 到此为止,2行代码使你的这个程序具有了将数据库布出去的能力,其它机器的程序可以方便的通过它访问到数据库,像使用本地数据库一样。 客户端只需连接服务端即可,不管服务端是什么样的数据库,无需安装任何数据库驱动。 uses UntRemSql; //创建客户端对象 RmoClient := TRmoHelper.Create(); //连接服务端 填入服务端地址和端口(与服务端端口一致即可) Result := RmoClient.ReConnSvr(ISvrIP, Iport); 2行代码使你的客户端程序具有了方便的访问到远端的数据库,像使用本地数据库一样,并且你原有的单机数据库程序可以很方便改为远程数据库。 具体使用方法可以查看DEMO程序 为了方便交流建了个QQ群,欢迎大家参与 15637473

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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