VB6将数据分配给数据库中的变量



我被要求对VB6项目进行更改。我遇到的问题是,我试图从Access数据库中获取一些数据,并将这些数据分配给一些变量。

我有代码:

Dta_Period.DatabaseName = DB_Accounts_Name$
Dta_Period.RecordSet = "SELECT * FROM [Period]"
Dta_Period.Refresh

Period包含2个字段。sMonthPeriodsMonth字段包含一月至十二月。Period字段存储一个数字0到11,表示客户财政年度中哪个月分配了哪个数字。1月可能是0,也可能是11。

我需要知道哪个月和哪个时期,这就是为什么我从数据库中选择了这些数据。然而,我被下一步该做什么所困扰。

我如何在RecordSet上循环(如果可能的话?)并找出每个月分配的号码?

我认为没有办法使用Do Until循环。只使用12个单独的查询,然后创建一个字符串数组和一个整数数组,然后在字符串数组上循环,直到我找到正确的月份,对整数数组使用相同的索引,这更容易吗?

编辑1

为了让我自己和任何试图提供答案的人都更容易理解,我修改了代码。

Dim rstPeriod As DAO.RecordSet
Dim accDB As DAO.Database
' DB_Session is a Workspace, whilst DB_Accounts_Name$ is the name of the DB I am using
Set accDB = DB_Session.OpenDatabase(DB_Accounts_Name$)
SQL = "SELECT * FROM [Period] ORDER BY [Period]"
Set rstPeriod = accDB.OpenRecordset(SQL, dbOpenDynaset)
If rstPeriod.BOF = False Then
rstPeriod.MoveFirst
End If
Dim strMonth(11) As String
Dim pNumber(11) As Integer

伪码思想:

Do Until rstPeriod.EOF
Select Case currentRow.Field("Month")
Case "January"
strMonth(0) = "January"
pNumber(0) = currentRow.Field("Number")
Case "February"
strMonth(1) = "February"
pNumber(1) = currentRow.Field("Number")
End Select
Loop

循环记录集,并用月份名称和月份编号填充数组。

这假设记录集返回的记录不超过12条。

Public Sub LoopThroughtRecordset()
On Error GoTo ErrorTrap
Dim rs As DAO.Recordset
Set rs = CurrentDb().OpenRecordset("SELECT * FROM [Period] ORDER BY [Period]", dbOpenSnapShot)
With rs
If .EOF Then GoTo Leave
.MoveLast
.MoveFirst
End With
Dim strMonth(11) As String
Dim pNumber(11) As Integer
Dim idx As Long
For idx = 0 To rs.RecordCount -1
strMonth(idx) = rs![Month]
pNumber(idx) = rs![Number]
rs.MoveNext
Next idx
Leave:
On Error Resume Next
rs.Close
Set rs = Nothing
On Error GoTo 0
Exit Sub
ErrorTrap:
MsgBox Err.Description, vbCritical, CurrentDb.Properties("AppTitle")
Resume Leave
End Sub
'strMonth(0) = January
'strMonth(1) = February
'...
'pNumber(0) = 1
'pNumber(1) = 2
'...

最新更新