如何实现将vsflexgrid中修改的数据反馈到数据库中
1个回答
推荐于2016-09-17
展开全部
如何实现将vsflexgrid中修改的数据反馈到数据库中?
Private Sub vsflexgrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long)
rs.MoveFirst '//rs为记录集
rs.Move vsflexgrid1.Row - 1
rs.Edit
If vsflexgrid1.text = "" Then
rs.Fields(vsflexgrid1.Col - 1) = Null
Else
rs.Fields(vsflexgrid1.Col - 1) = vsflexgrid1.text
End If
rs.Update
end sub
一、增加记录使用for来循环表格行。
for i=1 to grid1.rows-1
with rs
.addnew
.fileds(o)=grid1.textmariy(i,0)
.fileds(1)=grid1.textmariy(i,1)
.fileds(2)=grid1.textmariy(i,2)
.fileds(3)=grid1.textmariy(i,3)
.update
end with
next
二、添加行
grid1.additem row
三、删除当前行
with grid1
i=.row
.removeitem i
end with
四、要显示下拉框,可以使用vsflexgrid中列绑定功能
grid1.colcombolist(1)=grid.buildcombolist(rs,"商品名称")
跟楼上的相比,仅仅是datamode不一样(2-flexDMBoundBatch)
但这样做的优势是非常明显的:可以撤销包括新增删除在内的所有操作,按保存键才写入数据库
Private Sub CmdDel_Click()
If fg.Row <> 0 Then fg.RemoveItem (fg.Row)
fg.Refresh
End Sub
Private Sub CmdAdd_Click()
On Error Resume Next
Adodc1.Recordset.AddNew
If Err.Number <> 0 Then MsgBox Err.Description
End Sub
Private Sub CmdUpdate()
Adodc1.Recordset.UpdateBatch adAffectAllChapters
End Sub
Private Sub CmdCancel_Click()
Adodc1.Recordset.CancelBatch
fg.DataRefresh
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "FILE NAME=" & App.Path & "\conn.dsn"
Adodc1.LockType = adLockBatchOptimistic
Adodc1.RecordSource = "Your_Tablename"
Set fg.DataSource = Adodc1
End Sub
1、打印vsflexgrid可以使用vsprinter打印控件。跟vsflexgrid配套使用效果不错。
2、导出EXECL,可以使用grid.savegrid的方法。
用savegrid的方法 ,在导出execl时,如果碰到类似于银行帐号的列如:“6465456665”,导到EXECL中就不这样显示了,这个问题还不知道怎么解决??
另外也可以写代码(这个方法比较实用,但慢一些):
Dim ExcelApp As Excel.Application
Set excelApp = New Excel.Application
On Error Resume
Private Sub vsflexgrid1_AfterEdit(ByVal Row As Long, ByVal Col As Long)
rs.MoveFirst '//rs为记录集
rs.Move vsflexgrid1.Row - 1
rs.Edit
If vsflexgrid1.text = "" Then
rs.Fields(vsflexgrid1.Col - 1) = Null
Else
rs.Fields(vsflexgrid1.Col - 1) = vsflexgrid1.text
End If
rs.Update
end sub
一、增加记录使用for来循环表格行。
for i=1 to grid1.rows-1
with rs
.addnew
.fileds(o)=grid1.textmariy(i,0)
.fileds(1)=grid1.textmariy(i,1)
.fileds(2)=grid1.textmariy(i,2)
.fileds(3)=grid1.textmariy(i,3)
.update
end with
next
二、添加行
grid1.additem row
三、删除当前行
with grid1
i=.row
.removeitem i
end with
四、要显示下拉框,可以使用vsflexgrid中列绑定功能
grid1.colcombolist(1)=grid.buildcombolist(rs,"商品名称")
跟楼上的相比,仅仅是datamode不一样(2-flexDMBoundBatch)
但这样做的优势是非常明显的:可以撤销包括新增删除在内的所有操作,按保存键才写入数据库
Private Sub CmdDel_Click()
If fg.Row <> 0 Then fg.RemoveItem (fg.Row)
fg.Refresh
End Sub
Private Sub CmdAdd_Click()
On Error Resume Next
Adodc1.Recordset.AddNew
If Err.Number <> 0 Then MsgBox Err.Description
End Sub
Private Sub CmdUpdate()
Adodc1.Recordset.UpdateBatch adAffectAllChapters
End Sub
Private Sub CmdCancel_Click()
Adodc1.Recordset.CancelBatch
fg.DataRefresh
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "FILE NAME=" & App.Path & "\conn.dsn"
Adodc1.LockType = adLockBatchOptimistic
Adodc1.RecordSource = "Your_Tablename"
Set fg.DataSource = Adodc1
End Sub
1、打印vsflexgrid可以使用vsprinter打印控件。跟vsflexgrid配套使用效果不错。
2、导出EXECL,可以使用grid.savegrid的方法。
用savegrid的方法 ,在导出execl时,如果碰到类似于银行帐号的列如:“6465456665”,导到EXECL中就不这样显示了,这个问题还不知道怎么解决??
另外也可以写代码(这个方法比较实用,但慢一些):
Dim ExcelApp As Excel.Application
Set excelApp = New Excel.Application
On Error Resume
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询