Neuigkeiten:

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

Mobiles Hauptmenü

max. Anzahl aus Textfeld in Kombinationsfeld rein

Begonnen von martie01, Februar 05, 2019, 22:52:40

⏪ vorheriges - nächstes ⏩

martie01

N'Abend !
Wie bekomme ich das wohl hin, das ein Kombinationsfeld so viele Zahlen 1,2,3.. anbietet, wie in einem anderen Textfeld als höchste Zahl steht ?
Beispiel : im Textfeld steht die Zahl 10 .
Das Kombinationsfeld bietet die Zahlen :1,2,3..10 an `
Danke und Grüße

MzKlMu

#1
Hallo,
mit einer Tabelle die alle Zahlen enthält die Du jemals brauchst.
Und dann die gewünschte Zahl als Kriterium. Z.B.
<=10
Das Kriterium geht auch als Formularbezug.
Oder Du weißt dem Kombi die Datenquelle (Hilfstabelle) mit dem Kriterium direkt bei Fokuserhalt zu.

Zu was brauchst Du das denn ?
Gruß Klaus

martie01

Tabelle ist eher schlecht.die Zahl kann sich im Verlauf ändern.
Ich brauche das dafür.. Anzahl a legt fest, wie viele Mengen pro Fertigungsauftrag gebaut werden sollen.
Ausgehend von a wird festgelegt, wieviele Serienummern erzeugt werden dürfen.
Mit der Hilfstabelle ist mir das noch nicht ganz klar.
Beispiel..a=5
Dann dürfen bei den einzelnen Artikelnr 5 Seriennummern eingegeben werden.

MzKlMu

Hallo,
wenn Du Seriennummern vergibst, so müssen die ja gespeichert werden.
Also brauchst Du in jedem Fall eine extra Tabelle um in je einem Datensatz die Seriennummern eintragen zu können.
Diese Tabelle benötigt einen Fremdschlüssel zum Auftrag.
Die Datensätze für die Seriennummern müssen per Anfügeabfrage oder recordset mit einer Schleife (For i = 1 To Anzahl) angefügt werden.
Eintrag der Seriennummer erfolgt dann in einem Unterformular zum Auftrag.
Ein Kombifeld ist da wenig sinnvoll.

Wie entsteht denn die Seriennummer, die ist ja auch nicht willkürlich, oder ?
In einem Unterformular zum Auftrag könn
Gruß Klaus

martie01

Ich schreibe über ein ungebundenes Textfeld und ein Recordset die Seriennr in eine Tabelle. Dazu kommt dann der FA die ArtikelNr ID und die Gerätenr.
Über ein DomWert rufe ich dann die Werte (SerienNr.) wieder ab . So kann man dann sehen, ob f. das entsprechende "Gerät" bzw. den einzelnen Pos. eine SerNr eingetragen ist, oder nicht.
Ich hatte gedacht, das geht irgendwie über ein 1 to n Schleife?!

MzKlMu

Hallo,
irgendwie verstehe ich garade Dein Problem nicht.
Wenn Du doch bereits in eine Tabelle schreibst, kannst Du doch ein an diese Tabelle gebundenes Formular verwenden das die Datensätze anzeigt.
Da braucht es doch kein DomWert und auch keine Schleife.
Ich glaube, Du denkst zu kompliziert.
Gruß Klaus

martie01

Hy, hmm,
kann sein. Aber irgendwie muss es doch möglich  sein, ein  DropdownFeld zu erzeugen, bei dem die letzte Nummer aus einem Textfeld gewonnen wird?!
Gruss Martin

MzKlMu

Hallo,
das wird immer verwirrender.
Zitatein DropdownFeld zu erzeugen, bei dem die letzte Nummer aus einem Textfeld gewonnen wird
die letzte Nummer wäre ein Datensatz. Und was willst Du mit einem Datensatz in einem Kombifeld ?

Wer in einer Datenbank in der angedachten Weise DomWert verwenden will macht was falsch.
Gruß Klaus

martie01

In dem Kombifeld kommt kein Datensatz.Da steht lediglich die Zahl 1,2... bis zur Ziffer im Textfeld-

MzKlMu

#9
Hallo,
ZitatAber irgendwie muss es doch möglich  sein,
ja, natürlich geht das. Wie (mit der Hilfstabelle) habe ich Dir in meiner 1.Antwort schon beschrieben. Damit ist das sogar einfach. Die Hilfstabelle (die bis zu eine beleibigen Zahl gehen kann) wird auch nur einmalig angelegt werden.
das Vorhaben ist mir unbegreiflich. Es steht ein Tabelle zur Verfügung zur Anzeige der Datensätze im Kombifeld. Ich kann daher nicht weiter helfen.
Gruß Klaus

PhilS

Zitat von: martie01 am Februar 06, 2019, 10:46:42
kann sein. Aber irgendwie muss es doch möglich  sein, ein  DropdownFeld zu erzeugen, bei dem die letzte Nummer aus einem Textfeld gewonnen wird?!
Private Sub Combo0_GotFocus()

    Dim i As Long
    Dim maxWert As Long
    Dim newRowSource As String
   
    maxWert = 22
   
    For i = 1 To maxWert
        newRowSource = newRowSource & i & ";"
    Next i
   
    newRowSource = Left(newRowSource, Len(newRowSource) - 1)
   
    With Me.Combo0
        .RowSourceType = "Value List"
        .RowSource = newRowSource
    End If
   
End Sub
Wahlweise kann das natürlich auch im Form-Current-Ereignis oder im After-Update der korrespondierenden Textbox erfolgen.
Die elegantere Lösung wäre eine RowSourceType-Function, aber es fehlt mir im Moment die Zeit dafür ein Beispiel zu erstellen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
mit einer Zahlenhilfstabelle wird das zu einem Einzeiler.
Private Sub Kombinationsfeld0_GotFocus()
    Me.Kombinationsfeld0.RowSource = "select Anzahl from Zahlen where Anzahl <=" & Me.Anzahl
End Sub

Gruß Klaus

martie01

Erstmal vielen Dank f. Die Tips.Habe mir mit einer Hilfstabelle geholfen.
Werde aber die andere Lösung auch noch einmal ausprobieren.
Grüße