可用存储区不足,无法完成此操作(在线等待)(100分)

  • 主题发起人 主题发起人 wangjb
  • 开始时间 开始时间
W

wangjb

Unregistered / Unconfirmed
GUEST, unregistred user!
我以前用MS的old db for oracle没有出现此问题,单改为oracle的OLE DB后出现此问题
详细说明
我在一个ADOQUERY中写以下语句:
SELECT * FROM TABLE WHERE 1=2;
没有问题.
但写以下语句:
SELECT * FROM TABLE WHERE FNO=:TEMPNO;
在PARAMETERS中也设定DATATYPE为FTSTRING
打开时.则出现:可用存储区不足,无法完成此操作;


 
你是如何对参数赋值的?
 
我想最好用配套的驱动
Oacle.com 有专门的驱动下载 每个版本都不同 8.1.6 > 8.1.7 > 9I
 
ado连接还是不要用ORACLE的OLE DB了,最好用MS的,否则你会发现有些SQL语句执行完了
后得到的结果不是你想要的(这可是忠告)
 
FNO 这个字段是什么类型的?
 
从经验角度讲,一切应以M$为准绳
 
itren
我的驱动配套.
jixiaoyu
能举个例子么?
jsxjd,antic_ant
parameters.parambyname('fno').value:='aaaa'
 
如果是字符型的,试试以下吧!

parameters.parambyname('fno').value:='"aaaa"'

parameters.parambyname('fno').value:='''aaaa'''
 
我从不用PARAMETERS,只用 format格式化字符串
format('SELECT * FROM TABLE WHERE FNO=''%s'';',['aaaa']);
 
ysai,你好
你用的是什么驱动,是ORACLE的吗?,是不是出现过问题
 
只要是支持的SQL语句都行
 
to ysai:
关注!多给大家讲讲!
 
如果ORacle的OLEDB老是出问题,你最好是换个驱动试试,微软的OLEDB是win98第二版以后
自带的,可能在Windows兼容性比Oracle的好,我以前用的是Oracle的7.1版本,非常难配。
 
简单的例子
Const
//查询需要采购的材料及数量
SSQLStockStuff = '(SELECT 材料,单位,库存数量,需求数量,预警数量,最小采购数量,'+
'-INT(-(需求数量+预警数量-库存数量)/最小采购数量)'+
'*最小采购数量 AS 计划采购数量,供应商 '+
'FROM 材料 '+
'WHERE 需求数量+预警数量-库存数量>0)';
//根据需要采购的材料数量生成采购计划单
SSQLMakeStockPlan = 'INSERT INTO 材料采购计划 '+
'SELECT * FROM %s';
//---------------------------------------------------------------------------
//是不是要采购材料
if GetRecordSetCount(format(SSELECT,['COUNT(*)',SSQLStockStuff]))=0 then
MsgBox(SNoStockStuff,Caption)
else begin
ExecuteSQL('DELETE * FROM '+STabStockPlan);
ExecuteSQL(format(SSQLMakeStockPlan,[SSQLStockStuff]));
ADSMaster.Requery;
end;
 
使用ADO来操作ORACLE,似乎老是问题多多。不过,不知你的ADO有没有升级。最新的好像是
ADO2.6了,你要保证自己的版本是最新的。另外,你用ADO就最好用MS自己的引擎,如果你
用BDE,就用Oracle自己的Ole DB。
许久不用Oracle了,现在没有这环境,不然可以试一下这个。
实在还有问题,你可以暂时用SQL语句代过去,以后再想法子,免得影响进度。
 
我现在又换回MS的驱动了,ADO2.7,好象不出现问题了.
再次感谢大家的支持.分数就均分吧.
 
后退
顶部