Zum Inhalt springen

Access 2000, Kombofeld, Standardwert


piomode1

Empfohlene Beiträge

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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

<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>

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

_____

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...