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
편집은 자신과 답변을 제공하기 위해 시도하는 사람 모두에 따를 것을 간단하게하기 위해, 나는 코드를 수정했습니다.
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
혹시라도 레코드 래퍼 클래스가 있는가? –