Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: wuffwuff2003 am Februar 19, 2020, 13:05:10

Titel: DLookup Versuch
Beitrag von: wuffwuff2003 am Februar 19, 2020, 13:05:10
Hallo,
Ich brauche Hilfe betreffend VBA Code und einen Wert rausfinden.
Ich habe 1 Maschine mit z.b. Fremdschlüssel 147
Diese Maschine hat 2 Prüfsysteme die abgehakt werden müssen (also kontrolliert in regelmässigen Abständen). Nun ist es so wenn ich System 1 abhake, möchte ich dass das Datum der 2. Synchronisation gleichgestellt wird mit der nächsten Kontrolle von System 1.
So würde es aussehen wenn ich mal wild drauf los schreibe was aber nicht klappt
If me.f_systeme = 3 and counter = 1 then (so aber dieser counter ist jetzt nicht dieser counter von dem momentan System sondern von dem anderen System, das muss er in die Tabelle auslesen gehen) d.h. er müsste nun in die Tabelle kucken gehen wie der Counter des anderen Systems ist bsp:
If me.f_systeme  3 and counter  = 1 Where f_engin = [Forms]![frm_faire]!f_engin and f_systeme <> 3"
Ich weiss nicht ob ich das so klar ausgedrückt habe ich hoffe mal
Ich habs so versucht Val6 bleibt aber immer auf ""
Val6 = DLookup("[counttxt]", "tbl_sys_engin", "[f_engin] = 147")
Danke
Mfg



Titel: Re: DLookup Versuch
Beitrag von: Hondo am Februar 19, 2020, 13:20:56
Hallo,
es ist etwas verworren für mich.
ZitatDiese Maschine hat 2 Prüfsysteme die abgehakt werden müssen (also kontrolliert in regelmässigen Abständen). Nun ist es so wenn ich System 1 abhake, möchte ich dass das Datum der 2. Synchronisation gleichgestellt wird mit der nächsten Kontrolle von System 1.
Datenbanksprache! Was ist System was Synchronisation bez. der Datenbank? Wie sieht deine Tabelle(n) aus bzw. Tabellenstruktur?
ZitatVal6 = DLookup("[counttxt]", "tbl_sys_engin", "[f_engin] = 147")
Gibt es ein Feldnamen counttxt in der Tabelle tbl_sys_engin mit einem Schlüsselfeld f_engin welches den Wert 147 hat?
Wozu die eckigen Klammern? Weglassen.

Gruß Andreas
Titel: Re: DLookup Versuch
Beitrag von: wuffwuff2003 am Februar 19, 2020, 13:48:32
Ja ist bisschen schwer zu erklären ist recht komplex aufgebaut. Den Feldnamen sowie die Tabelle und das Schlüsselfeld existeren, nur zeigt er mir die Val6 nicht an, die ist nur zur Info aber oben deklariert im Code als String
Titel: Re: DLookup Versuch
Beitrag von: wuffwuff2003 am Februar 19, 2020, 13:52:06
Hier wäre der Code wo ich am rumbasteln bin aber wie gesagt er liest mir einfach den Wert dieses Feldes nicht aus:
Wenn ich das mal hinkriegen würde käme noch ein 2. Kriterium in den Ausleseprozess hinzu.
Val7 = DLookup("counttxt", "tbl_sys_engin", "f_engin = 147")

If Me.f_systeme = 3 And counttxt = 1 Then
    strSQL30 = "update tbl_sys_engin set prochainrev = '" & Me.prochainrev & "' Where f_engin = [Forms]![frm_faire]!f_engin and f_systeme <> 3"
    DoCmd.RunSQL strSQL30
    DoCmd.RunCommand acCmdSaveRecord
Titel: Re: DLookup Versuch
Beitrag von: Hondo am Februar 19, 2020, 14:06:50
Hallo,
öffne bitte mal die VBA-Umgebung und drücke Strg + g
Im Fenster das sich geöffnet hat gibts du bitte ein und drückst Enter:
?DLookup("counttxt", "tbl_sys_engin", "f_engin=147")

