读书人

vb程序报错不知咋改显示VB6.0中出

发布时间: 2012-04-28 11:49:53 作者: rapoo

vb程序报错,不知咋改,显示VB6.0中出现不支持所要求的数据绑定类型

VB code
Dim Mydb As New ADODB.Recordset 
Dim Mydb1 As New ADODB.Recordset
Dim Mydb2 As New ADODB.Recordset
Dim Count1 As New ADODB.Recordset
Dim Str_text As String
Private Sub cmd_add_Click()
On Error Resume Next
Dim A, B

B = 1
Set Count1 = ExeCutesql("select * from 收入", Str_text)
Count1.MoveLast
B = Count1.Fields(7) + 1
A = MsgBox("是否添加前记录?", vbYesNo + 32, "添加记录")
If A = vbYes Then
If txt_intake.Text = "" Then
MsgBox "请填写来源!", vbOKOnly + 32, "注意"
txt_intake.SetFocus
Else
ExeCutesql "INSERT INTO 收入 VALUES('" & Format(DTPicker1.Value, "yyyy-mm-dd") & "','" _
& Combo1.Text & "'," & txt_money.Text & ",'" & Combo2.Text & "','" & txt_intake.Text _
& "','" & Combo3.Text & "','" & txt_mome.Text & "'," & B & ")", Str_text
MsgBox "数据已经保存!", vbOKOnly + 64, "成功"
Call Xiangmu
Call Db
End If
End If

End Sub
Private Sub cmd_close_Click()
frm_main.Show
Unload Me
End Sub
Private Sub cmd_del_Click()
On Error Resume Next
Dim A

A = MsgBox("是否删除当前记录?", vbYesNo + 32 + 256, "添加记录")
If A = vbYes Then
'Mydb.UpdateBatch
ExeCutesql "DELETE from 收入 where key=" & txt_note.Text & "", Str_text
Call Db
Set Mydb = ExeCutesql("select * from 收入 ", Str_text)
Set MSHFlexGrid1.DataSource = Mydb
End If
End Sub
Private Sub cmd_edit_Click()
'On Error Resume Next
Dim A

A = MsgBox("是否修改当前记录?", vbYesNo + 32, "添加记录")
If A = vbYes Then
ExeCutesql "Update 收入 Set 日期 = '" & Format(DTPicker1.Value, "yyyy-mm-dd") & "',方式='" & Combo1.Text & "',金额=" & txt_money.Text & ", 来源='" & txt_intake.Text & "',人员='" & Combo3.Text & "',备注='" & txt_mome.Text & "' Where key = " & txt_note.Text & " ", Str_text


Call Db
MsgBox "数据修改成功!", vbOKOnly + 64, "成功"
End If
'MsgBox "Update 收入 Set 日期 = '" & DTPicker1.Value & "',方式='" & Combo1.Text & "',金额=" & txt_money.Text & ", 来源='" & txt_intake.Text & "',人员='" & Combo3.Text & "',备注='" & txt_mome.Text & "' Where key = '" & txt_note.Text & " '"

End Sub
Private Sub Combo2_Change()
Call Db1
End Sub
Private Sub Combo3_Change()
Call Db2
End Sub

Private Sub Command1_Click()
Call Db
End Sub

Private Sub Form_Load()
Call Db
Call Db1
Call Db2
DTPicker1.Value = Date
'Combo3.Locked = True
'Combo1.Locked = True

End Sub

Public Function Db()
Set Mydb = ExeCutesql("select * from 收入 order by key ", Str_text)
Set MSHFlexGrid1.DataSource = MydbEnd Function

光标提示在红色的部分,不知道咋改

[解决办法]
为何要绑定 ? Rs 先读好 再循环放进MsHflexGrid 它与DataGrid的观念有点不同

VB code
Private Sub ShowAllMsf()   Trec = Rs.RecordCount   MSHFlexGrid1.Rows = Trec + 1   If Trec > 0 Then      MSHFlexGrid1.Visible = False      Datapos = 0      Rs.MoveFirst      Do         ShowMsFlex         Rs.MoveNext         Datapos = Datapos + 1      Loop Until Rs.EOF      MSHFlexGrid1.Visible = True      Rs.MoveFirst: Datapos = 0: OldPos = Datapos      MSHFlexGrid1.Row = 1: MSHFlexGrid1.Col = 0   End IfEnd SubPrivate Sub ShowMsFlex()   MSHFlexGrid1.Row = Datapos + 1 'updrow   For I = 0 To TCols - 1      MSHFlexGrid1.Col = I      MSHFlexGrid1.CellAlignment = 1 '靠左      MSHFlexGrid1.Text = IIf(Trim(Rs.Fields(I)) <> "", Rs.Fields(I), "")   Next IEnd Sub
[解决办法]
Set MSHFlexGrid1.DataSource = MydbEnd Function
应该是Set MSHFlexGrid1.DataSource = Mydb End Function这样



[解决办法]
怎么没看见connction?
rs不用excute 改成open试试
RS.Open sSQL, dfwConn, adOpenForwardOnly, adLockReadOnly
Set MSHFlexGrid1.DataSource = RS
[解决办法]
对应rs 换成你的记录集 再在属性cols更改你的数值
rs.MoveFirst
' rs.MoveFirst
Do While Not rs.EOF
MSFlexGrid2.Rows = i + 1
MSFlexGrid2.row = i
MSFlexGrid2.col = 0
MSFlexGrid2.Text = i - 1

'For j = 1 To 10
For j = 1 To 10

MSFlexGrid2.col = j
If rs.Fields(j - 1) <> "" Then
MSFlexGrid2.Text = rs.Fields(j - 1).Value
End If
Next j
rs.MoveNext
i = i + 1
Loop

读书人网 >VB

热点推荐