Office: (Office 2016) Querydef Ergebnis lässt keine Änderung zu

Helfe beim Thema Querydef Ergebnis lässt keine Änderung zu in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe diesen Code erstellt und eine Abfrage erstellt. Nun sollen die Werte in Platz geändert werden. Das scheitert daran, dass die Werte der... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von sail4fun, 11. November 2019.

  1. Querydef Ergebnis lässt keine Änderung zu


    Hallo, ich habe diesen Code erstellt und eine Abfrage erstellt. Nun sollen die Werte in Platz geändert werden. Das scheitert daran, dass die Werte der Abfrage nicht änderbar sind.



    Public Sub AbfrageErstellen()

    Dim dbs As DAO.Database
    Dim qdfRennID As DAO.QueryDef

    Set dbs = CurrentDb()
    Set qdfRennID = dbs.CreateQueryDef


    On Error GoTo 99
    'SQL abfrage erstellen
    With qdfRennID

    .sql = "SELECT QF.RennId AS QF_RennID, " & vbCrLf _
    & "TP.RPferd, " & vbCrLf _
    & "TP.Differnz, " & vbCrLf _
    & "TP.Platz " & vbCrLf _
    & "FROM TabPferdIRennen AS TP " & vbCrLf _
    & "INNER JOIN QryRennenIdfilter AS QF " & vbCrLf _
    & "ON QF.RennID = TP.RenID" & vbCrLf _
    & "WHERE Qf.RennID = 'suchtext'" & vbCrLf _
    & "ORDER BY TP.Differnz ASC" & vbCrLf

    .Name = "qryPlatzierungTemp"
    End With

    ' Abfrage vom Temp in die Datenbank schreiben
    With dbs.QueryDefs
    .Append qdfRennID
    .Refresh
    End With

    qdfRennID.Close
    dbs.Close

    ExitProc:
    'Aufraeumen
    Set qdfRennID = Nothing
    Set dbs = Nothing

    99 Exit Sub
    End Sub

    :)
     
    sail4fun, 11. November 2019
    #1
  2. Warum erwartet man immer, dass eine Abfrage aktualisierbar ist? Das ist doch etwas anderes wie eine Tabelle.
    Wenn man Benzin auf sein Auto gießt, sind die Chancen, dass dieser im Tank landet, auch nicht sonderlich groß.

    Ändere die Werte in der betreffenden Tabelle und frage danach ab.
     
  3. Hallo und danke für die Antwort,
    das hatte ich zuerst gemacht, aber der Recordset hat den Filterwert missachtet und sämtliche Tabellenwerte im Feld Platz abgeändert.
    Grüße Chris
     
    sail4fun, 13. November 2019
    #3
  4. Querydef Ergebnis lässt keine Änderung zu

    So etwas gibt es nicht.
    Zeig was nicht funktioniert hat.
    In der Regel liegt das nur am Unwissen des Anwenders.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 13. November 2019
    #4
  5. Code:
    Wobei eine ID mit dem Datentyp "Text" nicht gerade das Gelbe
    vom Ei ist.
     
    Beaker s.a., 14. November 2019
    #5
  6. Hallo, ich habe jetzt die Anregung Eberhart umgesetzt und einen Teilerfolg. Danke schon mal dafür. Jetzt will ich einen Schritt weiter. Ich hätte gerne für die RenId eine Variable damit ich später die gesamte Tabelle in einem Rutsch bearbeiten kann.
    Hier hänge ich jetzt:
    Wenn ich den Text der RenId als Suchkriterium im Code eingebe, dann tut es was es soll. Ersetze ich den Text durch eine Variable; findet er mittels FindFirst den ersten String geht zur Zeile und ändert den Platz ab. Soweit so gut

    Der FindNext funktioniert mit der gleichen Syntax nicht?

    hier ist die Problemzeile:
    RstRang.FindNext "RenID = 'VarRennID'" ' Das Geht NICHT ?
    RstRang.FindNext "RenId = 'Stadt_05062019_4'" Das Geht ?

    Hier der komplette Sub:

    Sub MkrRangVergebenEntwicklung()

    Dim VarPlatz As Double
    Dim varRennID As String
    Dim dbs As DAO.Database
    Dim RstRang As DAO.Recordset
    Set dbs = CurrentDb()
    Set RstRang = dbs.OpenRecordset("SELECT RenID, Differnz, Platz FROM TabPferdIRennen ORDER BY Differnz", dbOpenDynaset)

    On Error GoTo 99
    varRennID = RstRang![RenID]


    RstRang.FindFirst "RenID = 'VarRennID'" 'Das Geht!
    VarPlatz = 1
    RstRang.Edit
    RstRang![Platz] = VarPlatz
    RstRang.Update

    Do

    'RstRang.FindNext "RenId = 'Stadt_05062019_4'" Das Geht ?

    RstRang.FindNext "RenID = 'VarRennID'" ' Das geht NICHT ?
    If RstRang!Platz > 0 Then GoTo 99 'an dieser Stelle bleibt das PGM stehen, befindet sich im vorherigen Datensatz, hat den Wert 1 und geht auf 99
    VarNum = VarPlatz
    VarPlatz = VarNum + 1
    RstRang.Edit
    RstRang![Platz] = VarPlatz
    RstRang.Update
    Loop


    99
    RstRang.Close
    dbs.Close

    ExitProc:
    Set RstRang = Nothing
    Set dbs = Nothing
    End Sub
    ______________________

    Ist bestimmt etwas umständlich, bin aber Anfänger und arbeite mich gerade ein. :-)
    Danke erst mal für eure Hilfe.
     
    sail4fun, 16. November 2019
    #6
  7. Code:
    Das Markierte ist ein Filter. Ein Filter in datenbankbezogener Betrachtung ist der WHERE-Teil einer SQL-Anweisung ohne das Stichwort WHERE.
    Man darf sich also merken: Hier spielen die Regeln von SQL.

    Ein Text ist dort in DoubleQuotes, ersatzweise in einfachen Quotes, einzuschließen. Daher klappt die Zeile für diesen konstanten Text.

    Code:
    Wenn VarRennID eine Variable ist: Die Jet-Engine, die die SQL-Anweisung / den Filter entgegennimmt und verarbeitet, kennt keine VBA-Variablen und wird daher bei der gezeigten Form scheitern.

    Der Wert in der Variablen muss vorher aufgelöst werden und als solcher an die Jet-Engine übergeben werden. Varianten:

    1) Dynamic SQL - Anweisung per VBA zusammensetzen
    Code:
    Wenn man sich den Filter selber ansieht, erkennt man, dass da bereits der Variableninhalt übergeben wird, nicht mehr die Variable selber. Letztere ist nur ein Verweis auf den Speicherbereich, wo der Inhalt liegt.

    2) Funktion: Über den Expression Service kann die Jet-Engine Funktionen nutzen und direkt mit deren Rückgaben arbeiten.
    Code:
    Code:
    Wenn man sucht (Find), sollte man auch den Fall berücksichtigen, dass man nichts findet => If RstRang.NoMatch Then ...

    Wenn man geeignet vorsortiert, muss man nicht mehr suchen mit FindFirst + FindNext, sondern man kann in einer einfachen Schleife durchlaufen.

    Alternativ könnte man die Rangberechnung direkt in der Abfrage vornehmen - das sollte eigentlich erste Wahl sein.
    Grundlagen - SQL ist leicht (10) - Nummerierung in Abfragen

    Das klingt aber auch schon einmal gut. Erarbeitete Erkenntnisse sitzen fester im Bewusstsein. Und wenn man sich einmal "durchgeschunden" hat, weiß man dann einfachere und schnellere Lösungen viel mehr zu schätzen.
     
  8. Querydef Ergebnis lässt keine Änderung zu

    Hallo Eberhard,
    Variante 1 hat direkt funktioniert. Mir geht es hauptsächlich ums Verstehen und Lehrnen. Die restlichen Varianten werde ich noch probieren. Schön wenn man nach langem Probieren ein Erfolgserlebnis hat.
    Herzlichen Dank dafür an Dich
    Chris
     
    sail4fun, 17. November 2019
    #8
  9. Was Du beherzigen und Dir dabei ein Beispiel an den anderen nehmen solltest: Code, der hier präsentiert wird, gehört in Tags. Kontrollstrukturen gehören eingerückt. Danke.
     
    hcscherzer, 17. November 2019
    #9
  10. Hallo Hans Christian,
    danke für den Tip, war mein erster Post. Ich habe die Infos zu Deinen Vorschlägen nachgelesen und werde es künftig versuchen.
    Grüße
    Chris
     