Kommt eine Fehlermeldung bzw. kommt darunter ein Ergebnis? Ist f_engin der Primärschlüssel? Bzw. welchen Datentyp hat dieses Feld? Stimmen die Angaben bez. Feldnamen und Tabellennamen wirklich exakt?

Gruß Andreas
Titel: Re: DLookup Versuch
Beitrag von: Hondo am Februar 19, 2020, 14:12:48
ZitatstrSQL30 = "update tbl_sys_engin set prochainrev = '" & Me.prochainrev & "' Where f_engin = [Forms]![frm_faire]!f_engin and f_systeme <> 3"

Das ist auch falsch. Korrekt wäre dies:
strSQL30 = "update tbl_sys_engin set prochainrev = '" & Me.prochainrev & "' Where f_engin=" &  Forms("frm_faire").f_engin & " And f_systeme <> 3"
Currentdb.Execute strSQL30, dbFailOnError


Da du scheinbar keine Fehlermeldungen bekommst tippe ich darauf dass du auch keine Option Explicit im Formularmodul/Modul stehen hast. Das solltest du dringend nachholen. Außerdem verwende doch bitte CurrentDB.Execute anstatt DoCmd.RunSQL

Gruß Andreas
Titel: Re: DLookup Versuch
Beitrag von: wuffwuff2003 am Februar 19, 2020, 14:30:41
Ok das werde ich so machen danke. Aber ich habe die DLookup erweitert, der fehler entsteht durch das Feld VAL8 (was einen Wert enthält) aber ich denke das steht falsch  denn gebe ich anstatt des Val8 eine feste Ziffer ein bspw 147 dann klappts. Hier die Zeile:
Val8 = me.f_engin
Val7 = DLookup("counttxt", "tbl_sys_engin", "f_engin = '" & Val8 & "' and f_systeme <> 3")
Titel: Re: DLookup Versuch
Beitrag von: DF6GL am Februar 19, 2020, 14:49:02
Hallo,

könntest Du ein bisschen präziser werden?

Was heißt "steht falsch"?

Me!Val7 = DLookup("counttxt", "tbl_sys_engin", "f_engin = '" & Me!Val8 & "' and f_systeme <> 3")


Schreibt den Wert aus Tabellenfeld "Counttxt" im Datensatz, der bei "f_engin" den Wert aus Formularfeld "Me!Val8" und bei "f_systeme" den Wert 3 hat in das Formularfeld "Me!Val7" .

Ich schätze, "f_engin" hat den Datentyp "Long" in der Tabelle, somit sind die Hochkommata falsch gesetzt und müssen weggelassen werden:

Me!Val7 = DLookup("counttxt", "tbl_sys_engin", "f_engin = " & Me!Val8 & " and f_systeme <> 3")

Rot: Bei Referenzen auf Formular(Bericht)Steuerelemente immer "Me!" als Qualifizierung benutzen!
Blau: Solche "Magic Numbers" brechen Dir über kurz oder lang das Genick....
Titel: Re: DLookup Versuch
Beitrag von: wuffwuff2003 am Februar 19, 2020, 15:02:18
Hallo,
Ja das war das mit dem Hochkommata, (was ich nie verstehen werde) Feld ist ein Long Intenger. Das mit der 3 wird auch ein Val-Wert hab das jetzt nur fix eingetragen um keine 2 Baustellen zu kreieren.
Vielen Dank
Titel: Re: DLookup Versuch
Beitrag von: PhilS am Februar 19, 2020, 15:23:49
Zitat von: wuffwuff2003 am Februar 19, 2020, 15:02:18
Ja das war das mit dem Hochkommata, (was ich nie verstehen werde) ...

Evtl. ist dieser Text hilfreich: VBA-SQL-String Tutorial für Anfänger (https://codekabinett.com/rdumps.php?Lang=1&targetDoc=vba-sql-string-tutorial)

Oder, je nach Geschmack, als Video: VBA-SQL-String Video-Tutorial (https://youtu.be/HSGSsjcbi2c)
Titel: Re: DLookup Versuch
Beitrag von: wuffwuff2003 am Februar 19, 2020, 15:28:04
Hallo,
Vielen Dank die werde ich mir mal anschauen
Danke

Lg