Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Krunx am Mai 13, 2020, 11:24:04

Titel: Strutkrufrage & Formularverwendung
Beitrag von: Krunx am Mai 13, 2020, 11:24:04
Hallo zusammen,
ich hoffe mir kann jemand bei folgenden Thema helfen:

ich habe eine Bestandstabelle. Die Tabelle hat einen Index über 3 Werte (Produktnummer, Ladestelle und Lieferant). Dazu gibt es einen Autowert der einmalig ist.
Die Tabelle wird jeden Tag aktualisiert und neue Einträge werden angefügt.

In der Bestandstabelle steht die Information wie lange der Bestand noch reicht in Tagen.

Wenn die Reichweite unter 2 Tagen ist, muss etwas gemacht werden. Die Maßnahme wird festgehalten. Dazu gibt es ein ErledigtAm und ein Erledigt (Boolean) Feld. Das Erledigt Feld triggert der Nutzer, ErledigtAm wird dann automatisch geschrieben.
Dafür habe ich eine zweite Tabelle die ZusatzinformationenBestand heißt. Sie ist mit der Bestandstabelle über den einmaligen Autowert verknüpft.

Ich habe einen Query erstellt der diese beiden Tabellen verbindet und mir nur die Werte NICHT anzeigt die einen Eintrag in der ZusatzinformationenBestand Tabelle hat.

Dieser Query befüllt ein UFO. Dort können jetzt die Zusatzinformationen eingegeben werden. und auch der "ErledigtAm" gesetzt werden.

Allerdings ist da ein Designfehler enthalten: ich möchte im Query mir nur die Werte NICHT anzeigt die einen Eintrag in der ZusatzinformationenBestand Tabelle vom heutigen Tag (ErledigtAm) hat.

Das habe ich über eine Einschränkung im join gemacht (im ON Teil:
and tbl300_2ATMorgens_Zusatzinformationen.ErledigtAm > Format(now(),"dd.mm.yyyy")))

Jetzt kann ich aber über meinen UFO keinen neuen Eintrag anlegen.


Ich würde jetzt wohl das Konzept ändern und statt dem Query im UFO das Formular bauen und dann ein AppendQuery auslösen - außer mir hat jemand eine gute Idee :)

Vielen Dank fürs durchlesen und für jeden Tipp!
Daniel
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Beaker s.a. am Mai 13, 2020, 17:07:45
Hallo Daniel,
and tbl300_2ATMorgens_Zusatzinformationen.ErledigtAm > Format(Now(),"dd.mm.yyyy")))
1. macht das ja nur Sinn wenn "ErledigtAm" in der Zukunft liegt.
2. Format$(now(), "\#yyyy\-mm\-dd\ hh\:mm\:ss\#")
3. wie schon in einem anderen Thread gesagt, ist das Boolean-Feld
"Erledigt" überflüssig. Die Tatsache, dass es am xxx erledigt wurde
(Datum eingetragen) sagt doch das gleiche aus.
Es reicht für unerledigte dann der Filter
... WHERE tbl300_2ATMorgens_Zusatzinformationen.ErledigtAm Is Null ...
Den "Trigger" erledigst du einfach so
Private Sub txtErledigtAm_Click()
    If Nz(Me.txtErledigtAm, 0) = 0 Then
        txtErledigtAm = Now()    'oder Date oder ein Datum deiner Wahl
    End If
End Sub

ZitatJetzt kann ich aber über meinen UFO keinen neuen Eintrag anlegen.
Eine Antwort dazu benötigt die ganze Abfrage zur Beurteilung.

gruss ekkehard
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Krunx am Mai 13, 2020, 17:49:56
Hallo Ekkehard,
Erledigt werde ich entfernen.

Hier der ganze Query. Den relevanten Teil habe ich fett markiert. Nachdem dieser Teil eingefügt ist, kann auch der Entwurfsmodus von access nicht mehr verwendet werden.
Meine Idee war die:
ich lade nur die Datensätze von heute und stelle darüber sicher, das ein neuer Datensatz angelegt wird, falls es heute noch keinen gab.

Und es musste natürlich >= sein (vermutlich reicht auch = :))

Besten Dank für die Hilfe
Daniel

SELECT IIf([tbl200SMB]![GesRW]<1,"A",IIf([tbl200SMB]![GesRW]<2,"B","C")) AS Kriterium, tbl010Lieferanten.Lieferantennummer, tbl010Lieferanten.Lieferantenname, tbl010Lieferanten.EntfernungZumLager, Left([tbl200SMB].[mdi],2) AS DI, tbl200SMB.Sachnummer, tbl200SMB.Benennung AS Teilebezeichnung, tbl200SMB.Abs, [tbl200SMB]![Tages-bedarf 1] AS Tagesbedarf, tbl300_2ATMorgens_Zusatzinformationen.Problembeschreibung, tbl300_2ATMorgens_Zusatzinformationen.Halle, tbl300_2ATMorgens_Zusatzinformationen.[Abriss IB], tbl300_2ATMorgens_Zusatzinformationen.[Abriss VO], tbl300_2ATMorgens_Zusatzinformationen.BearbeitungErledigt, tbl300_2ATMorgens_Zusatzinformationen.ErledigtAm, Nz([tbl200SMB]![Tages-bedarf 1],0)+Nz([tbl200SMB]![Tages-bedarf 2],0)+Nz([tbl200SMB]![Tages-bedarf 3],0)+Nz([tbl200SMB]![Tages-bedarf 4],0)+Nz([tbl200SMB]![Tages-bedarf 5],0)+Nz([tbl200SMB]![Tages-bedarf 6],0)+Nz([tbl200SMB]![Tages-bedarf 7],0)+Nz([tbl200SMB]![Tages-bedarf 8],0)+Nz([tbl200SMB]![Tages-bedarf 9],0)+Nz([tbl200SMB]![Tages-bedarf 10],0) AS Bedarf10Tage, tbl300_2ATMorgens_Zusatzinformationen.ID, tbl200SMB.SMBID
FROM (tbl010Lieferanten RIGHT JOIN tbl200SMB ON tbl010Lieferanten.Lieferantennummer = tbl200SMB.Lieferant) LEFT JOIN tbl300_2ATMorgens_Zusatzinformationen ON (tbl200SMB.SMBID = tbl300_2ATMorgens_Zusatzinformationen.FK_SMBID  and tbl300_2ATMorgens_Zusatzinformationen.ErledigtAm >= Format(now(),"dd.mm.yyyy"))

