跪求一个困扰很久的问题

lionxrabbit 2007-07-19 09:03:25
大家好,我用的开发工具是 PB9 + DB2 服务器端的机器 是 IBM 400 .通过IBM 提供的 iseries access Odbc driver 我建了一个odbc .pb 连接如下 SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=cmstest;UID=jxie;PWD=jxie',CursorLib='ODBC_Cur_Lib'"
这个时候连接是可以成功的,但是会出来一个提示 " catalog tables could not be created and are not available for use " ,不管它.然后我建立了一个数据窗口.窗口 open() 里面代码是 :
dw_1.SetTransObject(SQLCA)
dw_1.Retrieve()
建立了一个保存的"按钮" 代码是 :
integer rtn

CONNECT USING SQLCA;
dw_1.SetTransObject(SQLCA)
rtn = dw_1.Update()
IF rtn = 1 THEN
COMMIT USING SQLCA;
ELSE
ROLLBACK USING SQLCA;
END IF
我一保存就会出现一个提示:
SQLSTATE = S1000
[IBM][iSeries Access ODBC Driver][DB2 UDB]SQL7008 - ADRS in CMSTEST not valid for operation.

No changes made to database.

UPDATE "CMSTEST"."ADRS" SET "QZADR2" = ? WHERE "QZADR" = ? AND "QZNAME" = ?
请问各位大哥大姐,这是什么原因造成的?应该怎么样解决?万分感谢,感谢
...全文
340 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzheng2001 2007-07-23
  • 打赏
  • 举报
回复
" catalog tables could not be created and are not available for use "
===============
从这个信息看,就很可能是权限问题,楼主检查了没有呀? 你试过换连接用户没有?
lywei 2007-07-23
  • 打赏
  • 举报
回复
数据窗口更新属性设置引起的
lionxrabbit 2007-07-23
  • 打赏
  • 举报
回复
应该不是,我是在源代码下面操作的.应该不用拷贝 odbc的所有相关dll文件拷到工作目录下吧.各位是否还有办法. 我拷贝了几个文件去,也不行
lionxrabbit 2007-07-23
  • 打赏
  • 举报
回复
大家好,首先感谢大家的支持.我终于搞定了,其实都不是上面讲的东东.是因为DB2 很犯贱.需要一个日志去保存新增/删除/更新时候的记录.所以如果你们遇到我的这种情况.那么采取的方式是:在绿屏里面录入命令
1 CRTJRNRCV JRNRCV(CMSTEST/JRNRCV01) TEXT('the receiver of jack jrn')
2 CRTJRN JRN(CMSTEST/TEMPJRN) JRNRCV(CMSTEST/JRNRCV01)
3 STRJRNPF FILE(CMSTEST/ADRS) JRN(CMSTEST/TEMPJRN) IMAGES(*BOTH)
上面的 CMSTEST 是你的库 JRNRCV01 是空间的名字 TEMPJRN 是日志的名字 ADRS 是表的名字.执行完成后就可以了.嘿嘿 .万分感谢大家.马上给分.
pcboyer 2007-07-23
  • 打赏
  • 举报
回复
唉,刚刚回答完,又看到了这个.
对于access来说,你使用ODBC的时候报这个错是因为ODBC版本问题.你换个低版本的PB试下.
对于Oracle或者其他同类数据库来说,这个错是由于你登陆的权限不够,PB在连接到服务器的时候要建立六个系统表,用于存储PB使用的表信息,而你权限不够的时候无法建立这六个表,所以会报这个错.
lionxrabbit 2007-07-23
  • 打赏
  • 举报
回复
连续换了2个能在winsql里面更新该表内容的用户,还是不行.难道就没有人用过 pb + DB2 吗?
lionxrabbit 2007-07-23
  • 打赏
  • 举报
回复
数据窗口更新属性设置引起的 ????啥意思?
zgda1234 2007-07-22
  • 打赏
  • 举报
回复
是 Odbc driver的问题
把odbc的所有相关dll文件拷到你工作目录下便可
lionxrabbit 2007-07-20
  • 打赏
  • 举报
回复
不好意思,兄弟还没搞好.等几天实在没人我就给你分了.
anvpp 2007-07-20
  • 打赏
  • 举报
回复
会不会是iseries access Odbc driver的问题
lionxrabbit 2007-07-20
  • 打赏
  • 举报
回复
奇怪的是我用这个账户在 winsql 这个工具里面能够更新数据.奇怪了
[IBM][iSeries Access ODBC Driver][DB2 UDB]SQL7008 - ADRS in CMSTEST not valid for operation.

No changes made to database.

UPDATE "CMSTEST"."ADRS" SET "QZADR2" = ? WHERE "QZADR" = ? 这里的提示为什么是 ? 号呢?奇怪了
lzheng2001 2007-07-20
  • 打赏
  • 举报
回复
很可能是连接数据库用户的权限问题,你没有足够的权限来更新表的数据. 请用更高权限的用户连接数据库
zhangwenqian 2007-07-20
  • 打赏
  • 举报
回复
connect using sqlca;此句放到应用的open事件里面
connect using sqlca 下面的dw_1.settransobject(sqlca)这句可以不要

其他的好像没什么了
zhangwenqian 2007-07-20
  • 打赏
  • 举报
回复
Solution

Powerbuilder creates its own catalog tables, but these are not necessary for an ODBC connection to DB2. This error message will only occur during development.
To disable this option from the connection, add an entry NoCatalog=1 in the PB.INI file for the database profile that you have configured for StarSQL. Here is an example:

[Database]
DBMS=ODBC
Database= STELLA
UserId= PETER
DatabasePassword= XXXX
LogPassword=
ServerName= STELLA
LogId=
Lock=
DbParm=ConnectString='DSN=DB2;UID=PETER;PWD=XXXX;'
Prompt=0
NoCatalog=1
zhangwenqian 2007-07-19
  • 打赏
  • 举报
回复
[Database]
DBMS=ODBC
Database= STELLA
UserId= PETER
DatabasePassword= XXXX
LogPassword=
ServerName= STELLA
LogId=
Lock=
DbParm=ConnectString='DSN=DB2;UID=PETER;PWD=XXXX;'
Prompt=0
NoCatalog=1

你加上最后一句话看看有没有效果啊!

要是有的话别网了给我加分

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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