collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 81
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14809
  • stats Beiträge insgesamt: 76028
  • stats Themen insgesamt: 10230
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 933

Autor Thema: Bei Systemdatum MesageBox  (Gelesen 491 mal)

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #15 am: März 07, 2020, 19:23:40 »
Sorry, hatte gestern abend noch Nachtschicht!

Private Sub Form_BeforeUpdate(Cancel As Integer)

If DMax("Datum", "Produktionsdaten") < Me![Datum] Then

     MsgBox Format(Date, "DD.MM.YYYY") & " Soll das Datum geändert werden", vbYesNoCancel + vbQuestion
     If vbYes Then
     Me![Form1].Requery
     Me![Form2].Requery
     Else
     Me.Undo  'rückgängig
     Cancel = True  'Ereignisse verhindern
     End If
End If
End Sub

Grüsse J.D

@ebs17 dazu müsste ich abfragen erstellen und alle Formulare und Berichte ändern...
Weiteres würde ich dann bei der abfrage wiederum scheitern ;)
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8524
Re: Bei Systemdatum MesageBox
« Antwort #16 am: März 07, 2020, 19:52:48 »
Hallo,
der gezeigte Code ist so nicht richtig. Du wertest ja den Rückgabewert der MsgBox gar nicht aus. So wie das jetzt ist, wird der Else Zweig nie ausgeführt, egal was Du klickst.
Das sollte so aussehen:
Private Sub Form_BeforeUpdate(Cancel As Integer)
If DMax("Datum", "Produktionsdaten") < Me![Datum] Then
     If MsgBox(Format(Date, "DD.MM.YYYY") & " Soll das Datum geändert werden", vbYesNoCancel + vbQuestion) = vbYes Then
        Me![Form1].Requery
        Me![Form2].Requery
     Else
        Me.Undo  'rückgängig
        Cancel = True  'Ereignisse verhindern
     End If
End If
End Sub
Außerdem erschließt sich mir der Sinn immer noch nicht. Die Uhrzeit spielt doch bei Deiner Verion keine Rolle, das heißt, die die MsgBox kommt immer, auch mittags um 12:00 wenn sich die Frage nach dem Datum gar nicht stellt. Ist das beabsichtigt ?
Was beinhalten denn das Feld Me.Datum ?

Würde es nicht Sinn machen, das Datum einfach zwischen 00:00 Uhr und <06:00 einen Tag zurückzusetzen, ggf. mit Rückfrage ?
« Letzte Änderung: März 07, 2020, 19:57:37 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: J.D

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #17 am: März 07, 2020, 23:04:28 »
Danke Klaus, es funktioniert jetzt aber nun geht das Speichern und so weiter nicht mehr wenn ich nein klicke

Private Sub Speichern_Click()

' Diese beiden befehle gegen dann nicht mehr ;(
[s]DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec[/s]

' Aktuallisiere Datenblätter
' Me.Requery
'
Me![Form1].Requery
Me![Form2].Requery
End Sub

