2016-05-15 8 views
2

Ich habe ein MS-Access-Formular, um Bestellungen einzugeben. Es ist ein Hauptformular mit den allgemeinen Bestelldetails - Name des Lieferanten, Datum und dann ein Unterformular in der Datenblattansicht, in dem der Benutzer die tatsächlich bestellten Artikel eingibt. Das erste Feld im Unterformular ist eine Combobox zur Auswahl des Artikels, das nächste Feld ist der bestellte Betrag und dann werden die Preis- und Gesamtfelder automatisch berechnet.Combox-Wert zeigt nicht nach dem Laden VBA

Ich wollte, dass die Combobox nur die Artikel des Lieferanten anzeigt, der auf dem Hauptformular ausgewählt wurde. Ich tat dies erfolgreich mit dem folgenden Code

Private Sub CmbSupplier_Change() 

Me!sfrmOrderDetail.Form!CmbItem.RowSource = "SELECT Items.ID, Items.Product, " _ 
              & "  Items.Supplier" _ 
              & " FROM tblItems" _ 
              & " WHERE ((Items.Supplier)= " _ 
                 & Me.CmbSupplier & ");" 

End Sub 

ich dies auch in den Form_Current() ereignis- setzen, damit es soll es wiederholen, wenn ich zu einem neuen Datensatz zu ändern.

Aber nach ein paar Bestellungen ging ich zurück zur vorherigen Bestellung mit dem Formular zurück, um zu überprüfen, was ich eingegeben und ich sah, dass, während der Rest der Informationen blieb, die items Feld (die Combobox) auf der Der erste Datensatz des Unterformulars war leer. Alle zusätzlichen Zeilen wurden ausgefüllt. Wenn ich mit dem Cursor in dieses leere Feld gehe, wird es "aufgefrischt" und den Wert ausgefüllt.

Nur so bin ich klar, zum Beispiel, ist meine erste Bestellung Lieferant Staples. Ich habe drei Zeilen in meinem subfrom - Tinte, Hefter, Papier. Nach dem Verlassen in den Datensatz und kommt zurück, geschieht Folgendes:

  1. Die Tinte nicht angezeigt wird, obwohl Hefter und Papier sowie die Menge an Tinte, Preis und insgesamt ist.
  2. Wenn ich in das Feld drücke, wird es plötzlich angezeigt und ich kann die Combobox-Liste sehen, die die richtigen Elemente aufgelistet hat, damit der Code definitiv funktioniert.
+1

Dies ist eine Menge Text, ohne auf den Punkt zu kommen. Wo ist das Problem? Enthält die Tabelle 'tblItems' nicht die gewünschten Daten? Enthält diese Tabelle die Daten, aber "CmbItem" zeigt die Einträge nicht an, nachdem Sie die Eigenschaft 'RowSource' festgelegt haben? Funktioniert das, aber der Event-Handler wird nicht wie erwartet aufgerufen, sodass die Combobox nie aktualisiert wird? Bitte isolieren Sie den Fehler und aktualisieren Sie Ihre Frage, damit Sie genauer bestimmen können, wo und wie wir Ihnen helfen können. – Leviathan

+0

sollte es in Access sein, es wäre besser, das entsprechende Tag – user3598756

Antwort

0

Ich bin ziemlich sicher, dass das, was hier passiert:

  • Sie zu einem vorhandenen Datensatz wechseln zurück
  • Access das vorher eingegebenen Element in der Combobox versucht zu zeigen, kann aber nicht, weil der Wert ist nicht Teil der Combobox rowsource
  • Dann Form_Current verläuft und ändert die Rowsource dem aktuellen Anbieter
  • aber CmbItem nicht, dass abholen, bis Sie in sie klicken.

Lösung sollte eine

Me!sfrmOrderDetail.Form!CmbItem.Refresh 

nach Änderung der Rowsource hinzuzufügen sein.

+0

Vielen Dank!Das erklärt, was passiert ist! Danke fürs Erklären und die Aktualisierung hat den Trick gemacht. –

+0

@ K.Lifs: Wenn die Antwort Ihr Problem gelöst hat, können Sie [akzeptieren] (http://stackoverflow.com/help/someone-answers), dies markiert auch die Frage als gelöst. – Andre

Verwandte Themen