注册 登录
编程论坛 VB6论坛

实时错误:对象名无效

落日幻影 发布于 2013-11-15 16:49, 655 次点击
我是用VB连接SQL server的,说对象名'combo1'无效,这是我的代码:
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rst As New ADODB.Recordset
Dim rct As New ADODB.Recordset

Private Sub Form_Load()
    Dim i As Integer
    cn.Open "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=database;Data Source=localhost"
    cn.CursorLocation = adUseClient
    rs.Open "select * from 中国", cn
    If rs.RecordCount <> 0 Then
        rs.MoveFirst
        For i = 0 To rs.RecordCount - 1
            Combo1.AddItem rs.Fields("省名")
            rs.MoveNext
        Next i
    End If
    rst.Open "select * from " & Trim(Combo1.Text) & "", cn
    If rst.RecordCount <> 0 Then
        rst.MoveFirst
        For i = 0 To rst.RecordCount - 1
            Combo2.AddItem rst.Fields("城市名")
            rst.MoveNext
        Next i
    End If
    rct.Open "select * from " & Trim(Combo2.Text) & "", cn
    If rct.RecordCount <> 0 Then
        rct.MoveFirst
        For i = 0 To rct.RecordCount - 1
            Combo3.AddItem rct.Fields("县名")
            rct.MoveNext
        Next i
    End If
    Combo1.Text = "选择省份"
    Combo2.Text = "选择城市"
    Combo3.Text = "选择县/区"
    Text1.Text = ""
End Sub

画了控件的:
只有本站会员才能查看附件,请 登录

这是错误截图:
只有本站会员才能查看附件,请 登录
5 回复
#2
Artless2013-11-16 11:47
这样较合理
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rst As New ADODB.Recordset
Dim rct As New ADODB.Recordset

Private Sub Form_Load()
    Dim i As Integer
    cn.Open "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=database;Data Source=localhost"
    cn.CursorLocation = adUseClient
    rs.Open "select * from 中国", cn
    If rs.RecordCount <> 0 Then
        rs.MoveFirst
        For i = 0 To rs.RecordCount - 1
            Combo1.AddItem rs.Fields("省名")
            rs.MoveNext
        Next i
    End If
    Combo1.Text = "选择省份"
    Combo2.Text = "选择城市"
    Combo3.Text = "选择县/区"
    Text1.Text = ""
End Sub
#3
落日幻影2013-11-18 10:41
回复 楼主 落日幻影
error

[ 本帖最后由 落日幻影 于 2013-11-18 10:44 编辑 ]
#4
落日幻影2013-11-18 10:43
回复 2楼 Artless
那combo2,跟combo3的呢,我把combo1.text作为表名是不是写法有问题,我将combo1.text跟combo2.text替换为确切的表名时就没问题了
#5
落日幻影2013-11-18 11:18
回复 2楼 Artless
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rst As New ADODB.Recordset
Dim rct As New ADODB.Recordset

Private Sub Combo1_Change()
    Combo1.Refresh
    If Combo1.ListIndex > 0 Then
        rst.Open "select * from " & Trim(Combo1.Text) & "", cn
        If rst.RecordCount <> 0 Then
            rst.MoveFirst
            For i = 0 To rst.RecordCount - 1
                Combo2.AddItem rst.Fields("城市名")
                rst.MoveNext
            Next i
        End If
    End If
End Sub

Private Sub Combo2_Change()
    Combo2.Refresh
    If Combo2.ListIndex > 0 Then
        rct.Open "select * from " & Trim(Combo2.Text) & "", cn
        If rct.RecordCount <> 0 Then
            rct.MoveFirst
            For i = 0 To rct.RecordCount - 1
                Combo3.AddItem rct.Fields("县名")
                rct.MoveNext
            Next i
        End If
    End If
End Sub

Private Sub Command1_Click()
    Text1.Text = "地址为:" & Trim(Combo1.Text) & " " & Trim(Combo2.Text) & " " & Trim(Combo3.Text)
End Sub
Private Sub Form_Load()
    Dim i As Integer
    cn.Open "Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=database;Data Source=localhost"
    cn.CursorLocation = adUseClient
    rs.Open "select * from 中国", cn
    If rs.RecordCount <> 0 Then
        rs.MoveFirst
        For i = 0 To rs.RecordCount - 1
            Combo1.AddItem rs.Fields("省名")
            rs.MoveNext
        Next i
    End If
    Combo1.Text = "选择省份"
    Combo2.Text = "选择城市"
    Combo3.Text = "选择县/区"
    Combo1.AddItem "选择省份", 0
    Combo2.AddItem "选择城市", 0
    Combo3.AddItem "选择县/区", 0
    Combo1.ListIndex = 0
    Combo2.ListIndex = 0
    Combo3.ListIndex = 0
    Text1.Text = ""
    Text1.Locked = True
End Sub
我现在改成这样,但是运行后combo1.text=""了:
只有本站会员才能查看附件,请 登录
#6
Artless2013-11-18 13:33
combo1.text=江苏省
1