PDA

Vollständige Version anzeigen : Kombifelder in ungebundenen Formularen


Stahlbanane
28.09.2005, 16:28
Hallo,

hat jemand für das folgende Problem einen Lösungsansatz?

Ich habe ein ungebundenes Formular, das mittels eines DAO-Recordset mit Daten gefüllt wird. Dies funktioniert soweit. Nun habe ich in diesem Formular ein ungebundenes Kombinationsfeld, mit dem ich die angezeigten Daten weiter verfeinern möchte. Diesem Kombifeld möchte ich als Auswahlmöglichkeit die bereits angezeigten, und eventuell schon gefilterten, Daten bestimmter Felder mitgeben. Beispiel: Im Formular werden im Feld 'Ladungen' verschiedene Ladungen angezeigt, die gefahren wurden. Diese Ladungen werden teils mehrfach angezeigt (falls ein anderes Kriterium zuvor als Filter gedient hat). Als Auswahlmöglichkeit sollen dann eben diese angezeigten Ladungen, ohne Duplikate, angeboten werden.
Leider habe ich keine Idee, wie ich diese Auswahlmöglichkeiten einstelle. Kann ich auf das Recordset beim Öffnen des Formulars zugreifen, wenn ja, wie, oder muss ich, nachdem das Formular geöffnet wurde, ein seperates Recordset erstellen (z.B. set neues_RS = me.recordset) und dies dann dem Kombifeld zuordenen. Letzteres habe ich versucht, hier wird aber nur das erste Feld, ein Index, angezeigt.

Höre gerne.

Gruß
Jan

J_Eilers
28.09.2005, 20:41
Hi,

hast du es mal so versucht?

Me!Kombi.Recordset = Me.Recordset

Ansonsten müsste man sich ein entsprechendes SQL-Statement zusammenbasteln, welches mit SELECT DISTINCT(ROW) Dublikate ausschließt.

Stahlbanane
28.09.2005, 23:40
Hallo,

was meinst Du mit (ROW)?
Kann man damit festlegen, welche "Spalte" eines Recordsets im Kombifeld angezeigt wird? Ich habe es bereits mit einem weiteren RS versucht, dabei wurde aber, wie vielleicht bereits erwähnt, nur die am Anfang stehende Reisenummer angegeben und nicht die Ladungsbeschreibung.

Höre gerne.

Gruß
Jan

J_Eilers
29.09.2005, 07:17
Es gibt ein SELECT DISTINCT was ohne Dublikate entspricht und SELECT DISTINCTROW welches eindeutige Datensätze entspricht.

Stahlbanane
29.09.2005, 08:59
Hallo,

ok, soweit klar. Ich habe bereits beim Ereignis 'getfocus' ein weiteres RS erstellt - mit set rs=me.recordset. Wenn ich das richtig verstehe, ist dies dann ein Abbild des gegenwärtig angezeigten RS. Das beinhaltet aber mehrere Felder pro DS. Wie kann ich es nun hinbekommen, dass nicht das erste Feld im Kombinationsfeld angezeigt wird - ich habe es mit set.kombifeld.recordset=rs versucht - da wird aber das 1. Feld dann angezeigt, welches mich da gar nicht interessiert. Vielmehr möchte ich dann ein bestimmtes Feld einstellen, die Ladunsgbeschreibungen. Wenn ich ... = rs!Ladungsbeschreibung verwende, meldet Access, dass ich dem Kombifeld dieses nicht zuordnen könne.

Gruß
Jan

J_Eilers
29.09.2005, 09:19
Mit Me!Kombi.Recordset = Me.Recordset übergibst du das gesamte Recordsetobjekt des Formulars an das Kombifeld. Angezeigt wird immer die 1. sichtbare Spalte. Das kannst du in den Eigenschaften des Kombis mit der Spaltenanzahl und Spaltenbreite regulieren.

Stahlbanane
29.09.2005, 10:05
Hallo,

wenn ich nun nur das 17. Feld anzeigen möchte. Muß ich dann alle Felder anzeigen lassen, oder kann man das regulieren, wenn ja: wo. Ich habe zwar schon mit mehrspaltigen Kombifeldern gearbeitet, da sollten dann aber auch alle übergebenen Felder angezeigt werden.

Gruß
Jan

J_Eilers
29.09.2005, 10:36
Spaltenanzahl = 17
Spaltenbreite = 0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;0cm;2,54cm

Dabei drängt sich mir immer mehr die Frage auf, warum du nicht einfach eine Abfrage der Datenherkunft des Kombis zuweißt, in dem du nur die ID(?) und das entsprechende Feld verwendest?

Stahlbanane
29.09.2005, 12:46
Hmm. Darauf hätte ich eigentlich auch selbst kommen können.

Der Grund, warum ich keine Abfrage verwenden kann ist der, dass die im Formular angezeigten Daten durch ein DAO-RS erzeugt wurden und eventuell schon gefiltert worden sind. Im Kombifeld möchte ich nur eine Auswahl der bereits angezeigten Daten eines bestimmten Feldes anzeigen, quasi zur weiteren Verfeinerung der Anzeige. Wenn ich die Kombifelder per seperater Anzeige fülle, werden darin auch Werte angezeigt, die vielleicht gar nicht mehr im Formular gezeigt werden. Dadurch würde ich Auswahlmöglichkeiten erhalten, die gar nicht sinnvoll sind, z.B. im Formular angezeigte Ladungen:
Spruce PL, Pine PL, Birch PL, Pine PL, Coniferous PL - und als Auswahlmöglichkeiten im Kombifeld erscheint zusätzlich Aspen PL, weil das vielleicht mal von einem anderen Schiff transportiert wurde. Die Auswahl vom Aspen PL würde dann zu einer leeren Anzeige führen.

Vielen Dank für die Hilfe, ich teste das gleich und gebe Bescheid.
Gruß
Jan

Stahlbanane
29.09.2005, 13:03
Hallo,

das hat prima funktioniert. Es bleibt noch eine kleine Frage. Gibt es eine Möglichkeit bei der Verwendung von "Me!Kombi.Recordset = Me.Recordset" Duplikate zu unterbinden, so wie bei SELECT DISTINCT ?

Das währe dann ideal.

Gruß
Jan

J_Eilers
29.09.2005, 13:46
IMHO Nein. Man könnte höchstens aus dem RS die Daten in einem String zusammensetzen und mittels ";" trennen. Dann könnte man den String als Werteliste dem Kombifeld als Datenherkunft übergeben. Bedingung ist dabei, dass eine Werteliste nie mehr als 2000 Zeichen darstellen kann. Sinnvoll?

Andere Möglichkeit mit Abfrage als Datenherkunft wäre, die Abfrage genauso zu filtern, wie das RS. Nur dazu müsste man wissen, wie das bei dir so abläuft.

Stahlbanane
29.09.2005, 14:15
Hallo,

ich denke, dann ist es am sinnvollsten, die Auswahl für das Kombifeld per Abfrage aufzubauen, da die Filter noch vorhanden sind.
Dies ist auf alle Fälle kürzer als der Weg über die Werteliste.

Viele Dank für die Hilfe.

Gruß
Jan