私はVB6プロジェクトを変更するように求められました。私が抱えている問題は、Accessデータベースからデータを取得し、そのデータをいくつかの変数に割り当てることです。VB6データベースから変数にデータを割り当てる
私は、コードを持っている:
はDta_Period.DatabaseName = DB_Accounts_Name$
Dta_Period.RecordSet = "SELECT * FROM [Period]"
Dta_Period.Refresh
表Period
は、2つのフィールドが含まれています。 sMonth
とPeriod
sMonth
フィールドには、1月から12月の月が含まれます。 Period
フィールドには、顧客の会計年度のどの月がどの番号に割り当てられたかを表す0〜11の番号が格納されます。 1月は0、または本質的に11であってもよい。
どの月がどの期間になるかを知る必要があります。そのため、私はこのデータをデータベースから選択しました。しかし、私は次に何をすべきかと固執しています。
RecordSet
をループするにはどうすればいいですか(これが可能であれば?)、各月に割り当てられている番号を調べるにはどうすればよいですか?
私はDo Until
ループを使用できる方法はないと思います。それは12の別のクエリを使用して簡単な文字列と整数の配列を作成し、私は正しい月を見つけるまで、文字列の配列をループする整数の配列の同じインデックスを使用するか? 1
EDITは自分自身との答えを提供しようと、誰の両方に従うことは、物事をシンプルにするために、私は、コードを変更しました。
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
これはあなたがそこにある奇妙なコードです。レコードセットを文字列に設定していますか?通常、レコードセットをループするために 'Do Until Recordset.EOF'を行うことはできますが、そこにある通常のDAOまたはADOレコードセットは疑わしいです。特定の回答が必要な場合は、何が起こっているのかを理解するのに十分なコードを共有する必要があります。 –
私はあなたのような何かをすることができると思う:https://msdn.microsoft.com/en-us/library/bb243789(v=office.12).aspx – Jeremy
万が一、レコードセットラッパークラスはありますか? –