Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90338881
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: DB2/Informix

2008-03-20 22:12:44

作者:oldbank  出处:
-6011        文件结束。

对NEXT行的dbfind()调用没有得到数据。到达了表尾。

-6012        文件开始。

对PRIOR行的dbfind()调用没有得到数据。到达了表头。

-6014        没有这样的标志值。

这个函数的标志参数不是一个被定义的值。当调用带有预先定义的标志值的函数时,
应该使用定义在包含文件dbio.h中的名称;并且必须只传递为特定的函数定义的值。

-6015        表名尚未打开。

这个函数指定的表名必须首先用dbselect()打开。回顾程序逻辑并确认这已完成。

-6016        没有视图被设置。

调用dbfind()前,程序必须建立一个视图,这就是说,一个返回字段的说明,和接受
它们的缓冲区。这通过调用dbsetview()完成。回顾程序逻辑并确定这已完成。

-6017        不能增加一个重复的值;索引已经被定义为唯一的。

出现在dbadd()中的字段值至少有一个和已经存在的字段的值重复。而字段被约束为包
含唯一的值。这一行不能被插入。

-6018        表名尚未打开。

dbadd()使用的表必须首先被dbselect调用打开。回顾程序逻辑并确定这已完成。

-6019        没有设置视图。

在调用dbadd()之前,程序必须建立一个视图,这就是说,一个对返回字段的说明和接
受它们的缓冲区。这在调用dbsetview()时完成。回顾程序逻辑并确定这已完成。

-6020        没有当前行。

dbdel()和dbupd()函数在上一次用dbfind()选择的行上操作。回顾程序逻辑确认已调
用dbfind()建立了一行。如果调用是dbfind()自身,它传递一个象CURRENT这样的标志
假设一行已经在以前的调用中被选定,但没有任何东西。

-6021        表名尚未打开。

被dbdel()使用的表必须首先被-dbselect调用打开。回顾程序逻辑以确定这已完成。

-6022        锁定被否认。

可能表已经被其它进程锁定。程序应该等待一段短的时间并再次试图锁定。如果状态
依旧,程序应该回滚其事务并重试整个操作。

-6023        表名尚未打开。

被dblock()或dbunlock使用的表必须首先被一个dbselect调用打开。回顾程序逻辑以
确认这已完成。

-6024        内存分配错误,内存不够。

在特定的操作中内存分配用于保持内部的数据结构。在这个调用中,内存分配失败。
打开更少的表并且/或者建立dbview结构时使用更少的字段可能避免这个问题。

-6025        表已经打开。

dbselect()调用传递的表的名称已经打开。表继续被打开。回顾程序逻辑以确认是否
有一个冗余的dbselect()调用。

-6026        命名的字段必须被索引或必须选择顺序搜索。

这个dbselfield()调用命名了一个在数据库中没有索引的字段,但是传递的标志是
ACCKEYED。确认命名了正确的字段并且正确的数据库已经打开。如果是那种情况,索
引已经失去并且应该在重新运行程序前重建。

-6027        不能插入一个NULL值到一个NOT NULL字段。

这个dbadd()或dbupdate()调用试图插入一个包含一个null值的行到一个被约束为
not-null的字段。这可能因为程序用dbsetnull()在记录缓冲区放置了一个null;或者
因为当前的视图忽略了一个被约束为not-null的字段。这行没有插入。回顾表的定义
和程序逻辑并修改以使所有not-null字段在添加或更新前被定义。

-6028        表名还没打开。

dbupdate()使用的表必须首先被一个dbselect调用打开。回顾程序逻辑并确认这已经
完成。

-6029        没有视图被设置。

调用dbupdate()前,程序必须建立一个视图,这就是说,一个返回字段说明和接受它
们的缓冲区。这在调用dbsetview()时完成。回顾程序逻辑并确定这已完成。

-6030        不能增加一个重复的值;索引已经被定义为UNIQUE。

至少有一个出现在dbupdate()的字段的值与已经存在的字段的值重复。但是,那个字
段被限定只包含唯一的值。这行不能被插入。

-6031        用户没有SELECT指定字段的SQL许可。

