-2

vb 6.0を使用してアカウントの残高を計算し、dbaseの例にアクセスする方法:

January 2000   2500.00
Febuary 2000   2300.00

ユーザーが2000年1月を選択すると、2500.00が表示され、ユーザーが2000年2月を選択すると、4800.00が表示されます。

誰かが私を助けてくれることを願っていますありがとう

Dim TOTAL, FMACT As Double 
TOTAL = 0 
Set rs2 = New ADODB.Recordset 

With rs2 
    .Open "SELECT * FROM SW WHERE dtaYear=" & cmbYear.Text & " ", Con, 1, 2 
    Let FMACT = rs2![SWACTFM] 

    If .RecordCount > 0 Then 
        TOTAL = TOTAL + FMACT 
        .MoveFirst 

        Do While rs2.EOF = True 
            .MoveNext 
            ExcelWS.Cells(6, 7) = TOTAL 
        Loop 
    End If 

   .Close 
   Set rs2 = Nothing 
End With
4

1 に答える 1

0

コードに問題があります

  1. Total はDo Whileループの外にあるため、累積されません
  2. .MoveNextの後に実行する必要がありExcelWS.Cells(6,7) = TOTALます。そうしないと、最初のレコードが失われます

データベースから毎回 1 つのレコードのみをフェッチする場合は、while ループは必要ないようです。これを試すことができます。

Private Total As Double
Total = 0

Private Sub Cal_Total()
    Set rs2 = New ADODB.Recordset 

    With rs2 
        .Open "SELECT * FROM SW WHERE dtaYear=" & cmbYear.Text & " ", Con, 1, 2 

        .MoveFirst
        If .RecordCount > 0 Then 
            Do While rs2.EOF = False 
                Total = Total + rs2![SWACTFM]
                .MoveNext
            Loop

            ExcelWS.Cells(6,7) = Total
        End If 

       .Close 
       Set rs2 = Nothing 
    End With
End Sub
于 2012-05-17T04:27:21.677 に答える