说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于过程与模块的菜鸟百思不得其解的简单问题,兼散分。

编辑:说三道四文库 发布时间:2018-04-20 05:38
HTML文档下载 WORD文档下载 PDF文档下载
模块代码如下:
'General Declarations Section
Dim cona As Connection
Dim coma As Command
Dim rsta As Recordset
Dim a As Integer

Public Sub gc()
Set cona = New Connection
Set coma = New Command
Set rsta = New Recordset
With cona
.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=pubs;Data Source=WANGTONG"
.Provider = "SQLOLEDB"
.Open
End With
With coma
coma.ActiveConnection = cona
rsta.Open "select * from employee", cona, adOpenDynamic, adLockBatchOptimistic
End With

txtID = rsta!emp_id
txtfname = rsta!fname
txtlname = rsta!lname
txtbirth = rsta!hire_date
txtgender = rsta!minit

End Sub

Public Sub gc1()
While Not rsta.EOF
Form2.List2.AddItem rsta.Fields("lname")
rsta.MoveNext
Wend
End Sub

////////////////////////////////////////////////////////////////////

Form2代码如下:
Private Sub Form_Load()
gc
gc1
End Sub

Private Sub List2_Click()



a = List2.ListIndex
rsta.MoveFirst
rsta.Move a
Form2.txtID = rsta!emp_id
Form2.txtfname = rsta!fname
Form2.txtlname = rsta!lname
Form2.txtbirth = rsta!hire_date
Form2.txtgender = rsta!minit

End Sub

设置Form2先启动,窗口的显示没有问题,可当点击list2时,错误提示如下:
实时错误‘424’
要求对象


Dim cona As Connection
Dim coma As Command
Dim rsta As Recordset
Dim a As Integer
-----------------
public ...
public ...
txtfname是什么?文本框还是普通变量?
注意模块中的应该是变量了,要在form2调用必须定义为public
没看懂你想做什么?呵呵,自己慢慢单步调吧
txtfname 等是form2中的文本框,把他们放到模块中的public过程中不可以吗?

目的是在form2的listbox中显示数据库中fname字段内容,并在其他文本框中显示其他字段内容。

新手,还望耐心指教。
我认为错误的原因就出在变量的声明上,你在Form2中仍使用了rsta但这一变量并不存在。
你最好在程序的开头都加上

Option Explicit

这样运行时VB会提示你什么变量没有定义。
同意楼上观点。

建议改为:
Public rsta As Recordset
同意
加上
with form2   
    txtID = rsta!emp_id
    txtfname = rsta!fname
    txtlname = rsta!lname
    txtbirth = rsta!hire_date
    txtgender = rsta!minit
end with
在form1的代码中你漏了
with form2   
end with
应该为
with form2   
    .txtID = rsta!emp_id
    .txtfname = rsta!fname
    .txtlname = rsta!lname
    .txtbirth = rsta!hire_date
    .txtgender = rsta!minit
end with
Dim cona As Connection
Dim coma As Command
Dim rsta As Recordset

Dim 应该改成private或public,且应在过程外定义,这样其它过程才能使用这些变量
private cona As Connection
private coma As Command
private rsta As Recordset

agree all
VB挺复杂的,真是费解
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