VB程序中的一点小问题,请大家帮忙

出现如下两个问题:
1.生成结构树 程序段的.Nodes Compile error:Method or data member not found
2.生成物料清单 程序段的 root Compile error:ByRef argument type mismatch

程序如下:
Private conn As New ADODB.Connection
'建立数据库连接
Public Sub OpenConn()
With conn
If .State = adStateClosed Then
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DBPath;Persist Security Info=False"
.Open
End If
End With
End Sub

'打开记录集
Public Function OpenRecordset(ByVal strSql As String) As ADODB.Recordset
Dim rs As New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.Open strSql, conn, , , adCmdText
End With
Set OpenRecordset = rs
End Function

Dim root As Node

'加载窗体
Private Sub Form_Load()
End Sub

'把Drive1的地址赋给Dir1
Private Sub Drive1_Change()
Form1.Dir1.Path = Form1.Drive1.Drive
End Sub

'把Dir1的地址赋给File1
Private Sub Dir1_Change()
Form1.File1.Path = Form1.Dir1.Path
End Sub

'把File1的地址作为数据库名
Private Sub File1_Click()
If InStr(File1.FileName, ".") = 0 Then
DBName = File1.FileName
Else
DBName = Left(File1.FileName, InStr(Form1.File1.FileName, ".") - 1)
End If
MsgBox DBName
End Sub

'生成结构树

Private Sub Command1_Click()
OpenConn
Set root = TreeView1.Nodes.Add(, , , "DBName")
root.Tag = 1
AddNodes "自行车", root
End Sub

'生成物料清单
Private Sub Command2_Click()
OpenConn
MSFlexGrid1.Cols = 2
MSFlexGrid1.Rows = 1
MSFlexGrid1.TextMatrix(0, 0) = "名称"
MSFlexGrid1.TextMatrix(0, 1) = "数量"
AddRows root
End Sub

'发生错误时退回到原来的状态
Public Function RunTrans(ByVal tranSql As String)
With conn
.BeginTrans
.Execute tranSql
.CommitTrans
End With
End Function

'加载节点生成结构树及统计零部件数量
Public Sub AddNodes(TableName As String, TNode As Node)
Dim pNode As Node
Dim rs As ADODB.Recordset
Set rs = OpenRecordset("select 名称,有无子结点 from " & TableName)
Do While Not rs.EOF
Set pNode = TreeView1.Nodes.Add(TNode, 4, , rs!名称)
pNode.Tag = rs!数量 * TNode.Tag
If rs!有无子节点 Then
AddNodes rs!名称, pNode
End If
rs.MoveNext
Loop
TNode.Expanded = True
End Sub

'向MSFlexGrid中添加记录
Public Sub AddRows(TNode As Node)
Dim pNode As Node
Set pNode = TNode.Child
Do While Not pNode Is Nothing
MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 0) = pNode.Text
MSFlexGrid1.TextMatrix(MSFlexGrid1.Rows - 1, 1) = pNode.Tag
AddRows pNode
Set pNode = pNode.Next
Loop
End Sub
我把这个有错的VB工程,放到happy_baidu@yahoo.cn这个邮箱里了,密码是123456.
把附件下下来后可以直接用于调试,谢谢。

Dim root As Node
'这句要放在最上面

'加载节点生成结构树及统计零部件数量
Public Sub AddNodes(TableName As String, TNode As Node)
Dim pNode As Node
Dim rs As ADODB.Recordset
Set rs = OpenRecordset("select 名称,有无子结点,数量 from " & TableName)
Do While Not rs.EOF
Set pNode = TreeView1.Nodes.Add(TNode, 4, , rs!名称)
pNode.Tag = rs!数量 * TNode.Tag
If rs!有无子节点 Then
AddNodes rs!名称, pNode
End If
rs.MoveNext
Loop
TNode.Expanded = True
End Sub
温馨提示:内容为网友见解,仅供参考
无其他回答

vb的小问题。高手请进
要解决VB的小问题,首先在菜单中找到“工程\/引用\/Microsoft Script Control 1。0”,确保前面有勾,然后点击OK,你将获得满意的答案,并且得到高分。在代码中,我们定义了几个变量。`Dim objScript As New ScriptControl` 创建了一个新的ScriptControl对象。`a As Double, x As Double, y As String`...

