Office: Auslesen einer Abfrage in VBA Modul

Helfe beim Thema Auslesen einer Abfrage in VBA Modul in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich wünsche allen ein frohes und gesundes Jahr 2024. Ich habe eine alte Access 2003 und da habe ich zur Ermittlung von Planungsdaten... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von MKeil, 5. Januar 2024.

  1. MKeil
    MKeil Neuer User

    Auslesen einer Abfrage in VBA Modul


    Hallo zusammen,
    ich wünsche allen ein frohes und gesundes Jahr 2024.
    Ich habe eine alte Access 2003 und da habe ich zur Ermittlung von Planungsdaten folgende Funktion genutzt, jetzt mit Office 365 funktioniert diese in der aktuelle Access Version leider nicht mehr. Kann mir jemand sagen, was ich ändern muss?

    Static Function Ende(aplnr, Start, Belegung, Reihenfolge)
    'Variablendeklaration
    Dim k As Double 'Variable für die Kapazität
    Dim Kap As Double 'Variable für Kapazität aus der Abfrage
    Dim MeineDB As Recordset
    Dim MeineDB1 As Recordset
    Dim AktuelleDB As Database
    Dim i As Integer
    Dim j As Integer
    Dim Anzahl As Integer
    Dim strKriterien As Variant
    Dim S As Variant
    Dim SDB As Variant
    Dim B As Double 'Belegung in Stunden
    Dim RestKap As Double

    Set AktuelleDB = CurrentDb
    'If Reihenfolge = 1 Then
    If BOF = True Then
    B = 0
    RestKap = 0
    End If

    Debug.Print "b am Anfang R = 1", B
    Debug.Print "RestKap am Anfang R = 1", RestKap
    Select Case aplnr
    Set AktuelleDB = CurrentDb
    Set MeineDB = AktuelleDB.OpenRecordset("Abfrage Kapazität M 852", dbOpenDynaset)
    'Set MeineDB1 = AktuelleDB.OpenRecordset("Abfrage Kapazität M 801 DS", dbOpenDynaset)

    MeineDB.MoveLast
    Anzahl = MeineDB.RecordCount
    Debug.Print "anzahl", Anzahl
    MeineDB.MoveFirst
    B = Belegung / 60
    Debug.Print "b"; B
    For i = 1 To Anzahl
    SDB = Format(MeineDB!Tagesdatum, "dd.mm.yyyy")
    Debug.Print "SDB", SDB
    If Start = SDB Then
    If BOF = True Then 'Reihenfolge = 1 Then
    Kap = MeineDB!Kapazität
    'RestKap = Kap - b
    Debug.Print "Kap", Kap
    Debug.Print "RestKAp vor Zuordnung:", RestKap
    Exit For
    Else
    Debug.Print "Kap bei R>1", Kap
    Debug.Print "RestKAp bei R>1:", RestKap
    Exit For
    End If
    Else
    MeineDB.MoveNext
    End If
    Next i
    If BOF = True Then 'Reihenfolge = 1 Then
    RestKap = Kap - B
    Else
    RestKap = RestKap - B
    End If
    Debug.Print "RestKap", RestKap
    For j = i To Anzahl
    If RestKap > 0 Then
    Ende = SDB
    'RestKap = Kap - b
    Debug.Print "RestKap1", RestKap
    Debug.Print "ende", Ende
    Exit For
    Else
    MeineDB.MoveNext
    RestKap = RestKap + MeineDB!Kapazität
    Debug.Print "Kap1", Kap
    Debug.Print "RestKap2", RestKap
    SDB = MeineDB!Tagesdatum
    End If
    Next j
    End Function


    Nun kommt es schon hier
    Anzahl = MeineDB.RecordCount
    zu einer Fehlermeldung "Fehler beim Komplieren: Typen unverträglich

    und auch an dieser Stelle

    Set AktuelleDB = CurrentDb
    Set MeineDB = AktuelleDB.OpenRecordset("Abfrage Kapazität M 852", dbOpenDynaset)
    kommt der Fehler "Typ unverträglich

    Gibt es da andere Befehle?

    Danke
    Matthias
     
  2. Doming
    Doming hat Ahnung
    Hallo Matthias,
    hier steht, dass Record.count den Datentyp Long Integer ausgibt. Sollte das nicht funktionieren, setze Anzahl doch mal auf Variant.
    Bei dem zweiten Problemfall guck Dir mal die Zeile vorher an. Mein Access2016 meckert, weil Du zwar mit Select Case die Select-Abfrage öffnest, sie aber nirgendwo mehr schließt.
    Gruß
    Doming
    Bitte setze Deine Listings in Code-Tags, damit man sich in dem Code besser zurechtfindet.
    Code:
    Static Function Ende(aplnr, Start, Belegung, Reihenfolge)
    'Variablendeklaration
     Dim k As Double 'Variable für die Kapazität
     Dim Kap As Double 'Variable für Kapazität aus der Abfrage
     Dim MeineDB As Recordset
     Dim MeineDB1 As Recordset
     Dim AktuelleDB As Database
     Dim i As Integer
     Dim j As Integer
     Dim Anzahl As Integer
     Dim strKriterien As Variant
     Dim S As Variant
     Dim SDB As Variant
     Dim B As Double 'Belegung in Stunden
     Dim RestKap As Double
    
        Set AktuelleDB = CurrentDb
        'If Reihenfolge = 1 Then
        If BOF = True Then
            B = 0
            RestKap = 0
        End If
       
        Debug.Print "b am Anfang R = 1", B
        Debug.Print "RestKap am Anfang R = 1", RestKap
        Select Case aplnr
    '---------- vergessen?
        End Select
    '----------
        Set AktuelleDB = CurrentDb
        Set MeineDB = AktuelleDB.OpenRecordset("Abfrage Kapazität M 852", dbOpenDynaset)
        'Set MeineDB1 = AktuelleDB.OpenRecordset("Abfrage Kapazität M 801 DS", dbOpenDynaset)
       
        MeineDB.MoveLast
        Anzahl = MeineDB.RecordCount
        Debug.Print "anzahl", Anzahl
        MeineDB.MoveFirst
        B = Belegung / 60
        Debug.Print "b"; B
        For i = 1 To Anzahl
            SDB = Format(MeineDB!Tagesdatum, "dd.mm.yyyy")
            Debug.Print "SDB", SDB
            If Start = SDB Then
                If BOF = True Then 'Reihenfolge = 1 Then
                    Kap = MeineDB!Kapazität
                    'RestKap = Kap - b
                    Debug.Print "Kap", Kap
                    Debug.Print "RestKAp vor Zuordnung:", RestKap
                    Exit For
                Else
                    Debug.Print "Kap bei R>1", Kap
                    Debug.Print "RestKAp bei R>1:", RestKap
                    Exit For
                End If
            Else
                MeineDB.MoveNext
            End If
        Next i
        If BOF = True Then 'Reihenfolge = 1 Then
            RestKap = Kap - B
        Else
            RestKap = RestKap - B
        End If
        Debug.Print "RestKap", RestKap
        For j = i To Anzahl
            If RestKap > 0 Then
                Ende = SDB
                'RestKap = Kap - b
                Debug.Print "RestKap1", RestKap
                Debug.Print "ende", Ende
                Exit For
            Else
                MeineDB.MoveNext
                RestKap = RestKap + MeineDB!Kapazität
                Debug.Print "Kap1", Kap
                Debug.Print "RestKap2", RestKap
                SDB = MeineDB!Tagesdatum
            End If
        Next j
    End Function
    
     
    Doming, 5. Januar 2024
    #2
  3. MKeil
    MKeil Neuer User
    Hallo Doming,
    danke für den Hinweis, das end select hatte ich nur vergessen zu kopieren.
    Beim Count mit den Variant funktioniert, nun meckert Access nicht

    Es bleibt das Problem mit dieser Zeile
    Set MeineDB = AktuelleDB.OpenRecordset("Abfrage Kapazität M 852", dbOpenDynaset)
    da kommt auch der Hinweis "Typen unverträglich"
    Ich glaube das hat auch etwas mit den Verweisen zutun, in der alten Access Version hatte ich DAO350.dll, das gibt es aber jetzt nicht mehr.
    Ich hatte ja die Anfrage Datensatz für Datensatz ausgelesen um daraus dann Kapazitäten und Startdatum zu ermitteln.
    Kann man Abfragen anderes auslesen?

    danke und ein schönes Wochenende
    Matthias
     
  4. Doming
    Doming hat Ahnung

    Auslesen einer Abfrage in VBA Modul

    Hallo,
    die Funktion an sich kann ich natürlich nicht probieren.
    Ich habe Deinen Code nur in eine Testdatenbank kopiert und durch den Debugger geschickt.
    Nach dem End Select meckert bei mir nichts mehr.
    Folgende Verweise sind bei mir aktiviert
    Auslesen einer Abfrage in VBA Modul upload_2024-1-5_20-21-30.png
    Kannst ja mal gucken, ob Dir das hilft.
     
    Doming, 5. Januar 2024
    #4
  5. MKeil
    MKeil Neuer User
    Hallo Doming,
    super, es scheint jetzt auch bei mir zu funktionieren, es war anscheinend die Reihenfolge der Verweise, habe deine Reihenfolge eingestellt und es funktioniert
    Das war somit ein klasse Hinweis
    Danke
    Matthias
     
