2017-05-02 7 views
-1

Ich habe eine Abfrage, die mir die Rechnungszeilen der letzten Rechnung für einen bestimmten Kunden gibt. Es sieht so aus:MS Access, VBA, SQL ... So durchsuchen Sie Rechnungen

SELECT * FROM invoicelines WHERE clientID = [forms]![frmClient]![txtClientID] GROUP BY invoice# HAVING DateSold = SELECT MAX(DateSold) FROM invoicelines WHERE clientID = [forms]![frmClient]![txtClientID] 

Es gibt die letzte Rechnung des Kunden zurück.

Was ich hinzufügen möchte, ist eine Schaltfläche, mit der ich die zweitletzte Rechnung, die dritte, und so weiter sehen kann.

Ich weiß, dass es nicht so kompliziert ist, aber ich habe überraschend eine ganze Weile darüber nachgedacht, ohne eine Idee zu haben.

Danke!

+0

Anstatt nur den Datensatz mit dem Max (DateSold) auszuwählen, können Sie per DateSold absteigend sortieren und dann den ersten, zweiten, dritten usw. Datensatz entsprechend auswählen? – YowE3K

+0

Eigentlich ist es ist ziemlich kompliziert, nach dieser Art von Anforderung zu filtern. Ich stimme YowE3K zu, habe eine Combobox oder Listbox oder ein Formular, das einfach die Datensätze in der Reihenfolge DESCENDING auflistet und dann die gewünschte auswählt. – June7

+0

Diese Lösung würde funktionieren, aber diese Rechnungszeilen bilden zusammen tatsächliche Rechnungen. Ich würde wirklich gerne alte Rechnungen durchsuchen und ein geistiges Bild von jedem vorherigen Kauf anstelle der vollständigen DESC-Liste jedes verkauften Artikels haben. Wenn es in einer Liste ist, ist es ziemlich schwer, eine mentale Trennung von jeder Rechnung vorzunehmen. –

Antwort

0

Für eine viel mehr visuelle Darstellung der Daten, die Sie mit erstellen Sie ein Formular arbeiten können mit diesen Schritten:

Erstellen Sie eine Abfrage, um die eindeutige Rechnungs Spalten Auswahl (ohne Berücksichtigung der Elemente auf der Rechnung) (IST NUR eindeutig sein FIELDS !!)

Select distinct [invoiceDate], [invoiceTo], [InvoiceAddress], [etc] FROM [invoicelines] 

Speichern Sie jetzt die Abfrage und markieren Sie sie. Erstellen Sie dann ein gebundenes Formular und speichern Sie es. (mit der Standardformularansicht des Datenblattes)

Erstellen Sie jetzt ein zweites Formular nur basierend auf der Basistabelle. Speichere es.

Kehren Sie zum ersten Formular in der Entwurfsansicht zurück.

Betten Sie das zweite Formular, das Sie erstellt haben, in das erste als Unterformular ein. (indem Sie es aus dem Objektfenster in Ihr Formular ziehen)

Wechseln Sie zu den Eigenschaften für das Teilformular und legen Sie die [Link-Masterfelder] (Hauptformular [Rechnungsnr]/[Untergeordnete Felder] (Unterformular [Rechnungsnr]) fest Das Unterformular (stellen Sie sicher, dass die Formular-Standardansicht ein einzelnes Formular ist)

Jetzt, wenn Sie den Datensatz auf dem Hauptformular ändern, werden Sie alle Elemente dafür sehen.Sie können jetzt das Hauptformular für bestimmte Personen frei filtern/locations/dates, etc.

+0

Ich werde es später versuchen, wenn ich eine Chance bekomme. Danke für die Antwort –