0
我被要求對VB6項目進行更改。我遇到的問題是我試圖從Access數據庫獲取一些數據並將數據分配給一些變量。VB6將數據分配給數據庫中的變量
我已經得到了代碼:
Dta_Period.DatabaseName = DB_Accounts_Name$
Dta_Period.RecordSet = "SELECT * FROM [Period]"
Dta_Period.Refresh
表Period
包含2場。 sMonth
和Period
sMonth
字段包含月份 - 月份 - 月份。 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
這是你到達那裏的一些奇怪的代碼。你正在設置一個等於一個字符串的記錄集?通常情況下,您可以「直到Recordset.EOF」循環遍歷記錄集,但我懷疑這是您正常使用的正常DAO或ADO記錄集。如果你想要一個特定的答案,你將不得不分享足夠的代碼,以便我們理解發生了什麼。 –
我認爲你應該能夠做到這樣的事情:https://msdn.microsoft.com/en-us/library/bb243789(v=office.12).aspx – Jeremy
是否有任何機會的記錄集包裝類? –