Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Access 2000, Kombofeld, Standardwert

Empfohlene Antworten

Veröffentlicht

Hallo, alle zusammen!

Ich habe ein Problem, bei dem Ihr mir vielleicht helfen könnt.

Ich versuche bisher, es mit VBA zu lösen.

~~~~~

Daten:

Tabelle 'tKunde':

IDKunde (Autowert, Primary Key) / Firma

108 / B

109 / A

127 / C

Auswahlabfrage 'aKunde' (Aufsteigend nach Firma sortiert):

IDKunde / Firma

109 / A

108 / B

127 / C

[i.O.]

Die Datensätze sind löschbar.

~~~~~

Ziel:

Ich möchte in einem ungebundenen Kombinationslistenfeld (cbo) als Standardwert beim Öffnen des Formulars jedesmal die jeweilig erste IDKunde stehen haben (Nach Firma alphabetisch aufsteigend sortiert).

Also mit den Daten im Beispiel oben die 109.

~~~~~

Problem:

DMin ("[iDKunde]", "aKunde") = 108 [i.O.]

DMax ("[iDKunde]", "aKunde") = 127 [i.O.]

DFirst("[iDKunde]", "aKunde") = 108 [WARUM?]

DLast ("[iDKunde]", "aKunde") = 127 [hier: i.O.]

Access scheint die Reihenfolge der Ausgabe der Abfrage nicht zu beachten!?

~~~~~

Würde es evtl. auch mit einem Rückgabewert aus einem SQL-String funktionieren?

Falls eine solche Lösung von Euch kommt:

Ich beherrsche dieses noch nicht so gut und wäre dann dankbar, wenn der "gesamte" VBA-Code angegeben wird:

(

"Das Öffnen des rs"

MeineVariable = "und nun weiß ich die genaue Syntax nicht"

MeineCbo.DefaultValue = Meine Variable

"Das Schließen des rs"

)

Aus irgendeinem Grund gelingt es mir nicht, den aus einer Abfrage kopierten SQL-String VBA-tauglich zu machen.

'MeineCbo.ListIndex = 0' funktioniert nicht:

"Falsche Verwendung der Eigenschaft."

~~~~~

Danke an dieser Stelle schon einmal an alle, die mir helfen wollen!

Grüße

piomode1

<FONT COLOR="#a62a2a" SIZE="1">[ 25. Oktober 2001 21:22: Beitrag 3 mal editiert, zuletzt von piomode1 ]</font>

<BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von piomode1:

<STRONG>Ich beherrsche dieses noch nicht so gut und wäre dann dankbar, wenn der "gesamte" VBA-Code angegeben wird:

(

"Das Öffnen des rs"

MeineVariable = "und nun weiß ich die genaue Syntax nicht"

MeineCbo.DefaultValue = Meine Variable

"Das Schließen des rs"

)

</STRONG>

  • Autor

Hi, Wolle!

Ersteinmal vielen Dank für Deine Hilfe.

cbo.RowSource="SQL-String" wird mir in Zukunft nützlich sein.

Leider löst Dein Vorschlag mein Problem nicht:

Es werden zwar alle Firmen sortiert in die Komboliste aufgenommen; DAS macht meine Abfrage auch...

Das Problem (mein Wunsch) besteht darin, daß ich beim Öffnen des Formulars kein leeres KomboFeld sehen möchte, sondern schon in diesem Moment automatisch eine Firma.

Mit der Eigenschaft "Standardwert" kann ich zwar eine IDKunde eintragen.

Das löst mein Problem aber auch nicht, denn es kommen und gehen ständig Kunden. Ich weiß also nie, welcher Kunde alphabetisch jetzt an erster Stelle steht.

Nocheinmal wie bereits geschrieben:

1) Die Abfrage und auch Wolles .RowSource liefern die Daten in alphabetischer Reihenfolge.

'DFirst' und 'DMin' liefern nicht das richtige Ergebnis.

2) cbo.ListIndex = 0

liefert Laufzeitfehler '7777'

In gespannter Erwarung Eurer Kreativität.

Hallo und guten Morgen!

Ich hoffe, ich habe es geschnallt und hier ist meine Lösung. Beim Anzeigen des Formulares soll die erste Firma in Deinem Kombifeld stehen. Richtig??

Wenn ja:

Private Sub Form_Current()

'erstmal zwei Variable deklarieren

Dim sql As String

Dim rs As Recordset

'die kundenID nach firma sortier holen

sql = " SELECT IDKunde, Firma FROM tKunde ORDER BY Firma;"

'Kombifeld zuweisen

Me.Kombinationsfeld0.RowSource = sql

'recordset öffnen mit dem gleichen sql

Set rs = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)

'zum ersten springen

rs.MoveFirst

'da die ID die gebundene spalte ist, erster Kunde=Kombifeld

Me.Kombinationsfeld0 = rs![idKunde]

'recordset schliessen

rs.Close

Set rs = Nothing

End Sub

Jetzt sollte das Formular die erste Firma anzeigen.

Ich hoffe, das hilft Dir weiter.

Gruss

  • Autor

Hallo, Leute!

Der Code von Mercutio ist schlüssig und müßte meines Wissens nach funktionieren. Nur bei mir nicht...

Es kommt zum

Laufzeitfehler 13: Typen unverträglich.

Das Problem taucht auch auf, wenn ich statt SQL eine existierende Abfrage einsetze!

Ich habe dazu ein neues Thema gestartet:

Access 2000, OpenRecordset, Lzf. 13

An dieser Stelle ersteinmal vielen Dank an alle!

hi wenn ich das mal schnell überblicke denke ich das es statt

Me.Kombinationsfeld0 = rs![idKunde]

Me.Kombinationsfeld0.value = rs![idKunde]

heißen müsste.

  • Autor

Hi, s35i!

Im Prinzip hast Du recht, es ist sauberer so zu programmieren, wie Du es vorschlägst:

_____

Me.Kombinationsfeld0.value = rs![idKunde]

_____

Nun ist es aber so, daß sich MS manchmal etwas anstellt, und nur Zuweisungen an Felder zulässt, wenn dieses Feld den Fokus besitzt. Das ist manchmal aber unerwünscht bzw. etwas schwer zu realisieren.

Abhilfe schafft hier die Möglichkeit unsauber zu implementieren. Es gibt für jedes Steuerelement eine Standardeigenschaft. Und wenn genau diese Eigenschaft manipuliert werden soll, braucht sie nicht mit angegeben zu werden:

_____

Me.Kombinationsfeld0 = rs![idKunde]

_____

Und wenn man den Feldnamen ohne Leerzeichen und Bindestrich und sonstwelche 'Sonderzeichen' gewählt hat, kann man auch die eckigen Klammern weglassen:

_____

Me.Kombinationsfeld0 = rs!idKunde

_____

Und wenn der Code als Klassenmodul (gebunden im Formular) vorliegt, kann auch das Me. wegfallen. ABER das Me. nimmt viel Schreibarbeit ab, da dann in der KomboListe alle Eigenschaften und auch die Steuerelemente in diesem Formular aufgelistet werden, so daß folgende Zeile nur eine (theoretische aber funktionierende) Möglichkeit darstellt:

_____

Kombinationsfeld0 = rs!idKunde

_____

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.