pb怎么保存数据窗口中添加的数据,保存到数据库表中!请给详细的思路!和代码参考!重谢
2个回答
展开全部
①首先要在窗口的open事件中写如下一句.dw_1.settransobject(sqlca)//譬如您要保存的数据窗口名字为dw_1;这计划的意义在于时刻保持与数据窗口月数据库表的连接. 亦或者双击Dw_1对象。选择 constructor事件 写下以上语句即可.
②然后在数据窗口中修改 或者添加数据.随后创建一个按钮或者事件 都行.用于保存.当然可以对应您的相应需要的校验都通过后才可保存.写如下代码进行保存数据.
if dw_1.update() >o then//更新保存数据; 1 -成功;-1-失败
commit;//提交数据
else
rollback;//回滚数据
end if
同时要注意 在数据窗口对象控件 即在 dw_1所用到的数据窗口对象编辑画板中的update properties 设置正常(即更新属性). 具体查看 打开rows选单-update properties-Allow updates挑对勾!-upateable columns 选中要可以提交更新保存的字段.随后点击ok保存配置 即可
②然后在数据窗口中修改 或者添加数据.随后创建一个按钮或者事件 都行.用于保存.当然可以对应您的相应需要的校验都通过后才可保存.写如下代码进行保存数据.
if dw_1.update() >o then//更新保存数据; 1 -成功;-1-失败
commit;//提交数据
else
rollback;//回滚数据
end if
同时要注意 在数据窗口对象控件 即在 dw_1所用到的数据窗口对象编辑画板中的update properties 设置正常(即更新属性). 具体查看 打开rows选单-update properties-Allow updates挑对勾!-upateable columns 选中要可以提交更新保存的字段.随后点击ok保存配置 即可
追问
那我要是对一个表中的数据保存到多表呢?
要在dw_.midfy.uptate进行设置吗?怎么设置哇!
还是直接用insert 比较简单呢?
insert table ( ) values ( )
if sqlca.sqlcode 0 then
……
else
……
end if
展开全部
新建一个数据窗口----选择需要更新的表,或者直接写sql也可以
如下图已经建立好的数据窗口,根据要求将需要更新的列、unigue key 还有需要更新的表设置好,
【图片添加不成功--连接为http://hi.baidu.com/jjlsky/album/item/3a029801a9309b657aec2c02.html# 】
将需要更新列的taborder设置大于0 这样维护的时候可以编辑(等于0是不能编辑的),
在窗口打开增加
dw_1.setTransobject(sqlca)//设置事物
dw_1.retrieve()//获取数据
增加代码(数据窗口为dw_1)
int li_row
li_row = dw_1.insertrow(0)
dw_1.SetFocus()
dw_1.ScrollToRow(li_row)
dw_1.selectrow(0,false)
dw_1.selectrow(li_row,true)
dw_1.SetColumn(1)
保存按钮
dw_1.accepttext()//这个是必须的 接受所有更改
if dw_1.ModifiedCount() < 1 then return//也可以加上删除的条数DeletedCount()
if dw_1.update() = -1 then
rollback;
messagebox('提示信息','保存有误!')
else
commit;
messagebox('提示信息','保存成功!')
end if
删除按钮
integer net, ll_row
// 提示信息:"要删除此记录吗?"
NET=messagebox(f_getmessage("xt000005"),f_getmessage("ctl00004"),Exclamation!,YESNO!)
IF net=1 THEN
ll_row=dw_1.getselectedrow(0)//获取选中记录 可以用getrow() 取得选中行,如果有taborder=0的可能导致取数错误
dw_1.DeleteRow (ll_row)
IF dw_1.update()= -1 THEN
ROLLBACK;
IF dw_1.RowsMove(1, 1, delete!, dw_1, ll_row, primary!) = 1 THEN
// Set focus to the row that was "restored"
dw_1.SetFocus()
dw_1.ScrollToRow(ll_row)
END IF
ELSE
COMMIT;
END IF
ELSE
dw_1.SetFocus()
END IF
如下图已经建立好的数据窗口,根据要求将需要更新的列、unigue key 还有需要更新的表设置好,
【图片添加不成功--连接为http://hi.baidu.com/jjlsky/album/item/3a029801a9309b657aec2c02.html# 】
将需要更新列的taborder设置大于0 这样维护的时候可以编辑(等于0是不能编辑的),
在窗口打开增加
dw_1.setTransobject(sqlca)//设置事物
dw_1.retrieve()//获取数据
增加代码(数据窗口为dw_1)
int li_row
li_row = dw_1.insertrow(0)
dw_1.SetFocus()
dw_1.ScrollToRow(li_row)
dw_1.selectrow(0,false)
dw_1.selectrow(li_row,true)
dw_1.SetColumn(1)
保存按钮
dw_1.accepttext()//这个是必须的 接受所有更改
if dw_1.ModifiedCount() < 1 then return//也可以加上删除的条数DeletedCount()
if dw_1.update() = -1 then
rollback;
messagebox('提示信息','保存有误!')
else
commit;
messagebox('提示信息','保存成功!')
end if
删除按钮
integer net, ll_row
// 提示信息:"要删除此记录吗?"
NET=messagebox(f_getmessage("xt000005"),f_getmessage("ctl00004"),Exclamation!,YESNO!)
IF net=1 THEN
ll_row=dw_1.getselectedrow(0)//获取选中记录 可以用getrow() 取得选中行,如果有taborder=0的可能导致取数错误
dw_1.DeleteRow (ll_row)
IF dw_1.update()= -1 THEN
ROLLBACK;
IF dw_1.RowsMove(1, 1, delete!, dw_1, ll_row, primary!) = 1 THEN
// Set focus to the row that was "restored"
dw_1.SetFocus()
dw_1.ScrollToRow(ll_row)
END IF
ELSE
COMMIT;
END IF
ELSE
dw_1.SetFocus()
END IF
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询