运行这个程序的用户帐户没被授予在当前表中或选定的特别字段中SELECT的权限。数
据库权限是用SQL语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权
限,再重新运行程序。

-6032        用户没有在表中INSERT行的SQL许可。

运行这个程序的用户帐户没被授予在当前表中INSERT的权限。数据库权限是用SQL
语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权限,再重新运行程
序。

-6033        用户没有UPDATE指定字段的SQL许可。

运行这个程序的用户帐户没被授予在当前表中UPDATE的权限。数据库权限是用SQL
语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权限,再重新运行程
序。

-6034        用户没有在表中DELETE行的SQL许可。

运行这个程序的用户帐户没被授予在当前表中DELETE的权限。数据库权限是用SQL
语句GRANT设置的。用数据库中一个有DBA权限的用户设置所需的权限,再重新运行程
序。

-6035        没有当前行。

传递给dbfind()的标志参数含有一个当前行的意思(例如,一个CURRENT或NEXT
标志是与FIRST中的一个相对的);但是,没有当前行被以前的调用建立。
回顾程序逻辑并确定在一个这样的调用前建立一个当前行。

-6036        一个别名名称与数据库中一个已经存在的表名一样。

传递给dbalias()的新名称参数已经在数据库中作为一个表存在。回顾程序逻辑并修改
以使用唯一的别名。

-6037        一个以前使用过的别名名称。

传递给dbalias()的新名称参数已经在前面的调用中作为别名被定义过。一个别名在一
个程序的运行中只能被定义一次。回顾程序逻辑并修改使得别名只使用一次。

-6038        该别名不能是已存在的别名的别名。

dbalias()中出现的旧名参数已经作为别名在先前的调用中定义过了。程序可以为表
定义多重别名,但不能为另外的别名定义别名。检查程序逻辑,修改它,使该旧名参
数是数据库中的真正表的名字。

-6040        在数据库中找不到表名的别名。

dbalias()中的旧名参数作为表的名字在当前数据库中找不到。检查参数值;如正
确,也许当前数据库是错的,或想要的表被改名了。

-6041        字段号比表中的字段数多。

提供给dbnfield()的字段参数多于所传表中的字段总数。如果程序的字段号从零往
上循环,本返回代码说明表的结束。否则检查所传的号,如正确,不是当前数据库是
错误的,就是表被改过了。

-6042        传给dbprusing函数的格式不对。

传给dbprusing()的格式串不被接受。检查所传的值,参考INFORMIX-4GL中REPORT
功能的参考资料中描述的USING函数的规则。

-6043        该字段不是复合键。

传给dbselfield()的字段名参数不是指定表中的字段名,也不是其中的复合索引
名。检查表名和字段名。如它们都对,确认所用的数据库是否正确。如果是这样,应
取消所期望的索引,或用另外的名字建立它。

-6044        字段号比复合键中的字段数多。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6045        无字段或索引被选中。

程序调用dbfind()之前,必须调用dbselfield()来建立一个检索方法。即使不用
索引也要这样作。检查程序逻辑,确认它被做了。

-6050        错的键描述:内部错误。

该错误不应发生。最可能的原因是内存中由ALL所用的内部数据结
构被重写了。检查程序逻辑。当你确认程序未曾存入ALL数据时,记录所有信息,并与Informix 技术支持部门联系。
-6052        该表的当前视图未包含所有的复合索引。

当程序调用dbselfield()来设置一个复合索引时,该索引的所有字段必须包含在由调
用dbsetfileview()或dbstructview()所建立的当前视图中。检查程序逻辑,尤其
是后两个函数的调用,确认这些都作了。如果视图如你所设,可能是复合索引已被
取消,用一个或多个不同字段重新建立它。

-6055        BEGIN WORK错。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6056        COMMIT WORK失败。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6057        ROLLBACK WORK失败。

这是内部错误。如错误再次发生,记录所有情况,并与Informix 技术支持部门联系。

-6062        当表中的任一字段允许是空指针时,Dbsetfileview函数不能用。

因为它构造的缓冲区没有对齐,dbsetfileview()不能为可能是空指针的字段生成缓
冲区。

-6063        空指针参数。

