这些是子窗体的代码初始化: connect_string_init Set Con = New ADODB.Connection Con.Open strConnect_String Set Rs = New ADODB.Recordset Rs.Open "select * from tb_kcxx", Con, adOpenKeyset, adLockOptimistic 把数据添加到主窗体数据时的代码: Private Sub MSFlexGrid1_DblClick() Static i As Integer With MSFlexGrid1 If .Row < 1 Or .Row > .Rows Then Exit Sub End If .Row = .Row .Col = 0 objdata.objid = .Text .Col = 1 objdata.objname = .Text .Col = 2 objdata.objsize = .Text .Col = 3 objdata.objnum = .Text .Col = 4 objdata.objunit = .Text .Col = 5 objdata.objprice = .Text End With i = i + 1 frmtihuodan.MSFlexGrid1.Rows = i With frmtihuodan.MSFlexGrid1 .Rows = .Rows + 1 .TextMatrix(.Rows - 1, 0) = objdata.objid .TextMatrix(.Rows - 1, 1) = objdata.objname .TextMatrix(.Rows - 1, 2) = objdata.objsize .TextMatrix(.Rows - 1, 3) = objdata.objnum .TextMatrix(.Rows - 1, 4) = objdata.objunit .TextMatrix(.Rows - 1, 5) = objdata.objprice End With frmitemdata.Hide End Sub 你们看看,我感觉代码是没有问题的
這些沒有問題,主窗体的保存代碼: Private Sub Msflexdata_save() Dim i As Integer Dim rs As ADODB.Recordset Dim con As ADODB.Connection Set con = New ADODB.Connection con.Open strConnect_String Set rs = New ADODB.Recordset rs.Open "select * from tb_tihuodetail", con, adOpenKeyset, adLockOptimistic rs.AddNew With MSFlexGrid1 For i = 1 To .Rows .Rows = i .Row = .Row .Col = 0 txtname.Text = .Text rs!ck_orderno = .Text .Col = 1 rs!ck_name = .Text .Col = 2 rs!ck_description = .Text .Col = 3 rs!ck_num = .Text .Col = 4 rs!ck_unit = .Text .Col = 5 rs!ck_price = .Text rs!tihuonum = txtorderno.Text rs.Update Next i End With End Sub
你的MSFlexGrid用的什么方式显示数据的!用的代码还是绑定!应该用的绑定了. 你把保存用的这些代码去掉,结果还是一样的: rs.AddNew With MSFlexGrid1 For i = 1 To .Rows .Rows = i .Row = .Row .Col = 0 txtname.Text = .Text rs!ck_orderno = .Text .Col = 1 rs!ck_name = .Text .Col = 2 rs!ck_description = .Text .Col = 3 rs!ck_num = .Text .Col = 4 rs!ck_unit = .Text .Col = 5 rs!ck_price = .Text rs!tihuonum = txtorderno.Text rs.Update Next i End With 建议改用非绑定显示数据!
哈哈,问题就在人的代码中,请看 With MSFlexGrid1 For i = 1 To .Rows .Rows = i .Row = .Row .Col = 0 txtname.Text = .Text rs!ck_orderno = .Text .Col = 1 rs!ck_name = .Text .Col = 2 rs!ck_description = .Text .Col = 3 rs!ck_num = .Text .Col = 4 rs!ck_unit = .Text .Col = 5 rs!ck_price = .Text rs!tihuonum = txtorderno.Text rs.Update Next i End With 第一次循环都会改变总行数,数据也跟着改变了,肯定保存不了数据,并且会重绘
Private Sub Msflexdata_save() Dim i As Integer Dim rs As ADODB.Recordset Dim con As ADODB.Connection Set con = New ADODB.Connection con.Open strConnect_String Set rs = New ADODB.Recordset rs.Open "select * from tb_tihuodetail", con, adOpenKeyset, adLockOptimistic rs.AddNew With MSFlexGrid1 For i = 1 To .Rows -1 '.Rows = i .Row = i .Col = 0 txtname.Text = .Text rs!ck_orderno = .Text .Col = 1 rs!ck_name = .Text .Col = 2 rs!ck_description = .Text .Col = 3 rs!ck_num = .Text .Col = 4 rs!ck_unit = .Text .Col = 5 rs!ck_price = .Text rs!tihuonum = txtorderno.Text rs.Update Next i End With End Sub试试
你用的是不是ADODC啊?
connect_string_init
Set Con = New ADODB.Connection
Con.Open strConnect_String
Set Rs = New ADODB.Recordset
Rs.Open "select * from tb_kcxx", Con, adOpenKeyset, adLockOptimistic
把数据添加到主窗体数据时的代码:
Private Sub MSFlexGrid1_DblClick()
Static i As Integer
With MSFlexGrid1
If .Row < 1 Or .Row > .Rows Then
Exit Sub
End If
.Row = .Row
.Col = 0
objdata.objid = .Text
.Col = 1
objdata.objname = .Text
.Col = 2
objdata.objsize = .Text
.Col = 3
objdata.objnum = .Text
.Col = 4
objdata.objunit = .Text
.Col = 5
objdata.objprice = .Text
End With
i = i + 1
frmtihuodan.MSFlexGrid1.Rows = i
With frmtihuodan.MSFlexGrid1
.Rows = .Rows + 1
.TextMatrix(.Rows - 1, 0) = objdata.objid
.TextMatrix(.Rows - 1, 1) = objdata.objname
.TextMatrix(.Rows - 1, 2) = objdata.objsize
.TextMatrix(.Rows - 1, 3) = objdata.objnum
.TextMatrix(.Rows - 1, 4) = objdata.objunit
.TextMatrix(.Rows - 1, 5) = objdata.objprice
End With
frmitemdata.Hide
End Sub
你们看看,我感觉代码是没有问题的
Private Sub Msflexdata_save()
Dim i As Integer
Dim rs As ADODB.Recordset
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open strConnect_String
Set rs = New ADODB.Recordset
rs.Open "select * from tb_tihuodetail", con, adOpenKeyset, adLockOptimistic
rs.AddNew
With MSFlexGrid1
For i = 1 To .Rows
.Rows = i
.Row = .Row
.Col = 0
txtname.Text = .Text
rs!ck_orderno = .Text
.Col = 1
rs!ck_name = .Text
.Col = 2
rs!ck_description = .Text
.Col = 3
rs!ck_num = .Text
.Col = 4
rs!ck_unit = .Text
.Col = 5
rs!ck_price = .Text
rs!tihuonum = txtorderno.Text
rs.Update
Next i
End With
End Sub
你把保存用的这些代码去掉,结果还是一样的:
rs.AddNew
With MSFlexGrid1
For i = 1 To .Rows
.Rows = i
.Row = .Row
.Col = 0
txtname.Text = .Text
rs!ck_orderno = .Text
.Col = 1
rs!ck_name = .Text
.Col = 2
rs!ck_description = .Text
.Col = 3
rs!ck_num = .Text
.Col = 4
rs!ck_unit = .Text
.Col = 5
rs!ck_price = .Text
rs!tihuonum = txtorderno.Text
rs.Update
Next i
End With
建议改用非绑定显示数据!
With MSFlexGrid1
For i = 1 To .Rows
.Rows = i
.Row = .Row
.Col = 0
txtname.Text = .Text
rs!ck_orderno = .Text
.Col = 1
rs!ck_name = .Text
.Col = 2
rs!ck_description = .Text
.Col = 3
rs!ck_num = .Text
.Col = 4
rs!ck_unit = .Text
.Col = 5
rs!ck_price = .Text
rs!tihuonum = txtorderno.Text
rs.Update
Next i
End With 第一次循环都会改变总行数,数据也跟着改变了,肯定保存不了数据,并且会重绘
Dim i As Integer
Dim rs As ADODB.Recordset
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open strConnect_String
Set rs = New ADODB.Recordset
rs.Open "select * from tb_tihuodetail", con, adOpenKeyset, adLockOptimistic
rs.AddNew
With MSFlexGrid1
For i = 1 To .Rows -1
'.Rows = i
.Row = i
.Col = 0
txtname.Text = .Text
rs!ck_orderno = .Text
.Col = 1
rs!ck_name = .Text
.Col = 2
rs!ck_description = .Text
.Col = 3
rs!ck_num = .Text
.Col = 4
rs!ck_unit = .Text
.Col = 5
rs!ck_price = .Text
rs!tihuonum = txtorderno.Text
rs.Update
Next i
End With
End Sub试试
.Rows=i
注释掉,就可以用了,你去试试啊,有什么问题再反映上来