Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Fehler beim Von-Bis-Datum

Begonnen von T417, Oktober 02, 2015, 14:54:00

⏪ vorheriges - nächstes ⏩

T417

Hallo,

ich habe hier Probleme mit meiner Von-Bis Datumsfunktion. Ich bin hier für jede Anleitung und wirklich jeden Tipp dankbar.

Möglich (bzw. wahrscheinlich) das ich irgendwo ein Fehler in der Struktur habe. Oder zumindest ein Fehler im Code, schließlich funktioniert der Code ja nicht.

Sicherheitshalber habe ich den Code gleich noch mit hochgeladen.
Eingangsdatum ist das Datumsfeld, was ich ohne irgendwie zu modifizieren in der Tabellenstruktur drinnen habe.

Ich hoffe ich habe euch genug Informationen gegeben.

Private Sub KombiDatum1_GotFocus()   'Filterfunktion
KombiDatum1.RowSource = "SELECT DISTINCT Eingangsdatum FROM Haupttabelle "
End Sub

Private Sub KombiDatum1_Click()      'Wechsel zum nächsten Teil der Datumsfunktion
Me.KombiDatum2.SetFocus
End Sub

Private Sub KombiDatum2_GotFocus()   'Filterfunktion
KombiDatum2.RowSource = "SELECT DISTINCT Eingangsdatum FROM Haupttabelle "
End Sub

Private Sub KombiDatum2_Click()      'Suchfunktion
Dim DatVar1As String
Dim DatVar2As String
DatVar1= ""
DatVar2= ""
If Not IsNull(Me!KombiDatum1) Then DatVar1= DatVar1 & " AND Eingangsdatum = " & Format(Me!KombiDatum1, "\#yyyy-mm-dd\#")
If Not IsNull(Me!KombiDatum2) Then DatVar2= DatVar2 & " AND Eingangsdatum = " & Format(Me!KombiDatum2, "\#yyyy-mm-dd\#")
If DatVar1<> "" Then
  SqlVar = "SELECT * FROM Haupttabelle WHERE Eingangsdatum BETWEEN " & Mid(DatVar, 5) & " AND " & Mid(DadVar, 5) & ""
DatVar2& "'"
  Else
  SqlVar = "SELECT * FROM Haupttabelle "
End If
SqlVar = SqlVar & " ORDER BY Nummerierung"
Forms!Hauptformular!Unterform1.Form.RecordSource = SqlVar
Forms!Hauptformular!Unterform2.Form.RecordSource = SqlVar
End Sub
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

el_gomero

Hallo,


SqlVar = "SELECT * FROM Haupttabelle WHERE Eingangsdatum BETWEEN " & Mid(DatVar, 5) & " AND " & Mid(DadVar, 5) & ""


die Variablen DatVar und DadVar sind weder deklariert, noch als Argumente angegeben und offensichtlich nicht befüllt. Ein

mid(Format(Date, "\#yyyy-mm-dd\#"),5)

auf das aktuelle Datum ergibt

5-10-02#

damit kann dann wohl kein Vergleich stattfinden.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

MaggieMay

Hi,

noch ein paar Hinweise:
1. Die Zuweisung des immer gleichen SQL-Codes zur Rowsource der Kombifelder macht keinen Sinn. Falls die Daten sich inzwischen geändert haben könnten, wäre ein Requery angebracht. Außerdem wäre es wohl sinnvoll, die Auflistung nach Datum zu sortieren.
2. Klickereignisse sind selten die beste Wahl, hier würde ich das Ereignis "Nach Aktualisierung" wählen.
3. Das Setzen des Fokus auf das nächste Kombifeld ist überflüssig, wenn die Steuerelementreihenfolge entsprechend eingestellt wird.

@el-gomero:
Die Variabeln DatVar1 und DatVar2 (alias DatVar und DadVar) beinhalten kein Datum, sondern ein Kriterium. Die Namen sind also ausgesprochen sprechend gewählt.   :P
Freundliche Grüße
MaggieMay

el_gomero

probier mal, ob das dein gewünschter Code wäre


Private Sub KombiDatum2_Click()      'Suchfunktion
Dim strSQL AS String

If Not IsNull(Me!KombiDatum1) AND Not IsNull(Me!KombiDatum2) Then
strSQL = "SELECT * FROM Haupttabelle " & _
     "WHERE Eingangsdatum BETWEEN " & _
Format(Me!KombiDatum1, "\#yyyy-mm-dd\#") & " AND " & Format(Me!KombiDatum2, "\#yyyy-mm-dd\#") & _
" ORDER BY Nummerierung"
Else
strSQL = "SELECT * FROM Haupttabelle "
End If

Forms!Hauptformular!Unterform1.Form.RecordSource = strSQL
Forms!Hauptformular!Unterform2.Form.RecordSource = strSQL

End Sub
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

T417

Moment, ich arbeite daran. Vorab nur: Das DatVar und DadVar nur ein Test war, eigentlich heißen die DatVar1 und DatVar2...warum auch immer die nicht korrekt geändert waren...
Egal.

Danke für eure Tipps, ich arbeite die gerade ab.

Mit Setfocus wollte ich eigentlich nur es extra erzwingen, das der User eine Eingabe im betreffenden Feld macht. Die Sortierung ist jedoch ebenfalls korrekt eingestellt.

Das mit der Zuweisung des SQL-Codes hab ich mir gedacht. Ich saß davor und habe nur den Kopf geschüttelt, bei dem, was ich da programmiert hatte. Aber mir fiel nichts gescheites mehr ein.

Die ursprüngliche Variante war auch nach Aktualisierung, habe dann aber Click daraus gemacht in der Testphase, werde ich wohl wieder ändern.

Ebenfalls wie ich die Formatierung des Datumsfeldes ignorieren wollte, was ebenfalls nicht geklappt hat.

Ich hänge hier schon seit zwei Wochen dran und ärgere mich, das ich nicht auf die Lösung komme.

So...und JETZT werde ich mal den Code ausprobieren.
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7

el_gomero

Zitat
Moment, ich arbeite daran. Vorab nur: Das DatVar und DadVar nur ein Test war, eigentlich heißen die DatVar1 und DatVar2...warum auch immer die nicht korrekt geändert waren...

Das kannst du zukünftig vermeiden. Schalte unter den Optionen die Einstellung "Variablendeklaration erforderlich" ein. Dann siehst du zu Beginn jeden Moduls "Option Explicit" und Access bringt Hinweise wenn Variablen nicht deklariert wurden.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

T417

Der Code funktioniert und ich bin hochzufrieden.  :D

@el_gomero: Ja, den Trick kenn ich noch aus der Ausbildung. ;)
Normalerweise passiert mir solche Variablensprünge nicht, aber ich hatte die kurz davor unbenannt, weil die Variablen nun wirklich nicht gut benannt waren.

Danke für die Hinweise an alle. ;)
Arbeite normalerweise mit Access 2000/2003
In letzter Zeit häufiger mit Access 2007

Sowohl auf WinXP als auch auf Win7