vsFlexGrid控件对Access数据库的编辑、保存

choovy123 2007-08-01 12:13:20
用vsFlexGrid控件对Access数据库的编辑、保存?

本人过去对数据库编辑、保存,常用控件MSFlexGrid、vsFlexGrid 7.0绑定处理来完成,但后来发现许多不便、许多功能不能实现。现干脆不用绑定,改为直接从数据库表中全部读出并写入vsFlexGrid控件,在编辑好了以后,再全部写回数据库表。现在的问题是:vsFlexGrid控件表经过编辑处理后,与原表记录的对应关系发生了变化,怎么回写较好?难道必须先删除原表的所有记录,然后再全部添加进来吗?
我希望的是,对原记录进行覆盖(已有的记录)、新添加的作追加处理。
有网友提出"在相关事件中(AfterRowColChange ,AfterEdit),分别用变量记录添加和修改数据的ROW值。在保存数据的时候,根据变量判断应该添加还是修改数据。"
我觉得其切实可行,怎么实现却没有底 ,还望各个高手赐教!

附上代码(保存)
Private Sub Cmd_save_Click()
If VS1.TextMatrix(VS1.Row, 1) <> "" And VS1.TextMatrix(VS1.Row, 2) <> "" Then
Dim str As String
str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\rqwl.mdb;Persist Security Info=False"
Dim cnn As New ADODB.Connection
cnn.Open str
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
mysql = "select * from wlryszb "
rs.Open mysql, cnn, adOpenKeyset, adLockOptimistic
Set VS1.DataSource = rs
For i = 1 To VS1.Rows - 1
VS1.TextMatrix(i, 0) = i
Next
VS1.DataRefresh
For rowc = 1 To VS1.Rows - 1
With rs
If rs.State = adStateOpen Then rs.Close
rs.Open mysql, cnn, adOpenKeyset, adLockOptimistic
.AddNew
.Fields("xm") = VS1.TextMatrix(rowc, 1)
.Fields("xb") = VS1.TextMatrix(rowc, 2)
.Fields("spm") = VS1.TextMatrix(rowc, 3)
.Fields("fl") = VS1.TextMatrix(rowcs, 4)
.Fields("szdw") = VS1.TextMatrix(rowc, 5)
.Fields("bm") = VS1.TextMatrix(rowc, 6)
.Fields("dwdh") = VS1.TextMatrix(rowc, 7)
.Fields("jldh") = VS1.TextMatrix(rowc, 8)
.Fields("sjhm") = VS1.TextMatrix(rowc, 9)
.Fields("zz") = VS1.TextMatrix(rowc, 10)
.Update
End With
Next
Else: MsgBox "不能为空!"
End If
End Sub

...全文
678 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fei9999 2007-08-01
  • 打赏
  • 举报
回复
设为可编辑:
VSFlexGrid.Editable = flexEDKbdMouse
设为更新:
VSFlexGrid.DataMode = flexDMBoundImmediate
VSFlexGrid.DataRefresh

这样修改后失去焦点会自动保存
choovy123 2007-08-01
  • 打赏
  • 举报
回复
附上我的添加代码:
Private Sub Command1_Click()
'实现添加
Set VS1.DataSource = rs
VS1.AddItem Row
VS1.Refresh
For i = 1 To VS1.Rows - 1
VS1.TextMatrix(i, 0) = i
Next
End Sub
在form_load下加了VSFlexGrid.Editable = flexEDKbdMouse
choovy123 2007-08-01
  • 打赏
  • 举报
回复
不行啊 兄台 保存时问题依旧
VSFlexGrid.DataMode = flexDMBoundImmediate

1,451

社区成员

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

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