该函数的参数应包含一个指向内存的指针,实际参数中却包含一个C的空指针(0)。
检查程序逻辑看错误是如何发生的。

-6064        想结束一个未开始的事务。

当事务无效时,程序调用了dbcommit()或dbrollback()。或未调用dbbegin()
来开始一个事务,或事务已由于对dbcommit(),dbrollback()或dbselect()的
调用而结束。检查程序逻辑,看错误是如何发生的。

-6065        数据库无事务。

由于当前库不支持事务,所以对dbbegin(),dbcommit()或dbrollback()的调用
是不合适的。可以对数据库进行转化,使之支持事务;参看数据库服务器参考手册。

-6066        数据库服务器协议错误。

这是个不应该发生的内部错误。如错误再次发生,记录所有情况,并和Informix的技
术支持部门联系。

-6067        想在事务之中将一个表进行解锁。

这是事务内部调用dbunlock()错误,即在调用dbbegin()和调用dbcommit()或
dbrollback()之前。当使事务处理时,所有的锁必须保持直到事务被提交或滚回。
结束事务自动解除所有的锁。

-6068        数据类型不被支持。

某个字段的数据类型不被这个版本的ALL支持,例如BYTE数据类型。检查实际表所需的
字段,只能用数值或CHAR数据类型的字段。

-6069        想在事务之外锁定一个表。

当用一个有事务的数据库时,事务范围之内的所有表都要被打开,就是说,在对
dbbegin()成功调用之后。检查程序逻辑看这是否已完成。可能自从程序最后一次被
调用以来,事务日志已被用于数据库了。

-6070        试图关闭一个有活动事务的数据库。

在用dbselect()函数关闭数据库之前程序必须结束当前事务。这可以通过调用
dbcommit()函数或dbrollback()函数来解决。
例如,你收到-7028号错误信息,它在-7000到-7199之间,你就要查询光盘子系统
开发商手册中的错误号。你将在手册中的28号查到该错误信息。

-7000        <错误号>7000错误由光盘子系统引起。参考适当的子系统手册。

在所用的子系统文档中检查错误号。

-7202        数据库建立没有NLS功能.

你试图在一个非NLS数据库中建立一个NCHAR(或NVARCHAR)字段,或说明一个NCHAR(或
NVARCHAR)变量.

-7203        DBNLS未被设置或LC_COLLATE必须是范畴值。

当你试图对一个与当前数据库变量的位置不同的外部数据库变量进行访问时,该信息
出现。为用该NLS数据库,你必须将DBNLS环境变量设置为1或2,设置LC_COLLATE环境
变量为指定的范畴值。

-7204        LANG或LC_COLLATE环境变量无效。

LANG或LC_COLLATE环境变量设置无效。将其中的一个或全部设置成你的系统支持的值

-7205        DBNLS未被设置或LC_CTYPE必须被设置为范畴值。

当你试图对一个与当前数据库有不同位置的外部数据库进行访问时,本信息可能被返
回。为存取该NLS数据库,你必须将DBNLS环境变量设置为1或2,并设置LC_CTYPE
环境变量为指定的<范畴值>。

-7206        LANG或LC_CTYPE环境变量无效。

LANG或LC_CTYPE环境变量的设置无效。将其中的一个或全部设置成你的系统支持的
值。

-7207        LANG或LC_MONETARY环境变量无效。

LANG或LC_MONETARY环境变量的设置无效。将其中一个或全部设置成你的系统
支持的值。

-7208        LANG或LC_NUMERIC环境变量无效。

LANG或LC_NUMERIC环境变量设置无效。将其中之一或全部设置成你的系统支持的值。

-7209        LANG或LC_TIME环境变量无效。

LANG或LC_TIME环境变量设置无效。将其中之一或全部设置成你的系统支持的值。

-7210        该服务器没有NLS功能。

当你想从一个无NLS准备的数据库服务器存取数据时,返回该信息。该数据库服务器不支持NLS。同Informix联系,获得支持NLS的版本。
-7211        无法引用外部NLS数据库。

