2017-01-26 2 views
0

Ich versuche, ein Formularfeld zu verwenden, um eine Tabelle Spalte Wert zu überprüfen, um eine Abfrage vorzuführen, um das auszuführen ist der Code, den ich habe, aber ich bekomme eine Laufzeit Error.VBA kann nicht, wenn, elseif, else Anweisung zu arbeiten

' Set Warnings 
DoCmd.SetWarnings False 
If Forms!FrmCopyRoutingMenu!TextTarget = tblQuoteSection1Lines!tblQuoteMstrID Then 
    MsgBox ("Quote Section 1 Already Started! Please Copy Individual Sections.") 

ElseIf Forms!FrmCopyRoutingMenu!TextTarget = Table!tblQuoteSection2Lines!tblQuoteMstrID Then 
    MsgBox ("Quote Section 2 Already Started! Please Copy Individual Sections.") 

ElseIf Forms!FrmCopyRoutingMenu!TextTarget = Table!tblQuoteSection3Lines!tblQuoteMstrID Then 
    MsgBox ("Quote Section 3 Already Started! Please Copy Individual Sections.") 

ElseIf Forms!FrmCopyRoutingMenu!TextTarget = Table!tblQuoteSection4Lines!tblQuoteMstrID Then 
    MsgBox ("Quote Section 4 Already Started! Please Copy Individual Sections.") 

ElseIf Forms!FrmCopyRoutingMenu!TextTarget = Table!tblQuoteSection5Lines!tblQuoteMstrID Then 
    MsgBox ("Quote Section 5 Already Started! Please Copy Individual Sections.") 

Else 
+0

Willkommen bei Stack Overflow. Es wäre ratsam, die Fehlermeldung (en) zu posten, die Sie bei Ihrem Problem gefunden haben. Dadurch können Benutzer bestimmen, was vor sich geht. – Brian

+0

Laufzeitfehler '424' Objekt erforderlich – Corey

+0

Ich glaube nicht, dass Sie so eine Tabelle verknüpfen können. Sie müssen die Tabelle mit einem Re-Cord-Set-Objekt öffnen und die Spalte auf diese Weise abrufen. – abraxascarab

Antwort

2

Möchten Sie überprüfen, ob der Wert in TextTarget irgendwo in dem ID-Feld jeder Tabelle ist? Funktioniert das?

Dim target As String 
Dim Found As Boolean 

target = Forms!FrmCopyRoutingMenu!TextTarget 
Found = False 

For i = 1 To 5 
If DCount("tblQuoteMstrID", "tblQuoteSection" & i & "Lines", "tblQuoteMstrID = '" & target & "'") > 0 Then 
    MsgBox ("Quote Section " & i & " Already Started! Please Copy Individual Sections.") 
    Found = True 
End If 
Next i 

If Not Found Then 
    'code to run query goes here 
End If 
+0

Das sieht so aus, als könnte es funktionieren, aber ich kann es nicht auf meine else-Anweisung übertragen, die die Abfrage ausführt, wenn sie nicht wahr ist. – Corey

+0

@Corey Ein Weg wäre, einen booleschen Wert einzufügen, der nach dem Ende der Schleife überprüft werden kann. Ich habe meine Antwort entsprechend bearbeitet – Leroy

+0

Vielen Dank für Ihre Hilfe zu diesem Thema, aber ich habe es funktioniert mit einer Abfrage, um eine einzelne Tabelle der gewünschten Master-IDs aus jeder Tabelle zu erstellen, und dann habe ich verwendet, wenn (DAVG()> 0) . Nochmals vielen Dank für die Hilfe dabei waren Ihre Ideen genau das, was ich brauchte, um das Thema aus einer anderen Richtung zu betrachten. – Corey