Wie erstelle ich sql String zum Füllen des Kombinationsfelds?

Hallo,

ich versuche gerade Access zu verstehen und habe nun ein Problem.

Ich habe zwei Kombinationsfelder:

  1. KombiFeld01
  2. KombiFeld02

Das zweite Kombinationsfeld soll abhängig von der Auswahl vom ersten Kombinationsfeld Einträge aus einer weiteren Tabelle anzeigen.

Das erste Kombinationsfeld wird bereits aus einer anderen Tabelle gefüllt.

Ich versuche also jetzt per VBA irgendwie einen Bezug von der Auswahl zur Tabelle zu erzeugen und komme nicht weiter.

Das sieht nun so aus (Variablen, weil ich nicht weiß wie ich die Spalten der Tabelle anhand der Auswahl im Kombinationsfeld auswählen soll):

Private Sub KombiFeld01_AfterUpdate()

  Dim strSQL As String, Auswahl As String, Spalte As String, cbo As ComboBox, cbo2 As ComboBox

   

  Set cbo = Me!KombiFeld01

  Set cbo2 = Me!KombiFeld02

   

  Select Case True

  Case cbo = "Artikelbezeichnung"

  Spalte = "Artikelbezeichnung"

  Case cbo = "Artikel-Nummer"

  Spalte = "ArtikelNummer"

  Case cbo = "FA-Nummer"

  Spalte = "FANummer"

  Case cbo = "Fehlermeldung Nr."

  Spalte = "Nr"

  Case cbo = "Kunde"

  Spalte = "KundeLang"

  Case cbo = "Status"

  Spalte = Me!KombiFeld01

  Case cbo = "Zuständig"

  Spalte = "zuständig"

  End Select

   

  strSQL = "SELECT DISTINCT '" & Spalte & "' FROM Fehlermeldungen ORDER BY '" & Spalte & "' WHERE '" & cbo & "' "

  cbo2.RowSource = strSQL

End Sub

Ich verstehe nicht, wie Select where überhaupt funktioniert.

Vielleicht kann jemand helfen. Vielen Dank.

Access, VBA
Kann man den Benutzernamen in einem UserForm Label angeben, der das Dokument geöffnet hat?

Hi, ich liebe Herausforderungen und komme auch nach und nach weiter. Nun habe ich diese Funktion welche prüft, ob eine bestimmte Datei geöffnet ist:

Public Function IsFileOpen(FileName As String)
    Dim filenum As Integer, errnum As Integer
    On Error Resume Next
    filenum = FreeFile()
    Open FileName For Input Lock Read As #filenum
    Close filenum
    errnum = Err
    On Error GoTo 0
    Select Case errnum
    Case 0
    IsFileOpen = False
    Case 70
    IsFileOpen = True
    Case Else
    Error errnum
    End Select
End Function

Mit dieser Funktion kann ich arbeiten, wenn das Dokument von wem auch immer geöffnet ist, öffnet sich eine UserForm.

Nun möchte ich gerne mit dieser Funktion ermitteln, welcher Benutzer das Dokument geöffnet hat:

Public Function LastUser(strPath As String) As String
    Dim strXl As String
    Dim strFlag1 As String, strflag2 As String
    Dim i As Integer, j As Integer
    Dim hdlFile As Long
    Dim lNameLen As Byte
   
    strFlag1 = Chr(0) & Chr(0)
    strflag2 = Chr(32) & Chr(32)
   
    hdlFile = FreeFile
    Open strPath For Binary As #hdlFile
        strXl = Space(LOF(hdlFile))
        Get 1, , strXl
    Close #hdlFile
   
    j = InStr(1, strXl, strflag2)
   
    #If Not VBA6 Then
        '// Xl97
        For i = j - 1 To 1 Step -1
            If Mid(strXl, i, 1) = Chr(0) Then Exit For
        Next
        i = i + 1
    #Else
        '// Xl2000+
        i = InStrRev(strXl, strFlag1, j) + Len(strFlag1)
    #End If
   
    '// IFM
    lNameLen = Asc(Mid(strXl, i - 3, 1))
    LastUser = Mid(strXl, i, lNameLen)
End Function

Aber das klappt nicht...

Ich habe es mit diesem Code probiert und diesen an meinen Pfad und das Dokument angepasst:

Private Sub TestVBA()
'http://www.xcelfiles.com/IsFileOpenVBA.htm
'// Just change the file to test here
Const strFileToOpen As String = "C:\Data.xls"
If IsFileOpen(strFileToOpen) Then
MsgBox strFileToOpen & " is already Open" & _
vbCrLf & "By " & LastUser(strFileToOpen), vbInformation, "File in Use"
Else
MsgBox strFileToOpen & " is not open", vbInformation
End If
End Sub

Bekomme immer Fehler 52.

Ich würde aber gerne den Benutzernamen auch später in der UserForm (anstatt einer MsgBox) im Label anzeigen, was ich ebenfalls nicht hinbekomme.

Weiß jemand, wie ich den Benutzernamen ermittel, der das Dokument geöffnet hat und ich diesen dann in den Label-Text einbauen kann? Oder geht das nicht?

Vielen herzlichen Dank im Voraus.

Microsoft Excel, VBA, VBA Excel
Mehrere MsgBox-Abfragen hintereinander möglich?

Hallo, da hier doch so viele Könner unterwegs sind: Ich hänge schon wieder fest.

Ich habe zwei msg-Boxen vbYesNoCancel. Wenn die erste Box mit Ja bestätigt wird, wird eine Prozedur gestartet.
Wenn ich den Button Abbrechen klicke, soll die zuletzt geöffnete Userform neu geladen und die Sub beendet werden.

Wenn ich den Nein Button klicke öffnet sich die nächste msg Box vbYesNoCancel.
Wenn nun Ja geklickt wird, wird wieder eine Prozedur gestartet, beim Abbrechen wieder die Userform neu geladen und die Sub beendet.
Und bei Nein wird eine weitere Prozedur gestartet.

Eigentlich dürfte es ja nicht schwer sein, aber bei mir hängt es. Die Userform wird neu geladen aber die nächste msg Box öffnet nur und dann passiert nichts, wenn ich dort einen Button klicke.

So sieht es nun aus (und vielen Dank im Voraus):

Public Sub InspectionCriterion()
    Dim msg As String, msg2 As String, msg3 As String
    msg = MsgBox("Ist das Merkmal ein Gewinde?", vbYesNoCancel + vbQuestion, "")
    


    If msg = vbYes Then
    UserFormThread.Show
    ElseIf msg = vbNo Then
    msg2 = MsgBox("Ist das Merkmal zu messen?", vbYesNoCancel + vbQuestion, "")
    ElseIf msg = vbCancel Then
    Call InspectionFeatures
    Exit Sub
    


    If msg2 = vbYes Then
    UserFormDimension.Show
    ElseIf msg2 = vbNo Then UserFormText.Show
    Else
    Exit Sub
    End If
    End If
    
    
End Su  
Computer, Microsoft Excel, VBA Excel