Wenn ich auf ja klicke funktioniert es alles wie gehabt, nur bei nein gibt es dann mächtig probleme und Access bemängelt jede menge schlechten code  :-[
[edit]
Cancel = True  'Ereignisse verhindern
entfernt, jetzt geht es...
[/edit]

Sicherlich ist es möglich über das Feld Me![Datum] es einen Tag zurück zu setzen...
Das feld Me![Datum] enthält das Datum tt.mm.jjjj format.

Leider bin ich nicht so Fit... daher werde ich wohl versuchen es auszubauen, weil nun muss im
DMax ein zweiter Parameter rein... bei Ja soll das Datum geändert werden und bei Nein soll das neue Datum übernommen werden...

Ich werde damit sicherlich noch etwas spass haben  ;D

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #18 am: März 08, 2020, 02:31:38 »
So weit so gut, jedoch möchte ich jetzt noch einen Zweiten Parameter anhängen!
Dieses habe ich wie folgt gelösst, aber scheint nicht zu funktionieren... sprich es kommt immer die Box.
Der Wert Me!MaschinenId.Column(0) ist ja ein Dropdown die SQL ist
SELECT Maschine.ID, Maschine.Maschinen_Name
FROM Maschine
ORDER BY Maschine.[Maschinen_Name];
Daher gehe ich davon aus das (0) die Maschine.ID ist...

  If DMax("Datum", "Produktionsdaten") < Me![Datum] & " AND Maschine =" & Me!MaschinenId.Column(0) Then
Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1321
Re: Bei Systemdatum MesageBox
« Antwort #19 am: März 08, 2020, 08:08:57 »
Ich wollte auch nur anmerken, dass man vor Code-Aktionismus und -Wirrungen vorher evtl. erst einmal über Abläufe nachdenkt und diese fixiert. Nach einer Datensatzspeicherung sollen vmtl. diese Daten auch ausgewertet und verarbeitet werden, womöglich auch tages-, monatsübergreifend, und vmtl. auch fachlich richtig. Das sollte man dann auch beherrschen.

Aber Du hast ja zu tun. Viel Erfolg weiterhin.

Mit freundlichem Glück Auf!

Eberhard
 

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #20 am: März 08, 2020, 10:58:55 »
So, ich lasse die Maschinen_ID mit in MsgBox anzeigen zur Kontrolle und sie wird mir richtig dargestellt, nur warum wird es im DMax nicht berücksichtigt!?

Private Sub Form_BeforeUpdate(Cancel As Integer)
' If DMax("Datum", "Produktionsdaten") < Me![Datum] Then
  If DMax("Datum", "Produktionsdaten") < Me![Datum] & " AND [Maschinen_ID] =" & Me!Maschinen_ID.Column(0) Then
 
     If MsgBox(Format(Date, "DD.MM.YYYY") & " Soll das Datum geändert werden Maschine: " & Me!Maschinen_ID.Column(0), vbYesNoCancel + vbQuestion) = vbYes Then

Me![Form1].Requery
Me![Form2].Requery

     Else
        Me.Undo  'rückgängig
       ' Cancel = True  'Ereignisse verhindern
     End If
End If
End Sub

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8524
Re: Bei Systemdatum MesageBox
« Antwort #21 am: März 08, 2020, 11:06:57 »
Hallo,
welcher Datentyp ist die Maschinen_ID ?
Gruß
Klaus
 

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #22 am: März 08, 2020, 11:40:19 »
Hallo,
welcher Datentyp ist die Maschinen_ID ?

Zahl...

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2429
Re: Bei Systemdatum MesageBox
« Antwort #23 am: März 08, 2020, 11:55:02 »
Falsche Syntax
If DMax("Datum", "Produktionsdaten") < Me![Datum] AND [Maschinen_ID] = Me!Maschinen_ID.Column(0) Then
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: J.D

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #24 am: März 08, 2020, 15:05:04 »
Falsche Syntax
If DMax("Datum", "Produktionsdaten") < Me![Datum] AND [Maschinen_ID] = Me!Maschinen_ID.Column(0) Then

Danke, aber jetzt kommt keine Abfrage mehr wenn das Datum abweicht...  ;(

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 24505
Re: Bei Systemdatum MesageBox
« Antwort #25 am: März 08, 2020, 15:27:30 »
Hallo,

das ist alles verkorkst...-

Zitat
weil nun muss im
DMax ein zweiter Parameter rein...

Wo ist da ein erster Parameter?

Wenn das Max-Datum zu einer bestimmten MaschinenID ermittelt werden soll, dann etwa so:


If DMax("[Datum]", "Produktionsdaten","[Maschinen_ID] =" &  Me!Maschinen_ID.Column(0)) < Me![Datum]  Then
sofern [Maschinen_ID] den Datentyp Zahl, Long aufweist und im Kombi "Me!Maschinen_ID"  in der ersten Spalte der Wert für die Maschinen-ID zu finden ist.


Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #26 am: März 08, 2020, 15:50:00 »
Danke Franz,

so geht es... war in der annahme das Datum auch ein Parameter ist...
Jetzt geht es an das kleingemachte... :D

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

Offline J.D

  • Access-Profi
  • **
  • Beiträge: 129
  • Blutiger Anfänger!
Re: Bei Systemdatum MesageBox
« Antwort #27 am: März 08, 2020, 18:16:34 »
So, danke liebe Helfer und Kopfzerbrecher...  :-*
Ja ich bin Beratungsresistent  8)

Denoch habe ich es geschaft an mein Ziel zu kommen...
Anbei für alle
Private Sub Form_BeforeUpdate(Cancel As Integer)
    If DMax("[Datum]", "Produktionsdaten", "[Maschinen_ID] =" & Me!Maschinen_ID.Column(0)) < Me![Datum] Then
    If MsgBox("Soll das Datum auf " & Me![Datum] & " für die Maschine: [" & Me!Maschinen_ID.Column(0) & "] geändert werden? Bei Nachtschicht bitte Nein", vbYesNo + vbQuestion) = vbYes Then
    Me![Form1].Requery
    Me![Form2].Requery
    Else
     
    Dim DatumNeu As Date
    DatumNeu = Me![Datum] - 1
   
    On Error Resume Next
    CurrentDb.Execute ("Insert into Produktionsdaten (Maschinen_ID, Mitarbeiter_ID, Material_ID, Anzahl, Datum, von, bis) values ('" & Me!Maschinen_ID.Column(0) & "', '" & Me!Mitarbeiter_ID.Column(0) & "', '" & Me!Material_ID.Column(0) & "','" & Me.Anzahl & "', '" & DatumNeu & "', '" & Me.von & "', '" & Me.bis & "')")
    Me.Undo
    MsgBox "Datum wurde auf " & DatumNeu & " geändert!"
    End If
End If
End Sub

Grüsse J.D
Hilfe zur Selbsthilfe vs. learning by burning
Schritt 1.2
 

 


Advertisment / Werbung - Amazon Affiliate Links