Thema:

Auslesen einer Abfrage in VBA Modul

Die Seite wird geladen...
  1. Auslesen einer Abfrage in VBA Modul - Similar Threads - Auslesen Abfrage VBA

  2. Nur aktuelles Jahr in Abfrage auslesen

    in Microsoft Access Hilfe
    Nur aktuelles Jahr in Abfrage auslesen: In meiner Abfrage habe ich eine Spalte AktJahr erstellet. Das Datum ermittle ich mit AktJahr: Datum(). Es soll nur die aktuelle Jahreszahl angezeigt werden. Mehrere Versuche mit der...
  3. Automatisch aktualisierende Tabelle? Hilfe!! :-)

    in Microsoft Excel Hilfe
    Automatisch aktualisierende Tabelle? Hilfe!! :-): Hallo zusammen, ich habe da ein kleines Excel-Problem und komme einfach nicht auf die Lösung. Ich habe 25 riesige Tabellen und möchte diese in einer Tabelle zusammen, wenn eine bestimmte...
  4. Wert aus einer Abfrage in VBA auslesen

    in Microsoft Access Hilfe
    Wert aus einer Abfrage in VBA auslesen: Hallo, ich habe eine Abfrage Namens LetzteIDd. Diese Abfrage liefert genau einen Wert zurück. Wie kann ich in VBA diesen Wert den die Abfrage zurückliefert in eine Variable speichern? Etwas...
  5. Abfrage Feld von links bis zu einer bestimmten Markierung auslesen

    in Microsoft Access Hilfe
    Abfrage Feld von links bis zu einer bestimmten Markierung auslesen: Guten Tag zusammen ich bin an einer Abfrage am basteln. Ich möchte widerholende Werte gruppieren die aber in der gesamten Länge sich doch unterscheiden. BSP: Titel Akte X S03E23 - Ferngesteuert...
  6. Mit DLookUp einen Wert aus einer Abfrage auslesen

    in Microsoft Access Hilfe
    Mit DLookUp einen Wert aus einer Abfrage auslesen: Hallo Forum, ich möchte mit Hilfe der DLookUp-Funktion einen Wert aus einer Abfrage in meinem Formular in einem Textfeld angezeigt bekommen. Die Kriterien sollen sich hierbei dynamisch an der...
  7. Zeichen in einer Abfrage von rechts bis zu einem bestimmten Zeichen auslesen

    in Microsoft Access Hilfe
    Zeichen in einer Abfrage von rechts bis zu einem bestimmten Zeichen auslesen: Hallo, ich habe folgendes Problem. Ich habe in einer Tabellenspalte einen Verzeichnispfad mit Dateinahmen (z.B. /terra/y/z/jhkdjfhksdjfhdsjkf.pdf) Der Dateiname kann unterschiedlich lang sein....
  8. Daten aus Access-Abfrage in VBA auslesen und weiterverarbeiten

    in Microsoft Access Hilfe
    Daten aus Access-Abfrage in VBA auslesen und weiterverarbeiten: Hallo zusammen! Ich möchte Dateien, deren Pfade in einer Access-Abfrage stehen mit Hilfe von VBA als Outlook-Email verschicken. Eine vorgegebene Datei kann ich mit folgendem Code verschicken...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden