2014-02-18 17 views
0

有人可以幫助我。我試圖用一種形式在兩個不同的記錄集中顯示一個警報msgbox,所以無論何時出現過期的藥物,它都會同時顯示和警報。但它給我 「在目前的範圍重複錯誤」 錯誤在這一行當前範圍內的重複錯誤vb 6

Dim expirationdate As Date 
Do While Not Adodc2.Recordset.EOF = True 

'----------'

Private Sub Form_Activate() 
    Dim expirationdate As Date 
    Me.AutoRedraw = True 
    Adodc1.Recordset.MoveFirst 
    Do While Not Adodc1.Recordset.EOF = True 
     With Main 
      .Text4.Text = "" & Adodc1.Recordset.Fields("MedicineName") 
      .Text1.Text = Adodc1.Recordset.Fields("genericname") 
      .Text3.Text = Adodc1.Recordset.Fields("StockQuantity") 
      .Combo3.Text = Adodc1.Recordset.Fields("Expmonth") 
      .Combo4.Text = Adodc1.Recordset.Fields("Expday") 
      .Combo5.Text = Adodc1.Recordset.Fields("Expyear") 
     End With 
     expirationdate = CDate(Combo3 & "/" & Combo4 & "/" & Combo5) 
     datepicker.Value = Format(Now, "MMM-DD-yyyy") 
      If datepicker > expirationdate Then 
      MsgBox Text4.Text & " is Expired! ", vbExclamation, "Warning" 
      If MsgBox("Do you want to dispose " & Text4 & "?", vbQuestion + vbYesNo, "Message") = vbYes Then 
       Adodc1.Recordset.Delete 
      Else 
       Exit Sub 
      End If 
     End If 
    Adodc1.Recordset.MoveNext 
    Loop 

    '________________' 

    Dim expirationdate As Date 
    Me.AutoRedraw = True 
    Adodc2.Recordset.MoveFirst 
    Do While Not Adodc2.Recordset.EOF = True 
     With Main 
      .Text10 = Adodc2.Recordset.Fields("roomno") 
      .Text11 = "" & Adodc2.Recordset.Fields("MedicineName") 
      .Text2 = Adodc2.Recordset.Fields("GenericName") 
      .Text12.Text = Adodc2.Recordset.Fields("StockQuantity") 
      .Combo10 = Adodc2.Recordset.Fields("Expmonth") 
      .Combo11 = Adodc2.Recordset.Fields("Expday") 
      .Combo12 = Adodc2.Recordset.Fields("Expyear") 
     End With 

     expirationdate = CDate(Combo10 & "/" & Combo11 & "/" & Combo12) 

     datepicker2.Value = Format(Now, "MMM-DD-yyyy") 

     If datepicker2 < expirationdate Then 
      MsgBox "OK!", vbInformation, "Working" 
     Else 
      MsgBox "Medicine Expired!.", vbExclamation, " Warning!" 

      If MsgBox("Do you want to delete " & Text11 & "?", vbQuestion + vbYesNo, "Message") = vbYes Then 
       Adodc2.Recordset.Delete 
       Exit Sub 
      End If 
     End If 
     Adodc2.Recordset.MoveNext 
    Loop 

End Sub 
+2

您已經有一個變量expirationdate在您的代碼中聲明更高。在同一範圍內不能有多個具有相同名稱的變量,在本例中爲Sub方法Form_Activate。只需刪除第二個Dim expirationdate As Date或更改變量名稱即可。 – jac

+0

我刪除變量名稱Dim expirationdate As Date。 我沒有得到任何錯誤。但仍然沒有工作。它不顯示第二個記錄集的值。 – Christine

回答

1

試試這個。您有時依賴於控件的默認屬性。這通常是不好的,所以我添加了屬性。我也刪除了Exit Sub這一行。如果用戶單擊您不想退出該子,則想要繼續循環Adodc2記錄集。

Me.AutoRedraw = True 
Adodc2.Recordset.MoveFirst 
Do While Not Adodc2.Recordset.EOF = True 
    With Main 
     .Text10.Text = Adodc2.Recordset.Fields("roomno") 
     .Text11.Text = "" & Adodc2.Recordset.Fields("MedicineName") 
     .Text2.Text = Adodc2.Recordset.Fields("GenericName") 
     .Text12.Text = Adodc2.Recordset.Fields("StockQuantity") 
     .Combo10.Text = Adodc2.Recordset.Fields("Expmonth") 
     .Combo11.Text = Adodc2.Recordset.Fields("Expday") 
     .Combo12.Text = Adodc2.Recordset.Fields("Expyear") 
    End With 

    expirationdate = CDate(Combo10.Text & "/" & Combo11.Text & "/" & Combo12.Text) 

    datepicker2.Value = Format(Now, "MMM-DD-yyyy") 

    If datepicker2.Value < expirationdate Then 
     MsgBox "OK!", vbInformation, "Working" 
    Else 
     MsgBox "Medicine Expired!.", vbExclamation, " Warning!" 
     If MsgBox("Do you want to delete " & Text11.Text & "?", vbQuestion + vbYesNo, "Message") = vbYes Then 
      Adodc2.Recordset.Delete 
     End If 
    End If 
    Adodc2.Recordset.MoveNext 
Loop 
+0

它現在的作品先生非常感謝你的所有幫助:)) – Christine

+0

@Christine:你應該標記Jac的答案是正確的。 – Paul