1.如果与一个数据库绑定的话.承楼上所述,使用update. 2.如果是使用非绑定,使用 INSERT INTO 或 UPDATE. 如: Dim StrSql As String With VSFlexGrid1 StrSql = "UPDATE [TABLENAME] SET(字段名1='" & .TextMatrix(1, 0) & "',字段名2='" & .TextMatrix(1, 1) & "')" P_CNN.Execute StrSql End With Dim StrSql As String With VSFlexGrid1 StrSql = "INSERT INTO [TABLENAME] (字段名1,字段名2)('" & .TextMatrix(1, 0) & "','" & .TextMatrix(1, 1) & "')" P_CNN.Execute StrSql End With
抱歉,我太着急了,有些没说清楚,现在把代码贴出来,主要是Update后或Updatebatch都写不回数据库! Option Explicit Dim cnn As ADODB.Connection Dim cnnstr As String Dim rst As ADODB.Recordset Dim cmm As ADODB.CommandPrivate Sub Form_Activate() Set cnn = New ADODB.Connection Set rst = New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\db3c.mdb;Persist Security Info=False" cnn.BeginTrans rst.CursorLocation = adUseClient Set VSFlexGrid2.DataSource = rst rst.Open "select * from 员工", cnn, adOpenDynamic, adLockOptimistic On Error GoTo transError cnn.BeginTrans
transError: Debug.Print Err.DescriptionEnd SubPrivate Sub Command1_Click() rst.update cnn.CommitTrans End SubPrivate Sub Form_Unload(Cancel As Integer) rst.update End Sub 数据库Access update和事务都不行,请在两方面指教,在线等,急!
注意这里. rst.Open "select * from 员工", cnn, adOpenDynamic, adLockOptimistic 和 Set VSFlexGrid2.DataSource = rst与 VSFlexGrid 绑定的是一个RS值,不是数据表.当然不能 Private Sub Command1_Click() rst.update cnn.CommitTrans End Sub 更新数据了.要更新数据,要用SQL语句(详细看上面).
Set VSFlexGrid2.DataSource = rst和open的顺序调一下. 你的这个绑定是用adodb的,用sql语句做.adodc的可以用rst.update
与vsflexgrid相关的什么东西和datalist、datacombo功能一样,强在那 与vsflexgrid相关的还包括二个控件,一个是VSFLEXSTRING(常用于发现数据库的表达式和模式),别一个是VSVIEW.可与VSFLEXGRID结合一起用于打印数据.你主要想实现类拟datalist、datacombo的功能.其实,你可利用VSFLEXGRID的COMBOLIST属性,你可以在其中创建组合框控件,该属性有一个字符串变量,其中包含由管道字符("|")分隔的选项列表.当在控件BEFOREEDIT事件中,你可编写代码以指定COMBOLIST属性为GRID控件.由于该事件以网格的当前行和列为参数,所以你可以为每个数据列显示不同的选项列表. 如: PRIVATE SUB FLEXGRID1_BEFOREEDIT(BYVAL ROW AS LONG ,BYVAL COL AS LONG ,CANCEL AS BOOLEAN) IF COL=3 THEN '如果列号为3,则可以由用户选择颜色. FLEXGRID1.COMBOLIST="红色|绿色|白色" '设置COMBOLIST属性. ELSE FLEXGRID1.COMBOLIST="" '清空COMBOLLIST属性. END IF END SUB
2.如果是使用非绑定,使用 INSERT INTO 或 UPDATE.
如:
Dim StrSql As String
With VSFlexGrid1
StrSql = "UPDATE [TABLENAME] SET(字段名1='" & .TextMatrix(1, 0) & "',字段名2='" & .TextMatrix(1, 1) & "')"
P_CNN.Execute StrSql
End With Dim StrSql As String
With VSFlexGrid1
StrSql = "INSERT INTO [TABLENAME] (字段名1,字段名2)('" & .TextMatrix(1, 0) & "','" & .TextMatrix(1, 1) & "')"
P_CNN.Execute StrSql
End With
Option Explicit
Dim cnn As ADODB.Connection
Dim cnnstr As String
Dim rst As ADODB.Recordset
Dim cmm As ADODB.CommandPrivate Sub Form_Activate()
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\db3c.mdb;Persist Security Info=False"
cnn.BeginTrans rst.CursorLocation = adUseClient
Set VSFlexGrid2.DataSource = rst rst.Open "select * from 员工", cnn, adOpenDynamic, adLockOptimistic On Error GoTo transError
cnn.BeginTrans
transError:
Debug.Print Err.DescriptionEnd SubPrivate Sub Command1_Click()
rst.update
cnn.CommitTrans
End SubPrivate Sub Form_Unload(Cancel As Integer)
rst.update
End Sub 数据库Access
update和事务都不行,请在两方面指教,在线等,急!
rst.Open "select * from 员工", cnn, adOpenDynamic, adLockOptimistic
和
Set VSFlexGrid2.DataSource = rst与 VSFlexGrid 绑定的是一个RS值,不是数据表.当然不能
Private Sub Command1_Click()
rst.update
cnn.CommitTrans
End Sub
更新数据了.要更新数据,要用SQL语句(详细看上面).
与vsflexgrid相关的还包括二个控件,一个是VSFLEXSTRING(常用于发现数据库的表达式和模式),别一个是VSVIEW.可与VSFLEXGRID结合一起用于打印数据.你主要想实现类拟datalist、datacombo的功能.其实,你可利用VSFLEXGRID的COMBOLIST属性,你可以在其中创建组合框控件,该属性有一个字符串变量,其中包含由管道字符("|")分隔的选项列表.当在控件BEFOREEDIT事件中,你可编写代码以指定COMBOLIST属性为GRID控件.由于该事件以网格的当前行和列为参数,所以你可以为每个数据列显示不同的选项列表.
如:
PRIVATE SUB FLEXGRID1_BEFOREEDIT(BYVAL ROW AS LONG ,BYVAL COL AS LONG ,CANCEL AS BOOLEAN)
IF COL=3 THEN '如果列号为3,则可以由用户选择颜色.
FLEXGRID1.COMBOLIST="红色|绿色|白色" '设置COMBOLIST属性.
ELSE
FLEXGRID1.COMBOLIST="" '清空COMBOLLIST属性.
END IF
END SUB