Hallo
Ich habe ein Problem mit einem Listenfeld.
In einer Access Datenbank habe ich ein Formular mit einem Listenfeld (Liste73), mit allen Artikeln.
Klicke ich auf einen Artikel, wird er dazugehörige Datensatz angezeigt. Analog dazu wird die Zeile Im Listenfeld markiert, wenn ich den Artikel über Suchen ansteure. Klappt wunderbar.
Mein Listenfeld umfasst alle 545 Artikel (Ich weiß, recht Groß). Nun möchte ich, das der angezeigte Artikel im Listenfeld immer als erster Eintrag im Listenfeld erscheint.
Mit ItemData(0) verbleibt der Bezug ja immer auf dem ersten Eintrag des Formulars. Ich möchte aber im sichtbaren Bereich des Listenfeldes die oberste Zeile markiert haben.
Hallo,
Ich habe ein Problem mit einem Listenfeld.
In einer Access Datenbank habe ich ein Formular mit einem
Listenfeld (Liste73), mit allen Artikeln.
Klicke ich auf einen Artikel, wird er dazugehörige Datensatz
angezeigt. Analog dazu wird die Zeile Im Listenfeld markiert,
wenn ich den Artikel über Suchen ansteure. Klappt wunderbar.
Mein Listenfeld umfasst alle 545 Artikel (Ich weiß, recht
Groß). Nun möchte ich, das der angezeigte Artikel im
Listenfeld immer als erster Eintrag im Listenfeld erscheint.
Mit ItemData(0) verbleibt der Bezug ja immer auf dem ersten
Eintrag des Formulars. Ich möchte aber im sichtbaren Bereich
des Listenfeldes die oberste Zeile markiert haben.
Irgendwie verstehe ich dabei den Sinn des Listenfeldes nicht… Das Listenfeld kann die Artikel nur in einer bestimmter Reihenfolge anzeigen. Die wird durchbrochen , wenn ein willkürlich bestimmter Datensatz als erster angezeigt weden soll.
Wie auch immer, ohne aufwändige Programmierung wird das nicht gelingen.
a) das Listenfeld als Wertliste definieren und die Artikel mittels Zusammenbau der Wertliste (per VBA) in die gewünschte Reihenfolge bringen, bzw. den akt. DS an erste Stelle in der Wertliste verschieben.
b) ein weiteres Tabellenfeld (Ja/Nein) einbauen, das den jeweils gefundenen DS (,der im Form(!) angezeigt wird,) markiert. Das Listenfeld dann über eine Abfrage (dynamisch) füllen, die nach diesem Tabellenfeld aufsteigend sortiert.
Viele Grüße vom Bodensee
Franz, DF6GL
Vielen dank, für die schnelle Antwort!!
Wahrscheinlich habe ich mich allerdings unklar ausgedrückt.
Ich habe eine Lagerverwaltung mit etwa 530 Artikel. Jeder Artikel kann über die Interne Artikelnr. aufgerufen werden und über das Listenfeld.
Der Vorteil des Listenfeldes ist, das die Markierung Automatisch mit läuft. Also, Ich gehe über Suchen und Finden auf einen Artikel, sagen wir Spätzle. Im Listenfeld ist nun Automatisch Spätzle markiert.
Das Listenfeld hat die Höhe, das ca. 30 Artikel sichbar sind.
Alles wunderbar und für meine Mitarbeiter konfortabel.
Nun zu meinem Anliegen.
Sagen wir Spätzle ist der 40. Artikel. Das heißt für das Listenfeld, ich nur die Artikel sehe, die Vor den Spätzle liegen, weil ja die Markierung im Listenfeld selber immer ganz unten ist.
Es wäre aber besser, die Markierung wäre einfach nur oben.
___________________
! Artikel 10 !
! Artikel 11 !
! Artikel 12 !
! A R T I K E L 13!
(Artkiel 13 wäre in meinem Listenfeld schwarz markieret.)
So ist es zur Zeit.
____________________
! A R T I K E L 13 !
! Artikel 14 !
! Artikel 15 !
! Artikel 16 !
Hoffe, dass ist verständlicher.
Es wäre einfach eine Extra Hilfe, bei der Verarbeitung der Daten, würde man die nachfolgenden Datensätze sehen und nicht die Vorhergehenden.
Danke im Vorraus.
Hallo,
ja, das hab ich wirklich falsch verstanden…
Trotzdem ist sowas nur krückenhaft (auf einfache Art und Weise) zu behandeln.
Probier mal Folgendes:
Im Form_Current-Ereignis zusätzlich zu evtl. vorhandenem Code:
Sub Form\_Current()
.
.
.
Dim lngMarke As Long
lngMarke = Me!lstListenfeld1.ListIndex
If lngMarke
Viele Grüße vom Bodensee
Franz, DF6GL
Super, vielen Dank
geht aber leider nicht
habe folgenden Code:
Private Sub Form_Current()
Me!Liste73 = Me!Liste73.ItemData(Me.CurrentRecord - 1)
Sub Form\_Current()
Dim lngMarke As Long
lngMarke = Me!Liste73.ListIndex
If lngMarke
End Sub
bekomme leider nur Syntaxfehler
Ich fürchte, der Nutzen wird den Aufwand nicht gerecht.
Funktioniert auch nicht, wenn ich die PreSub hinter meinen Code stelle.
Auch ohne die klammern gibts nur Fehlermeldungen.
Aber danke für deine Hilfe.
Super, vielen Dank
geht aber leider nichthabe folgenden Code:
Private Sub Form_Current()
Me!Liste73 = Me!Liste73.ItemData(Me.CurrentRecord - 1)Sub Form_Current()
Dim lngMarke As Long
lngMarke = Me!Liste73.ListIndex
If lngMarkeEnd Sub
bekomme leider nur Syntaxfehler
Das ist ja nun auch kompletter Unsinn…
So muss es insgesamt heißen:
Private Sub Form\_Current()
Me!Liste73 = Me!Liste73.ItemData(Me.CurrentRecord - 1)
' diese Zeile ist eher unzulänglich. Besser wäre etwa dies:
' Me!Liste73 = Me!ArtikelNr
'wenn in Spalte 0 des Listenfeldes die Artikelnr steht.
Dim lngMarke As Long
lngMarke = Me!Liste73.ListIndex
If lngMarke
Vielen Dank
Mein Code sieht nun so aus.
Private Sub Form\_Current()
Me!Liste73 = Me!Sortierer
'NrIntern ist eine Hauseigene Artikel Nr. Sortierer ein Wert, nach
'dem die Datensätze sortiert werden können.
'NrIntern liefert den Primärschlüssel und ist mit einer Tabelle
'Archiv verknüpft.
Dim lngMarke As Long
lngMarke = Me!Liste73.ListIndex
If lngMarke
Die "pre" Anweisungen nimmt er überhaupt nicht.
Ohne diese Anweisung gibt er folgende Fehlermeldung heraus:
Update oder CancelUpdate ohne AdNew oder Edit
Hoffe, ich nerve nicht zu arg.
Hallo
Private Sub Form_Current()
Me!Liste73 = Me!Sortierer
'NrIntern ist eine Hauseigene Artikel Nr. Sortierer ein Wert,
nach
'dem die Datensätze sortiert werden können.
'NrIntern liefert den Primärschlüssel und ist mit einer
Tabelle
'Archiv verknüpft.
Dim lngMarke As Long
lngMarke = Me!Liste73.ListIndex
If lngMarke
Ja, das Listenfeld ist ungebudnen.
Wäre auch zu schön, wenn dass einfach der Fehler wäre.
Kurze Erklärung:
Alle Formulare in meinem Lager werden über ein Formular „Eingang“ angesteuert.
3 Felder werden als zwischenspeicher „misbraucht“.
Unten stehender Code fragt den Wert des „Zwischenspeichers“ ab und führt dem entsprechend eine Aktion aus.
Funktioniert wunderbar.
Aber kommt dieser Code unserem in die Quere?
Nur ne Ide.
Private Sub Liste73_AfterUpdate()
’ Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst „[Artikel] = '“ & Me![Liste73] & „’“
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
If Forms!Eingang!BestellStatus = 1 Then
NummerIntern.SetFocus
End If
If Forms!Eingang!BestellStatus = 2 Then
NummerExtern.SetFocus
End If
If Forms!Eingang!BestellStatus = 3 Then
NummerIntern1.SetFocus
End If
End Sub
Hallo,
ja, kann sein…
Benutz mal statt dem Afterupdate- das Click-Ereignis.
Viele Grüße vom Bodensee
Franz, DF6GL
Hi, auch wenn ich mich wiederhohle.
Vielen Dank
Problem bleibt allerings erhalten.
Nun ja, ich will Dich nicht länger damit belästigen.
Ich glaube, ich belasse es einfach, wie es ist.
Es funktioniert ja sehr gut.
Wäre ja nur des Komforts wegen gut gewesen.
Vielen Dank noch mals!