如果你的当前数据库不是NLS数据库,你就不能在另一个或同一个数据库服务器访问
NLS数据库。但是,如果NLS环境变量设置正确,即使你的当前数据库不是NLS数据库,
你也可以取消一个NLS外部数据库。

-8001        为TOP MARGIN,FIRST PAGE HEADER(PAGE HEADER),PAGE TRAILER,
BOTTOM MARGIN指定的换行数必须在页中为ON EVERY RECORD子句的打印留出足够
的空间。

为上述语句定义的行总数超出了页长。检查在OUTPUT节的每条语句中,在FORMAT节中
的header,tailer说明中,是否输入了所期望的行数。

-8002        ACE报表说明太大或太复杂,不能正确地编译。实现该说明所需的指令数超过
了编译器的指令表中分配的空间的大小。

减小报表长度。既然你无法分块编译报表,那你必须想法简化报表。

-8003        SMALLINTEGER常数不能比32767大。

SMALLINT的值的允许范围是-32767到32767。所有数只允许用数字字符表示。

-8004        非法的FLOAT常量。

FLOAT常量写得不对。指数可能太大或太小(指数范围依赖于你的计算机和操作系统,
但和你的C编译器允许的DOUBLE数据类型范围一样),或有不正确的标点或有除"e."
非数字字符。

-8005        定义了太多的用户变量,参数或函数。你定义的数量不能超过ACE说明中规定
的<数量>。

为ASCII字段,参数,变量定义的标识符总数不能超过显示的数。你要简单化你的
报表。

-8006        引号中的串长度不能超过80个字符。

你必须减小引号中的长度,使之不超过80个字符。在PRINT语句中,将串简单分为较短
的各部分,用逗号分隔。

-8007        一个被引的串中的引号不匹配。

