Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Anzeige von größeren Werten in Kombinationsfeld

Begonnen von Flocko, September 05, 2016, 16:40:02

⏪ vorheriges - nächstes ⏩

Flocko

Hallo zusammen,

ich habe auf meinem Formular zwei Kombinationsfelder, die Werte aus einer Datum-Tabelle anzeigen sollen. Je größer die ID in der Tabelle desto "später" das Datum. Nachdem ich nun das Start-Datum in Kombinationsfeld1 angegeben habe sollen im Kombinationsfeld2 nur noch spätere Daten angezeigt werden.

Ich habe also versucht als Datenherkunft für das Kombinationsfeld2 folgendes anzugeben:

SELECT tblDatum.Datum
FROM tblDatum
WHERE (((tblDatum.DatumID)>"'" & [Me]![Kombinationsfeld1].[ID] & "'"));

Leider komme ich damit nicht auf die gewünschte Lösung. Kann mir da jemand helfen?
Kann es sein, dass ich ein Ereignis bie "Nach Aktualisierung" von Kombinationsfeld1 erstellen muss?

DF6GL

#1
Hallo,

das ID-Feld ist in dieser Umgebung eher kontraproduktiv....Lass das weg und definiere das Datum-Feld als Primärschlüssel.


Wenn Der Datentyp des ID-Feldes (vermutlich)  "Long" , bzw. ein Autowert ist, dann so:

strSQL= "SELECT tblDatum.Datum FROM tblDatum WHERE DatumID>" & [Me]![Kombinationsfeld1]




wobei das ID-Feld in Spalte 0 des ersten Kombilistenfeldes stehen muss.


(Select DatumID, Datum from tblDatum order by Datum desc)

Flocko

Jetzt bekomme ich einen Datentypkonflikt. Warum ich das ID Feld weglassen soll verstehe ich noch nicht ganz. Ich dachte das wäre ein guter Weg um aufsteigende Werte miteinander vergleichen zu können. Mit einem Datum ist das ja schwierig oder? :o

DF6GL

Hallo,

welchen Datentyp besitzt "DatumID" in der Tabelle?

Warum sollte es mit einem Datum schwieriger sein? Ein Datum wird intern auch nur als Zahl vom Datentyp Double dargestellt....

MaggieMay

Hi,

wenn sichergestellt ist, dass die Eingaben chronologisch aufsteigend erfolgen und wenn die Datensatz-ID eine Zahl vom Typ Autowert ist, so spricht mAn nichts gegen deinen Ansatz. Allerdings kannst du so nicht auf eine Spalte eines Kombifeldes zugreifen: [Me]![Kombinationsfeld1].[ID]

sondern musst die Spalte über die Column-Eigenschaft ansprechen:
Me!Kombinationsfeld1.Column(0)mit Index "0", wenn es sich um die erste Spalte handelt. Wenn es sich um die gebundene Spalte handelt, so kann die Angabe entfallen.

Des weiteren kann "Me" nicht in SQL-Strings eingesetzt werden, sondern nur im VBA-Code von Formular- oder Berichts-bezogenen Klassenmodulen.

Somit sollte folgender SQL-String als Datensatzherkunft des Kombifeldes funktionieren:
SELECT tblDatum.Datum FROM tblDatum WHERE DatumID>[Kombinationsfeld1] Order By tblDatum.Datum;

Hinweis:
Der Befehl "Kombinationsfeld2.Requery" nach Aktualisierung von Kombinationsfeld1 aktualisiert die Datensatzherkunft von Kombinationsfeld2.
Freundliche Grüße
MaggieMay

Flocko


Flocko

Eine Frage noch:

Ich würde gerne mithilfe des folgenden Befehls (der nicht funktioniert  :-X) Datensätze mit aufsteigendem Datum in eine Tabelle schreiben, wobei das Startdatum durch das Feld VonDatum und das Enddatum durch das Feld BisDatum angegeben wird...

Private Sub Speichern_Click()

    Dim strSQL As String
    Dim Datum As Date
   
        For Datum = "' & Me!VonDatum & '" To "' & Me!BisDatum & '"
   
        strSQL = "INSERT INTO tblDatumListe (Name, Datum) VALUES ('" & Me!Name & "' , '" & Datum & "')"
        CurrentDb.Execute strSQL
       
        Next Datum

End Sub

Das Datum soll so hochgezählt werden wie es auch in Tabelle tblDatum abgespeichert ist.
01.01.2017
01.02.2017
01.03.2017
...

Würde mich sehr freuen wenn mir wieder jemand helfen kann.

MzKlMu

Hallo,
wozu in eine weitere Tabelle, die Daten hast Du doch schon.
Die über die Datumsfelder gefilterte Abfrage reicht aus.

PS:
Name als Feldname ist untauglich. Name ist eine Objekteigenschaft und damit ein reserviertes Wort und für eigene Verwendung absolut tabu.
Gruß Klaus

Flocko

Das war nur die abgespeckte Version des Codes. Die tblDatum soll eigentlich nur als Hilfstabelle dienen. Ich muss angeben, von wann bis wann ein bestimmtes Ereignis dauert und wie hoch die Kosten pro Monat sind, sodass mit einer Eingabe mehrere Tabelleneinträge ausgeführt werden.

Name: Ereignis1    Von: 01.01.2017    Bis: 01.09.2017    Kosten: 300

In die Tabelle sollte dann folgendes eingetragen werden:

Ereignis1    01.01.2017    300
Ereignis1    01.02.2017    300
Ereignis1    01.03.2017    300
...
Ereignis1    01.09.2017    300