地址表中的数据:
A_ID A_ParentID A_Name
1 0 北京
2 0 天津
3 1 海淀区
4 3 中关村
我在类中写了个函数,做用是给一个地区ID(A_ID),返回这个地区的顶层地区ID,比如给4,就返回1: Dim myDb As New DB
Dim myDs As New ExtDB.DsSysArea Function GetAddressID(ByVal AID As Int32) As Int32
myDs.Clear()
myDb.FillDsSysArea(myDs)
Dim A_ID As Int32
A_ID = GetAddressIDSub(AID) '------GetAddressIDSub(4)返回的本应该是1,可结果是0
Return A_ID
End Function '由GetAddressID使用
Private Function GetAddressIDSub(ByVal AID As Int32) As Int32
Dim ParentID As Int32
For i = 0 To myDs.Tables(0).Rows.Count - 1
If AID = CType(myDs.Tables(0).Rows(i)(0), Int32) Then
ParentID = CType(myDs.Tables(0).Rows(i)(1), Int32)
If ParentID = 0 Then
Return CType(myDs.Tables(0).Rows(i)(0),Int32) ’--到这里还正确,myDs.Tables(0).Rows(i)(0)的值是1
Else
GetAddressIDSub(ParentID)
End If
Exit For
End If
Next
End Function在调用GetAddressID时给定的ID是4,GetAddressID调用GetAddressIDSub时返回的值是1,
可是在GetAddressID里执行到A_ID = GetAddressIDSub(AID)时A_ID 的值竟然是0,真是奇怪,请各位帮我看一下什么地方有问题,谢谢!
A_ID A_ParentID A_Name
1 0 北京
2 0 天津
3 1 海淀区
4 3 中关村
我在类中写了个函数,做用是给一个地区ID(A_ID),返回这个地区的顶层地区ID,比如给4,就返回1: Dim myDb As New DB
Dim myDs As New ExtDB.DsSysArea Function GetAddressID(ByVal AID As Int32) As Int32
myDs.Clear()
myDb.FillDsSysArea(myDs)
Dim A_ID As Int32
A_ID = GetAddressIDSub(AID) '------GetAddressIDSub(4)返回的本应该是1,可结果是0
Return A_ID
End Function '由GetAddressID使用
Private Function GetAddressIDSub(ByVal AID As Int32) As Int32
Dim ParentID As Int32
For i = 0 To myDs.Tables(0).Rows.Count - 1
If AID = CType(myDs.Tables(0).Rows(i)(0), Int32) Then
ParentID = CType(myDs.Tables(0).Rows(i)(1), Int32)
If ParentID = 0 Then
Return CType(myDs.Tables(0).Rows(i)(0),Int32) ’--到这里还正确,myDs.Tables(0).Rows(i)(0)的值是1
Else
GetAddressIDSub(ParentID)
End If
Exit For
End If
Next
End Function在调用GetAddressID时给定的ID是4,GetAddressID调用GetAddressIDSub时返回的值是1,
可是在GetAddressID里执行到A_ID = GetAddressIDSub(AID)时A_ID 的值竟然是0,真是奇怪,请各位帮我看一下什么地方有问题,谢谢!
解决方案 »
- 【求助~急!!】关于My97DatePicker的问题
- DataList嵌套gridview并对gridview分页
- 求一正则表达式,开头只能是v,s,p,a,e,紧接着第二个只能是1,或者0.5,该怎么写?
- ★★求助!!关于FileUpload上传文件并用GridView显示的菜鸟问题!!★★
- 怎样导入导出word、Excel到asp.net中
- csdn搜索功能出现如下错误,烦请斑竹修改一下,谢谢
- 新装的 .net 系统2003无法调试 WEB 程序(我可是装了4个小时的啊,救我!!!!)
- 关于文件上传问题,有没有可能在不存档的情况下读取上传文件内容?
- 怎樣讀取web.config的內容
- 散分贴,不好意思,刚刚给分时好象没给出去,重新给分。请 Dannel(盗帅) 、 wolve()、hdg_sy(Richard) 进来领分!
- 反射InvokeMember返回值
- 急急急急急!!!我该如何控制权限 (在线等)
1、定义了一个全局变: Dim AreaID as int32
2、把GetAddressIDSub返回值部分改为成了:AreaID=CType(myDs.Tables(0).Rows(i)(0),Int32)
3、GetAddressID函数:
Function GetAddressID(ByVal AID As Int32) As Int32
myDs.Clear()
myDb.FillDsSysArea(myDs)
GetAddressIDSub(AID)
Return AreaID
End Function经过这样改动后结果就正确了,输入4能返回1
这样看来问题就出在递归中Return CType(myDs.Tables(0).Rows(i)(0),Int32)有正确的值但不能把值返回去。实在是想不通为什么,请各位指点!