Thema:

Querydef Ergebnis lässt keine Änderung zu

Die Seite wird geladen...
  1. Querydef Ergebnis lässt keine Änderung zu - Similar Threads - Querydef Ergebnis lässt

  2. Bedingte Formatierung mit Zelle in der sich Ergebnis einer Formel befindet

    in Microsoft Excel Hilfe
    Bedingte Formatierung mit Zelle in der sich Ergebnis einer Formel befindet: Moin, ich habe ein Problem, auf dessen Lösung ich noch nicht gekommen bin. Ich möchte eine Zelle durch bedingte Formatierung einfärben. Die Vergleichszelle gibt einen Wert aus, der durch eine...
  3. Ergebnis aus INDEX und Vergleich Formel weiter Verwenden

    in Microsoft Excel Hilfe
    Ergebnis aus INDEX und Vergleich Formel weiter Verwenden: Hallo :-) Ich möchte ein Ergebnis aus einer Formel (Index/Vergleich) mit einer Wenn Funktion auswerten. Wenn sieht aber nicht das Ergebnis in dem Kästchen sondern nur die Formel!...
  4. Errechnung einer zeitlichen Differenz mit einem Maximalwert im Ergebnis

    in Microsoft Excel Hilfe
    Errechnung einer zeitlichen Differenz mit einem Maximalwert im Ergebnis: Hallo zusammen ... Ich benötige mal Hilfe bei der Erstellung einer Formel, in der Hoffnung dass diese so überhaupt möglich ist ... Ich habe zwei Zeitangaben und errechne hierzu die Differenz, das...
  5. VBA Code ohne ergebnis

    in Microsoft Excel Hilfe
    VBA Code ohne ergebnis: Hallo, ich habe einen VBA Code der in meiner Tabelle nicht funktioniert. Kann mir vielleicht jemand bei der Korrektur ggf. weiter helfen? Danke und Gruß Private Sub Worksheet_Change(ByVal Target...
  6. Unerklärliches Ergebnis

    in Microsoft Excel Hilfe
    Unerklärliches Ergebnis: Hallo, warum wird in F8 ein Produkt angezeigt, obwohl kein Multiplikator angegeben wurde?
  7. DATEDIF Ergebnis

    in Microsoft Excel Hilfe
    DATEDIF Ergebnis: Hallo, ich bitte um Hilfe bei DATEDIF z. B. =DATEDIF(Anfangsdatum;Enddatum;"Y") ergibt zB. 8 in derZelle. Ich möchte aber, dass in einer Zelle 8 Jahre steht. Was muss hier hinter "Y" noch...
  8. Zusammengeführtes Ergebnis

    in Microsoft Excel Hilfe
    Zusammengeführtes Ergebnis: Hallo Zusammen, ich hoffe ich mache hiermit keinen neuen Thread auf, jedoch wusste ich leider auch nicht so wirklich was wie ich das Thema korrekt beschreibe. Ich habe folgendes Problem zu...
  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