请各位高手看看是ADO的问题还是DELPHI本身的问题,非高手勿入,200分奉上。(200分)

  • 主题发起人 dreamblue
  • 开始时间
D

dreamblue

Unregistered / Unconfirmed
GUEST, unregistred user!
ADO+ORACLE的问题:
oracle 下的表结构
CREATE TABLE JSZ (
KEYNO VARCHAR2(18) NOT NULL,
CRQ VARCHAR2(8),
HTH VARCHAR2(14),
SHTH VARCHAR2(10),
FZXM VARCHAR2(8),
HM VARCHAR2(18),
ZZ VARCHAR2(40),
RK NUMBER(12, 2),
RDRK NUMBER(12, 2),
GDMJ NUMBER(12, 2),
ZZMJ NUMBER(12, 2),
PZ VARCHAR2(14),
JSSL NUMBER(12, 2),
ZL1 NUMBER(12, 2),
ZL2 NUMBER(12, 2),
ZL3 NUMBER(12, 2),
YKJE NUMBER(12, 2),
XRD VARCHAR2(10),
KFBH VARCHAR2(14),
YJYNO VARCHAR2(14),
JBR VARCHAR2(8),
COMM VARCHAR2(1),
SENDNO VARCHAR2(3),
PY VARCHAR2(4)
);

delphi 已经打过pack
ado 也已经打过补丁了
而且mdac的版本是2.5

使用adoquery 对其中一个子段进行查询语句如下
Query.Close ;
Query.Parameters.CreateParameter('HTH1',ftString,pdInput,10,unAssigned);
Query.Parameters.CreateParameter('HTH2',ftString,pdInput,10,unAssigned);
Query.Parameters.ParamByName('HTH1').Value:= '21021000000000';
Query.Parameters.ParamByName('HTH2').Value := '21021099999999';
Query.SQL.Clear ;
Query.Sql.Add('SELECT MAX(HTH) FROM JSZ WHERE HTH >:HTH1 AND HTH<:HTH2');
Query.ParamCheck := true ;
Query.Open ;

delphi 提示错误
Project project1.exe raised exception class eOleException whit message'ORA--00937:
NOT A SINGLE-GROUP GROUP FUNCTION ' process stopped . use step or run to continue .
 
我刚刚试了一下,问题的原因是ADO的提供程序的问题,你不能选择 Microsoft OLB DB Provider for Oracle
要用 Oracle Provider for OLB DB 就没有任何问题!用ADO 连 Oracle 是应该选择这个!
Microsoft OLB DB Provider for Oracle 常常会有问题!
Good Luck!
 
:macrozeng
请问Oracle Provider for OLB DB 是从哪里来的,我们安装的是ORACLE8.16的版本,安装
ORACLE8.16后,提供者中并没有出现Oracle Provider for OLB DB ,请问要安装什么软件
才能在提供者中有Oracle Provider for OLB DB呢?
 
非常高深,果然看不懂:).
 
我这里也是8.1.6
提供者中是有Oracle Provider for OLB DB 的
如果你哪里不出现的话,可以到oracle网站上下载它的专门驱动程序
good luck
 
是的,安装客户端的时候选择 development Tools 8.1.6.0.0 中就有!(development
模式中是缺省安装的!),你也可以选择自定义安装,选上它就好了!
你当然也可以到oracle网站上下载它的专门驱动程序 ,
注册时随便添一个就好,是免费注册的!
 
macrozeng:
您好,问题已经解决了
但是这样,我们服务器端用的是 oracle 8.0.5,客户端用8.1.5,SQL语句执行后到了服务
端就成了乱码,不知道是何原因?
你有高招吗?
 
你的客户端的字符集应该和服务器端的字符集保持一致!
用 select * from V$NLS_PARAMETERS 查看服务器端字符集!
在客户端运行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE,
第三步选择 ORACLE, 第四步选择 NLS_LANG, 键 入 与服务器端相同 的 字 符 集
 
谢谢macrozeng, 你真是个好人,呵呵
给分
 
顶部