Office: (Office 2016) Abfrage Kriterien in VBA Rückgabewert

Helfe beim Thema Abfrage Kriterien in VBA Rückgabewert in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Moin, ich habe in einer Abfrage eine VBA Funktion die mir einen Rückgabewert als Long liefert. Will ich nun in der Abfrage in den Kriterien z.B. den... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von PapaMaik, 13. Oktober 2020.

  1. Abfrage Kriterien in VBA Rückgabewert


    Moin,
    ich habe in einer Abfrage eine VBA Funktion die mir einen Rückgabewert als Long liefert. Will ich nun in der Abfrage in den Kriterien z.B. den Wert 1 filtern so bekomme ich die Fehlermeldung:

    Datentypenkonflickt in Kriterienausdruck

    Ich habe es auch schon mit einen Boolean Wert versucht, auch kein Erfolg.

    Der Hintergrund: Die Abfrage ist Datengrundlage für ein tabellarisches Formular in dem die Daten zwingend geändert werden müssen.

    Das zu filternde Feld befindet sich in einer Tabelle, die nicht Teil der Abfrage ist, daher selektiere ich den Wert mit VBA. Nehme ich die Tabelle mit in die Abfrage auf, so wird der Recordset nicht mehr veränderbar.

    Vielen lieben Dank für Eure Ideen

    :)
     
    PapaMaik, 13. Oktober 2020
    #1
  2. Ist schon geklärt, ob der Fehler in der Abfrage oder in der Funktion auftritt?
    Hast Du die Funktion schon z.B. im Direktfenster getestet?
    Stimmen in der Abfrage die Datentypen der Felder, die an die Funktion übergeben werden, mit Datentypen der Funtionsparameter überein?
     
    Frank200, 14. Oktober 2020
    #2
  3. Der Fehler tritt in der Abfrage auf, der Rückgabewert wird auch richtig angezeigt. Ich bekomme den Fehler dann, wenn ich das Kriterium in die ensprechene Spalte eintrage.
     
    PapaMaik, 14. Oktober 2020
    #3
  4. Abfrage Kriterien in VBA Rückgabewert

    Ja ich habe beides mit Long oder Boolean ausprobiert, leider ohne Erfolg
     
    PapaMaik, 14. Oktober 2020
    #4
  5. Hallo,
    zeige bitte Deine Versuche in VBA und SQL (Abfrage).
     
    gpswanderer, 14. Oktober 2020
    #5
  6. So hier wäre das SQL

    SELECT INFO_AUFTRAG_KOTHESELEKTION([FKKSAGNR],1) AS Kothe, TBKOTHESCHEINE.*, INFO_AUFTRAG([FKKSAGNR],1) AS Farbe, TBAUFTRAG.IDAGNR, INFO_AUFTRAG([FKKSAGNR],2) AS Rohdatum
    FROM TBKUNDEN INNER JOIN (TBAUFTRAG INNER JOIN TBKOTHESCHEINE ON TBAUFTRAG.IDAGNR = TBKOTHESCHEINE.FKKSAGNR) ON TBKUNDEN.IDKDNR = TBAUFTRAG.FKAGKDNR
    WHERE (((INFO_AUFTRAG_KOTHESELEKTION([FKKSAGNR],1))=1) AND (Not (TBKOTHESCHEINE.KSGEDRUCKT) Is Null) AND ((TBKOTHESCHEINE.KSZURUECK) Is Null))
    ORDER BY INFO_AUFTRAG([FKKSAGNR],1), TBAUFTRAG.IDAGNR;
     
    PapaMaik, 14. Oktober 2020
    #6
  7. Und hier die kleine Funktion mit einem Rückgabewert Long

    Public Function INFO_AUFTRAG_KOTHESELEKTION(vIDAGNR As Long, vArt As Long) As Long
    '*****************************************************************
    '*** Maik Ramftel
    '*** 2020-10-13
    '*** #458
    '*** Zeigt den Rückgabewert für die Oberflächenverfolgung
    '*****************************************************************
    If DEBUGMODUS = False Then
    On Error Resume Next
    End If

    Dim sql As String, tb As Recordset, vAnzahl As Long

    Select Case vArt
    Case Is = 1
    '*** Selektiere die Farbinfos, ich gehe davon aus das alle Seiten des Fertigungsauftrages gleich sind, daher selektiere ich die Daten der ersten Seite ***
    sql = "SELECT TBFERTIGUNGSAUFTRAG.FKFAAGNR, TBFERTIGUNGSAUFTRAG.FASEITE, TBOBERFLAECHEN.OBKOTHE FROM TBOBERFLAECHEN INNER JOIN TBFERTIGUNGSAUFTRAG ON TBOBERFLAECHEN.IDOBNR = TBFERTIGUNGSAUFTRAG.FKFAOBNR WHERE (((TBFERTIGUNGSAUFTRAG.FKFAAGNR)=" & vIDAGNR & ") AND ((TBFERTIGUNGSAUFTRAG.FASEITE)=1));"
    Set tb = CurrentDbC.OpenRecordset(sql, dbOpenDynaset, dbSeeChanges, dbOptimistic)
    vAnzahl = tb.RecordCount
    If vAnzahl >= 1 Then
    INFO_AUFTRAG_KOTHESELEKTION = tb![OBKOTHE]
    End If
    End Select


    Exit Function
    Fehler:
    MsgBox Err.Description, , MSGBOXTITEL

    End Function
     
    PapaMaik, 14. Oktober 2020
    #7
  8. Abfrage Kriterien in VBA Rückgabewert

    Lade das als Beispiel hoch.
    Erscheint mir alles etwas umständlich.
    Die Prüfung auf >1, das Bilden des Recordsets, SElect case...

    Im string brauchst du nur ein Feld, Obkothe bildet den Rückgabewert der Funktion, die anderen 2 Felder im SElect sind unnötig.
    sql ist reserviert und solltest eher strSQL verwenden. Sind nur formale Hinweise, hat nix mit dem Fehler zu tun.


    Code:
     
    fredfred, 15. Oktober 2020
    #8
  9. Die beiden anderen Where Elemente sind natürlich notwendig, hochladen kann ich hier nichts, das ist Teil einer DB. SQL oder strsql spielt hier keine Rolle.

    Du kannst ein beliebige Function im vba erstellen und ein Kriterium in der Abfrage in der Spalte mit der Rückgabe nutzen, geht scheinbar grundsätzlich nicht...
     
    PapaMaik, 15. Oktober 2020
    #9
  10. P.S. in der Funktion ist nur der Case=1 die anderen habe ich nicht mit hochgeladen da nicht relevant.
     
    PapaMaik, 15. Oktober 2020
    #10
  11. ehm, logisch ist das Teil einer DB.
    Ohne die Struktur der Tabelle zu sehen, kann man hier keine Aussage treffen.

    Exportiere die 3 (?) Tabellen in eine DB, die Abfrage und die 3(!) Funktionen im SQL-String und lade das Teil hoch (ohne sensible Daten).

    Um das WHERE Kriterium über diese beiden Felder zu bilden, müssen diese aber nicht im Select mit aufgeführt sein.

    Sind die Felder, die die Parameter der Funktion liefern alle gefüllt in der Tabelle ??
    Halte ich für die wahrscheinlichste Erklärung des Fehlers.

    Hatte ich bereits erwähnt, dass das formale Hinweise sind. SQL als Variablenbezeichner sollte man nicht verwenden, da reserviertes Wort.
     
    fredfred, 15. Oktober 2020
    #11
  12. Die Codedarstellung ist sehr unübersichtich, etwas in dieser (lieblosen) Form mag man nicht wirklich lesen.

    Bezüglich VBA-Funktion:
    On Error Resume Next ... sollte man doch für eine Fehlerfindung deaktivieren können (Finden Ignorieren).
    Daneben kann VBA nicht so locker mit NULL umgehen wie SQL. Daher sollte man prüfen, was man an Variablen/Argumenten, die nicht als Variant deklariert sind, übergibt und was daraus folgen kann.
     
  13. Abfrage Kriterien in VBA Rückgabewert

    Die Diskussion geht hier in die falsche Richtung. Es geht um die Grundsatzfrage warum ich in einer Abfrage nicht in einer Spalte selektieren kann die den Rückgabewert einer Funktion beinhaltet.
     
    PapaMaik, 15. Oktober 2020
    #13
  14. Wie schon anders formuliert: Ich würde erst einmal überprüfen, ob die Spalte vollständig von Dir erwartete Rückgabewerte enthält und nicht vielleicht doch so etwas wie #Fehler.
    Erst die vollständig fehlerfreie Spalte würde ich in einer Filterung benutzen wollen. SQL ist Massendatenverarbeitung - alles auf einmal.

    Grundsätzlich wird eine Filterung funktionieren, wenn man nötige Bedingungen einhält.

    Bei Grundsätzen, die Dich selber betreffen (... warum ich ...), kann man nicht so leicht urteilen.
     
  15. Das funktioniert problemlos.

    Auch folgende Annahme ist falsch:
    Außerdem solltest du in der Funktion die Werte ByVal übergeben.
    Überhaupt würde ich das mit einer Abfrage lösen.
    Die Werte aus TBKOTHESCHEINE sollten problemlos bearbeitbar sein.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 15. Oktober 2020
    #15