VB中的一个问题
在Visual Basic编程中,你可能遇到一个关于错误处理的问题。当你试图在子程序之外使用错误处理语句时,可能会遇到不预期的行为。具体来说,错误处理语句如 `errorhandle:` 通常放在子程序内部,以便在子程序执行过程中遇到错误时能捕获并处理。然而,你可能在尝试将 `errorhandle:` 语句放置在子程序之外。...

求助vb的一个小问题。 谢谢帮助~ 表达式LenB("123 程序设计 ABC")的...
VB内部采用Unicode编码格式,即任何字符(含半角字母、数字、符号以及全角汉字、符号等)都由两个字节组成的(半角字符的高位字节为0,低位字节为其ASCII码)。因此,“123 程序设计 ABC”这个字符串包含12个字符(有两个空格),即24个字节,因此LenB("123 程序设计 ABC")的值为24 ...

VB编程的问题!会VB语言的请帮帮我!
在VB编程中,要解决三角函数计算问题,程序员通常以弪作为函数的计算单位。了解这一点,对于理解相关代码至关重要。举例说明,若要计算给定值的反正弦,可以使用公式Cos-1度数 = 90 - (Atn(值\/(1 - 值^2)^0.5))\/0.0174532925。这里,值指的是输入的数。将度数转换为弪时,只需将度数乘以0.0...

VB程序问题,急急急,求助!
1、提供界面让用户输入,只要一对文本框输入坐标,采用多次输入的方式(每次输入一个点)。在两个文本框输入坐标(x,y)后点击“添加”按钮,保存该坐标,如此循环录入即可。最好用一个标签提示当前已经输入的坐标。可以用二维数组保存所有已经输入的坐标(当然因为个数不确定,用集合Collection更好)。至于...

VB中,一个简单的问题.高手帮帮
这时数据已在剪切板中.实际上你的第二问题要比第一要麻烦些,而且不是1个问题是2个.因为要申明的API比一问多,提示使用FindWindow 查找顶层窗口比如"QQ",FindWindowEx查找指定窗口的子窗口.来找你所需要的指定窗口.如果存在当前在运行.当然也可以设置挂钩到系统上捕获程序启动信息,来判断,这样的...

一个VB小程序,请高手帮忙查错修改
一个VB小程序,需要高手帮忙检查错误并进行修改。代码如下:vb Dim x as long, y As long Private Sub Command1_Click()Text3.Text = x + y End Sub Private Sub Command2_Click()text1.text=""text2.text=""text3.text=""End Sub Private Sub Command3_Click()End End Sub Private Sub...

一道VB题 希望各位大侠帮忙
4、因为前面已经处理了a(0),所以就下标从1开始,而不是用LBound(a);5、这是编程错误引起的。具体的位置是If a(i) < min Then min = a(i): a(imin) = i中间的 a(imin) = i,这里本来是记录最小元素的位置i到imin中,但写程序的人搞错了,把最小的元素的序号i写到数组里面了(...

求大神赐教VB中的一点问题,关于控件MSCOMCTL.OCX的
运行VB6,添加部件时,点“浏览”(就是你图中那个消息框挡住了的地方)打开MSCOMCTL.OCX 当然你也可以试下用管理员身份运行Cmd,再用regsvr32注册控件。还有一个问题,就是MSCOMCTL.OCX是32位组件,它的存放目录,应该是在:C:\\Windows\\SysWOW64 你们都放入System32中了。不知道跟这个有没有关系。

求大神赐教VB中的一点问题,关于控件MSCOMCTL.OCX的
以“管理员身份”运行VB6,添加部件时,点“浏览”(就是你图中那个消息框挡住了的地方)打开MSCOMCTL.OCX 当然你也可以试下用管理员身份运行Cmd,再用regsvr32注册控件。还有一个问题,就是MSCOMCTL.OCX是32位组件,它的存放目录,应该是在:C:\\Windows\\SysWOW64 你把它放入System32中了。不知道跟这个...

相似回答
大家正在搜