Grid数据窗口保存

conyo 2011-08-19 03:24:20
一个PB的Grid数据窗口录入了数据后就是无法保存到数据库对的表,

请问具体是如何操作的?
...全文
175 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nate 2011-08-27
  • 打赏
  • 举报
回复
可以自DW的自定义事件中添加一回车事件,记得添加EventID里选择pbm_dwnprocessenter,代码如下:

IF THIS.AcceptText() < 0 THEN
RETURN 1
END IF

String ls_sdescribe,ls_msg,ls_colname
Long ll_row = 1
Int li_colnbr = 0


IF THIS.GetColumn() = Long(THIS.Object.datawindow.column.count) THEN
DO WHILE ll_row <> 0
li_colnbr++
IF this.FindRequired(primary!, ll_row, li_colnbr, ls_colname, TRUE) < 0 &
THEN EXIT
IF ll_row <> 0 THEN
ls_msg = "有(" + ls_colname + ")欄位必須輸入數據﹐但現在仍未輸入!!"
MessageBox("存盤時提示",ls_msg)
this.SetColumn(ls_colname)
RETURN 1
END IF
LOOP
IF THIS.Update() = 1 THEN
COMMIT USING sqlca;

IF THIS.GetRow() = THIS.RowCount() THEN
IF MessageBox("確定","是否繼續插入一行!?",question!,yesno!,1) = 1 THEN
THIS.TriggerEvent("ue_insert")
ELSE
THIS.Object.datawindow.READONLY = "YES"
RETURN 1
END IF
ELSE
RETURN 1
END IF
ELSE
ROLLBACK USING sqlca;
MessageBox("存檔","上筆記錄存檔失敗!!")

RETURN 1
END IF
ELSE
Send( Handle(THIS), 256, 9, Long(0,0))

END IF

RETURN 1
sunfor 2011-08-27
  • 打赏
  • 举报
回复
jf...
njwup 2011-08-27
  • 打赏
  • 举报
回复
1.检查一下你有没有数据库修改权限,
2.检查一下网络数据库并发有没有问题,
3.检查一下数据窗口update属性设置,将更新属性设置为仅主键(第一个选项)试试,
4.代码中有没有更改过该数据窗口的sql语句,如更改过,必须用代码将该窗口update属性重写一遍。
langxingcs 2011-08-26
  • 打赏
  • 举报
回复
表有主键吗?
ribut9225 2011-08-25
  • 打赏
  • 举报
回复
这个代码放在数据窗口的dberror事件里试试看
string ls_Err

ls_Err = "保存数据失败:" + "~r~n"
ls_Err = ls_Err + "错误数据行号:" + string(row) + "~r~n"
if IsNull(sqldbcode) then
ls_Err = ls_Err + "数据库错误代码:无" + "~r~n"
else
ls_Err = ls_Err + "数据库错误代码:" + string(sqldbcode) + "~r~n"
end if

if IsNull(sqlerrText) then
ls_Err = ls_Err + "数据库错误信息:无"
else
ls_Err = ls_Err + "数据库错误信息:" + sqlerrText
end if

MessageBox("错误提示[dw]",ls_Err)
nvhaixx 2011-08-25
  • 打赏
  • 举报
回复
查看要更新的表是不是已经选上;主键是否正确;更新方式是否是删除后插入
mmwmmw_bj 2011-08-25
  • 打赏
  • 举报
回复
“Rows → Update Properties”
是不是要保存的列都选上了,数据保存之前是不是accepttext()了。
DYFDWX 2011-08-24
  • 打赏
  • 举报
回复
顶一下,qq:38937513
liaosheng3042 2011-08-24
  • 打赏
  • 举报
回复
这个问题我也遇到过诶!
conyo 2011-08-23
  • 打赏
  • 举报
回复
上面兄弟说的都有操作还是不能解决

请兄弟加我QQ:981918309
yejihui9527 2011-08-22
  • 打赏
  • 举报
回复
“Rows → Update Properties”
dw_1.settransobject(sqlca)
dw_1.accepttext()
dw_1.update()
commit;
ribut9225 2011-08-22
  • 打赏
  • 举报
回复
数据窗口如果操作错误,会触发dberror消息,建议在dberror事件里写代码以获取错误信息及错误行数,然后记录到错误日志中
丫丫的小脚丫 2011-08-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yyoinge 的回复:]
在数据窗口设置界面
选择菜单“Rows → Update Properties”
在弹出的窗口中,将Allow Updates选项勾选
设置Table to Update
设置Updateable Columns
设置Unigue Key Column(s)
然后[OK]

代码中录入数据后写:
dw_1.accepttext()dw_1.update()
[/Quote]
yyoinge 2011-08-19
  • 打赏
  • 举报
回复
dw_1.settransobject(sqlca)
有写吗
conyo 2011-08-19
  • 打赏
  • 举报
回复

Long ll_Rows

ll_Rows = dw_1.ModifiedCount() + dw_1.DeletedCount()
if ll_Rows < 1 then return
if dw_1.Update() = 1 then
commit;
MessageBox('提醒您!','数据保存成功。保存了' + String(ll_Rows) + '条数据。')
else
rollback;
MessageBox('提醒您!','数据错误,请仔细检查。')
end if


都设置好了,语句如下,就是不能保存到数据库中的表
yyoinge 2011-08-19
  • 打赏
  • 举报
回复
在数据窗口设置界面
选择菜单“Rows → Update Properties”
在弹出的窗口中,将Allow Updates选项勾选
设置Table to Update
设置Updateable Columns
设置Unigue Key Column(s)
然后[OK]

代码中录入数据后写:
dw_1.update()

609

社区成员

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

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