WHERE (((IIf([tbl200SMB]![GesRW]<1,"A",IIf([tbl200SMB]![GesRW]<2,"B","C")))="A" Or (IIf([tbl200SMB]![GesRW]<1,"A",IIf([tbl200SMB]![GesRW]<2,"B","C")))="B") AND ((tbl300_2ATMorgens_Zusatzinformationen.BearbeitungErledigt)<>Yes Or (tbl300_2ATMorgens_Zusatzinformationen.BearbeitungErledigt) Is Null) AND ((Nz([tbl200SMB]![Tages-bedarf 1],0)+Nz([tbl200SMB]![Tages-bedarf 2],0)+Nz([tbl200SMB]![Tages-bedarf 3],0)+Nz([tbl200SMB]![Tages-bedarf 4],0)+Nz([tbl200SMB]![Tages-bedarf 5],0)+Nz([tbl200SMB]![Tages-bedarf 6],0)+Nz([tbl200SMB]![Tages-bedarf 7],0)+Nz([tbl200SMB]![Tages-bedarf 8],0)+Nz([tbl200SMB]![Tages-bedarf 9],0)+Nz([tbl200SMB]![Tages-bedarf 10],0))>0))
ORDER BY Left([tbl200SMB].[mdi],2);
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Beaker s.a. am Mai 13, 2020, 18:05:35
Hallo Daniel,
Sorry, aber sowas schau ich mir nicht mehr an, - keine Formatierung, keine Aliase.
Was ohne gründliche Analyse auffällt
... AND ((tbl300_2ATMorgens_Zusatzinformationen.Bearbeitung Erledigt)<>Yes ...
Das SQL damit nix anfangen kann habe ich dir auch schon mal geschrieben (glaube
jedenfalls, dass du das warst).
tbl300_2ATMorgens_Zusatzinformationen.ErledigtAm >= Format(now(),"dd.mm.yyyy"))
Wie das Format auszusehen hat habe ich auch schon gezeigt. Und, wie
gesagt macht ">" nur Sinn, wenn das Datum in der Zukunft liegt.
"=" funzt bei Now() nicht. DS von heute bekommst du mit
... = Format$(Date(), "\#yyyy\-mm\-dd\#")
gruss ekkehard
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Krunx am Mai 13, 2020, 18:15:40
Hallo Ekkehard,
der Query als solcher funktioniert. Sogar die <> Yes (bei einem Boolean Feld) und das  > Format(now(),"dd.mm.yyyy")) um Daten von heute oder in der Zukunft zu erhalten (ich gehe davon aus, dass das daran liegt, dass er beim Format als Uhrzeit 00:00:00 als Uhrzeit nimmt. wenn dann ein Eintrag im Lauf des Tages gemacht wird, ist dieser größer :)  )
Deshalb habe ich mir nicht die Mühe gemacht ihn zu formatieren.

Es ging aus meiner Sicht lediglich darum:
sobald ich den Fett markierten Teil einfüge, ist der Query richtig, ich kann aber nicht mehr über ein Formular, dass diesen Query als Datenquelle hat, die Daten in der Tabelle direkt ändern.

Hättest du dazu noch eine Idee?

Vielen Dank
Daniel


Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: MzKlMu am Mai 13, 2020, 18:19:44
Hallo,
Datumswerte müssen für eine korrekte Ausgabe mit dem ISO Format (YYYY/MM/DD) oder mit dem US Format (MM/DD/YYYY). Die deutsche Formatierung ist in jedem Fall falsch. Mit der Zeit hat das nichts zu tun.
Siehe auch Hinweise von ekkehard in #3 letzte Zeile VBA.
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Krunx am Mai 13, 2020, 18:39:24
Hallo Ekkehard, MzKlMu,
was ist denn der Unterschied von
Format$(Date(), "\#yyyy\-mm\-dd\#")
zu
Format(now(), "yyyy-mm-dd")

Mit  Format$(Date(), "\#yyyy\-mm\-dd\#") bekomme ich einen Datentypenkonflikt.

Vielen Dank
Daniel
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Krunx am Mai 14, 2020, 07:32:36
Das Hauptproblem ist erledigt. Vielen Dank für die Anstöße!

die Formatierung der Daten ist auf das internationale Format umgestellt.
Das Boolean Erledigt ist verschwunden und durch ein Datum ersetzt.

Der Unterschied zwischen Format$ und Format würde mich dennoch interessieren. Habe versucht dazu etwas zu finden, aber... :-/

Vielen Dank für das unermüdliche Beantworten von Fragen!
Daniel
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: ebs17 am Mai 14, 2020, 09:08:36
String-Funktionen mit Dollar (http://vb-tec.de/strdollr.htm)
Titel: Re: Strutkrufrage & Formularverwendung
Beitrag von: Krunx am Mai 14, 2020, 16:04:38
Vielen Dank für die abschließende Info!