报表说明的该行有奇数个引号(")。引号中的串不能包含换行符,所有的引号串必须
在一行中完成。要想打印一个长的串,将它的各部分存在变量中,然后在PRINT
语句中将它们都列出来。

-8008        文件<文件名>无法打开。操作系统被要求为读而打开它。

检查文件名的拼写。检查它确实存在,且你的帐户有权读它。如果它所在目录并不是
当前目录,你应输入完整的路径名。

-8009        发生了内存分配错误。ACE报表说明可能太大了。

ACE编译器不能分配所需的内存。想法减小报表说明的规模。

-8010        文件<文件名>无法打开。操作系统被请求为写而打开它。有可能是文件存在
但用户无权写它。或者,用了-o选项,但目标目录并不存在。

确认文件名拼写正确,且你的帐户在它的目录下有写的权限。(该目录可能在DBTEMP
环境变量中命名)。如同名文件已存在,或删掉它,或确认你的帐户对它有写的权
限。

-8011        调用的用户函数<函数名>还未被用户定义过。

现在调用了所显示的函数。ACE把它当做外部C函数。但是,外部函数必须在报表的
DEFINE节用FUNCTION语句定义过,但该函数名未被定义。如果该名字确实是外部函数
名,则为它插入一个FUNCTION语句。

-8013        想打开列表文件<文件名>时发生错误。确认当前目录下用户有写文件的权限。

确认你的帐户对当前目录有写的权限,且如果当<文件名>已经存在时,你的帐户对它
有写的权限。

-8014        用法:SACEPREP[-q][-o <输出目录>] <输入文件名>(等等)。

你输入的命令行中有些东西使SACEPREP命令无法接受。读该信息,记住各种选项的句
法格式。重敲命令行。

-8015        在<行号>行,<字符数>处开始的注释内又发现了开注释符号‘{’。这可能是
由于未关闭前面打开的注释,它起始于<行号>行,<字符数>处。

不应用嵌套注释。在报表说明中合适的地方插入关注释符号。

-8016        注释打开了却未关上。最后一个注释起始于<行号>,<字符数>处。

在报表说明中合适的地方插入关闭注释符。

-8017        在<行号>行,<字符数>的字符处发现非法(不可见,控制)字符。它在列表
中被一个空格代替,但它仍在源(输入)文件中。重新编译之前应该先删掉它。

用字处理编辑器在文档方式而不是在文本方式下编辑时,可能引入非法字符,或编辑
时敲了非显示字符,或是由于数据的损坏。

-8018        <行号>行,<字符数>处发生语法错误。结构在上下文中无法理解。

源文件中有句法错误。可能拼错了某个关键字或在文件中的位置错误。检查报表说明
文件中关键字的拼写和控制块的次序。

-8019        无法为读TEXT字段而打开临时文件<文件名>。

对每个为报表选择的TEXT字段,ACEGO要在DBTEMP环境变量中命名的目录下准备一个临
时文件。该信息说明该文件已被建立,且TEXT的一份拷贝也已载入,但现在不能读。
查看操作系统的出错信息,那里可能给出更多的细节。如果错误再次发生,记录所有
信息,并与Informix技术支持部门联系。

-8021        源文件<文件名>打不开。也许因为该文件不存在。

检查文件名的拼写。检查当前目录下是否有该报表说明文件,或是否在另一个目录
下,你提供的路径名是否正确。如果上述都没问题,确认你的帐户对该文件有读的权
利。

-8022        该标识符超过了标识符的最大长度50。

你必须用一个短一点的标识符。

-8025        在<行号>行,<字符数>处发现注释结束符 "}",但没有注释的开始。

除非它们被括在引号之中,否则注释符号必须匹配。可能是因为编辑时不小心删掉了
注释开始符。修改文件,使注释被正确定界。

-8030        在<行号>所指的行,<字符数>所指的字符处发生排印错。

所显示位置的单个字符无句法错误,但它不能被解释为报表说明的一部分。

-8033        源文件<文件名>超出了最大长度10。

屏幕表格编译器对源文件标识符有一个长度限制。你用该文件时必须把它改名。在DOS
系统下,文件名最长为8字符加3字符的扩展名。

-8034        命令行中出现了未知选项<选项>。

ACEPREP支持的命令行选项有如下几条:
*    -s   用于将消息隐蔽起来。
*    -o   用于命名输出。
*    -ansi 用来检查ANSI兼容性 
    ACEGO支持的命令行选项有:
*    -s  用于将消息隐蔽起来。
*    -d  用于命名一个数据库。

-8051        LEFT MARGIN必须不小于零,不大于RIGHT MARGIN。

修改OUTPUT节中的LEFT MARGIN或RIGHT MARGIN语句,使之具有合理值。

-8052        编译器的串表中没有足够的空间用于存储CHAR变量。

减小报表说明中字符型变量的长度,或减少其数量。

-8053        PAGE LENGTH,TOP MARGIN,BOTTOM MARGIN都不允许比零小。

修改OUTPUT节中的语句,使之具有合理值。

-8054        串<串>无法放入编译器串表的剩余空间中。

减小报表说明中的串长度或减少其数量。相同的串只存一次。

-8055        该常数使ACEPREP中的常数表溢出。

减少报表说明文件中的数值常量数。

-8056        不允许在PAGE HEADER或TRAILER中的WHILE或FOR循环里有跳行。

ACEPREP需要决定分配给header和tailer的行空间(否则将无法决定每页具体会有多少
行)。它无法预言一个循环将执行多少次,所以它不得不禁止那些部分中的SKIP
语句。

-8057        LET语句中只有CHARACTER类型的用户变量可以有列表或加下标。

你只能对一个字符型变量的名字用下标(方括号中的两个数,用于提取字符串中的某个
子串)。在LET语句中,你可以把多个串赋值给一个变量,,串之间用逗号分隔。其它
类型变量只能接受单一的值。

-8058        ASCII显示字段<显示字段名>已被定义。

一个显示字段名只能定义一次。DEFINE节中的显示字段名必须唯一。也就是说,一个
名字不能同时用于PARAM和显示字段。

-8059        IF语句嵌套溢出。IF语句中含有过多的IF语句,使ACE无法正确编译该报表说
明。

你的IF语句嵌套超过了最大允许级数,你必须简化报表的逻辑。

-8060        报表说明中过早出现文件结束符。

ACEPREP在它仍需输入时遇到了报表说明文件的结束符。你可能忽略了一个END语句。
至少需要一个FORMAT节,它至少包含一个EVERY ROW语句,且每个控制块至少有一条语句。

 
阅读(866) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~