數據窗口取錯自動ID,誰來救救我啊!!!(急)

zyf32145 2010-10-18 12:24:32
表A新增一行數據時, 觸發器插入一行到表B
連接參數中設置
dbparm = "Identity='SCOPE_IDENTITY()'"
為什麼表A數據窗口返回的還是表B的自增長ID呢?
這樣資料就錯了, 有什麼辦法讓表A返回自己的ID嗎


有沒有兄弟救救我啊!!!
...全文
158 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
leef_zh 2010-10-25
  • 打赏
  • 举报
回复
用SNC需要注意mssql2000与2005的不同点

bit值类型
sql2005的bit为TRUE, FALSE
SQL2000的BIT为1, 0

用SNC连SQL2000, PB数据窗口BIT列会返回-1
zyf32145 2010-10-22
  • 打赏
  • 举报
回复
在程序中, 使用下面的方式取得ID是正確.
Declare my_cursor Dynamic Cursor For sqlsa;
Prepare sqlsa From 'Select SCOPE_IDENTITY()' using sqlca;
Open Dynamic my_cursor;
Fetch my_cursor Into :li_identity;
Close my_cursor;
PB11.5的Identity='SCOPE_IDENTITY()'參數設置沒起到作用

zyf32145 2010-10-22
  • 打赏
  • 举报
回复
重新做了一支程序測試, 也重新畫了數據窗口.
數據窗口就是一個表A, 最大ID: 230.
觸發器中插入了B表, 最大ID: 25
A表插入一行, 保存數據後, 自動返回ID: 26

PB還是取Identity='@@IDENTITY'的方式返回ID

有沒有其它途徑設置Identity呢.
leef_zh 2010-10-22
  • 打赏
  • 举报
回复
// Profile asd
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)"
SQLCA.LogPass = <********>
SQLCA.ServerName = "server"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Database='database_name',Identity='IDENT_CURRENT()'"

改用SNC SQL Native Client(OLE DB)連接搞定
WorldMobile 2010-10-21
  • 打赏
  • 举报
回复
重新画一个数据窗口试试


如果不行,把触发器屏蔽掉再试试
zyf32145 2010-10-21
  • 打赏
  • 举报
回复
繼續等待高手現身
zyf32145 2010-10-20
  • 打赏
  • 举报
回复
沒有人知道嗎??
zyf32145 2010-10-19
  • 打赏
  • 举报
回复
是以前從10.5升到11的, 10.5的時候還好好的, 到11就不行了.

用代碼也不好辦了, 都不記得哪些觸發器中有insert數據到其它表了.
lightsword1 2010-10-18
  • 打赏
  • 举报
回复
这个和数据库的设置有关系,如果对所用数据库不熟悉的话,用代码倒可以更好掌控
zyf32145 2010-10-18
  • 打赏
  • 举报
回复
暫時是先用代碼控制了, 先頂著用一下.

希望能有辦法能取到正確的ID

以後再也不用自動ID了!!
wag_enu 2010-10-18
  • 打赏
  • 举报
回复
这个不知道,
...

取消触发器,用代码控制写入表B

609

社区成员

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

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