Thema:

Abfrage Kriterien in VBA Rückgabewert

Die Seite wird geladen...
  1. Abfrage Kriterien in VBA Rückgabewert - Similar Threads - Abfrage Kriterien VBA

  2. Excel lädt die Daten nicht sobald Abfragekriterium für ein Textfeld erstellt wird

    in Microsoft Access Hilfe
    Excel lädt die Daten nicht sobald Abfragekriterium für ein Textfeld erstellt wird: Hey Ihr Lieben, ich habe eine Abfrage erstellt und das Kriterium - Wie "*gelb*" - angegeben. Sprich: Mir werden alle Datensätze angezeigt die irgendwo das Wort "gelb" in sich haben. Nun...
  3. SVerweis, WennDann oder Makro

    in Microsoft Excel Hilfe
    SVerweis, WennDann oder Makro: Hallo zusammen, Ich habe zwar ähnliche Themen gefunden aber komme trotzdem bei meinem Problem nicht weiter. Anbei meine Beispieldatei, da die echten Daten viel umfangreicher sind. Ich würde...
  4. Abfrage per VBA zusammenbauen

    in Microsoft Access Hilfe
    Abfrage per VBA zusammenbauen: Hi, Ich habe in meiner Datenbank das angehängte Formular, mit dem die Datensätze (Prüfungsfragen) nach bis zu 3 verschiedenen Kriterien gefiltert werden können. Bislang habe ich 8 Verschiedene...
  5. Abfrage mit mehreren Kriterien

    in Microsoft Access Hilfe
    Abfrage mit mehreren Kriterien: Moin Leute, vorweg ich habe ewig nicht mehr mit Access gearbeitet *tongue.gif*. nun aber zu meiner Frage: Ich habe eine Tabelle mit mehreren Feldern. Ich möchte gern das alle Felder die im...
  6. Kriterien einer Abfrage aus VBA übergeben

    in Microsoft Access Hilfe
    Kriterien einer Abfrage aus VBA übergeben: Hi leute, Folgendes Problem: Ich habe eine Abfrage welcher Felder aus mehreren Tabellen beinhaltet. In der Abfrage selbst möchte ich keine Kriterien fix hinterlegen, da sich diese je nachdem von...
  7. Verwenden von Kriterien des Typs ODER zur Abfrage alternativer oder mehrerer Bedingungen

    in Microsoft Access Tutorials
    Verwenden von Kriterien des Typs ODER zur Abfrage alternativer oder mehrerer Bedingungen: Verwenden von Kriterien des Typs ODER zur Abfrage alternativer oder mehrerer Bedingungen Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access...
  8. Abfrage aus Liste

    in Microsoft Excel Hilfe
    Abfrage aus Liste: Hallo zusammen, Ich benötige eine Idee bzw. Formel zum Abfragen von Geburtsjahren und Anzahl in einer Mitgliederliste. Meine Ausgangstabelle sieht wie folgt aus: Name | Geburtsdatum |...
  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