PDA

Vollständige Version anzeigen : Abfrage in Formular integrieren


marius6d
19.01.2008, 19:42
Guten Tag,

Ich hoffe ihr könnt mir bei meinem Problem helfen.

Also, ich habe hier eine Tabelle mit Daten von verschiedenen Einstellungen einer Maschine. In dieser Tabelle beinhaltet jede Zeile einstellung je nach Produkt. Jeder Zeile hab ich nun einen Primärschlüssel zu geteilt. Als weiteres habe ich eine Tabelle mit den Namen der verschiedenen Produkte welcher ebenfalls Primärschlüssel verteilt wurden. (Siehe Anhang) Diese beiden Tabellen habe ich nun mit den Primärschlüsseln verknüpft. Wenn ich nun in der zweiten Tabelle auf den reiter clicke, sehe ich den jeweiligen Datensatz der ersten Tabelle, je nach Produkt. Doch jetzt komme ich nicht weiter:

Ich will, das man in einem Formular in einem Auswahlfeld auf das jeweilige Produkt clicken kann und dann eine Abfrage ausgeführt wird die mir nur die daten des jeweiligen Produktes auf einer Seite anzeigt, die ich dann so drucken kann.

Ich weiss tönt ein bisschen blöde ist schwierig zu besschreiben, jedenfalls möchte ich am Schluss einfach die Daten eines einzigen Produktes auf einer Berichtsseite anzeigen lassen und diese dann so drucken.

Im Anhang sind die Tabellen drin, ich hoffe ihr versteht was ich meine.

Vielen Dank

Marius 6d

Lanz Rudolf
19.01.2008, 20:11
Hallo
ich lege ein Bsp. in den anhang
wen Du etwas findest was dit zu sagt Ok
sonst melde Dich und ich schaue Dein Anhang an

Anne Berg
19.01.2008, 22:51
Hallo und Willkommen im Forum.

Ich empfehle dir, dich erstmal ein wenig umzuschauen, die Suchen-Funktion zu benutzen und ähnliche Beiträge zu lesen, dann kannst du vielleicht schon mal ein Formular mit einem Kombinationsfld zur Auswahl des Produkts erstellen, sowie einen Bericht zur Anzeige des ausgewählten Datensatzes.

marius6d
14.02.2008, 13:48
Schon mal vielen Dank für eure Beiträge. Ich habe jetzt das Formular mit dem Kombinationsfeld erstellt und ein Formular in dem die einzelnen Datensätze auf einer Seite angezeigt und ausgedruckt werden können.

Jetzt will ich eine Schaltfläche in dem Formular mit dem Kombinationsfeld machen, doch wie muss ich das anstellen, damit ich im Kombinationsfeld einen Eintrag auswählen kann und dann wenn ich auf den Button drücke, dieser automatisch den Datensatz aus dem anderen Formular ausdruckt?

Im Anhang ist die Datenbank mit den beiden Abfragen!

Vielen Dank für eure Hilfe

Anne Berg
14.02.2008, 16:08
Hallo,

warum willst du unbedingt über das andere Formular drucken? Besser geeignet wäre ein Bericht. Den kannst du per Knopfdruck gefiltert öffnen oder direkt drucken.

marius6d
14.02.2008, 16:32
hmm, ok. Ich habe einfach probiert es so zu machen weil ich nicht herausgefunden habe wie das mit einem Bericht geht.

Vor allem weiss ich nicht wie ich im Bericht einstellen kann das es nur einen Datensatz pro seite anzeigt und ich scrollen kann. wenn ich es mit dem Assistenten mache zeigt mir der Bericht einfach alle daten die in der Tabelle sind auf einer seite an!

Anne Berg
14.02.2008, 17:04
Du kannst in einem Bericht Gruppierungen einfügen und festlegen, dass ein Seitenwechsel vor/nach Gruppenwechsel stattfinden soll. Das bietet dir auch der Assistent an... zumindest das Grundgerüst dazu.

Arne Dieckmann
14.02.2008, 17:10
Dafür braucht man nicht einmal Gruppierungen. Der Detailbereich selbst hat die Eigenschaft "Neue Seite", die man auf "Vor Bereich", "Nach Bereich" oder "Vor & Nach " stellen kann.

marius6d
15.02.2008, 08:24
Vielen Dank für eure Hilfe, den Bericht habe ich jetzt erstellt und funktioniert alles. Was muss ich nun tun, dass nur der gewünschte Datensatz angezeigt bzw. ausgedruckt wird?

Anne Berg
15.02.2008, 08:34
Du kannst beim Aufruf des Berichts einen Filter mitgeben. Schau dir mal die OpenReport-Methode in der Hilfe an.

marius6d
15.02.2008, 09:27
Tut mir Leid aber ich verstehe nur Bahnhof, ich habe keine Ahnung von Visual Basic und weiss nicht was ich etz da eingeben müsste

Anne Berg
15.02.2008, 09:29
Wie öffnest du den Bericht denn?

marius6d
15.02.2008, 09:53
mit einer Befehlsschaltfläche --> Berichtsoperation --> Berichtsvorschau. Funktioniert so auch, nur dass halt der ganze Bericht dann angezeigt wird, dass muessti ich dann ja auch noch irgendwie mit dem Listenfeld verknüpfen oder?!

P.S. Siehe Anhang

Vielen Dank, dass du dir so viel Zeit nimmst mir zu helfen

Anne Berg
15.02.2008, 10:11
Wenn du den Bericht mit der OpenReport-Methode öffnest, so schau dir doch die Syntax mal in der Access-Hilfe an!

Du kannst einen Filter mitgeben, so dass nur der ausgewählte Datensatz gedruckt wird.

PS: Access-Dateien müssen regelmässig komprimiert werden!

marius6d
15.02.2008, 10:45
wenn ich das richtig verstehe muss ich jetzt eine abfrage erstellen die die Daten Filter und die dann beim öffnen anwenden oder wie?

Anne Berg
15.02.2008, 10:53
Nein, was sagt dir denn die Access-Hilfe?Ausdruck.OpenReport(ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)

WhereCondition Optionaler Variant-Wert. Ein Zeichenfolgenausdruck, der einer gültigen SQL-WHERE-Klausel ohne das Wort WHERE entspricht.

Das heißt in deinem Fall: DoCmd.OpenReport stDocName, acPreview, , "ID=" & Me!Liste0So schwer ist das doch gar nicht, oder? ;)

marius6d
15.02.2008, 14:38
hmm, ich habe deinen code etz eingegeben beim öffnungsbutton, doch jetzt tut sich gar nichts!

Der code des Buttons sieht etz folgendermassen aus:

Private Sub Befehl9_Click()
On Error GoTo Err_Befehl9_Click

Dim stDocName As String

stDocName = "Kontrollblatt"
DoCmd.OpenReport stDocName, acPreview, , "ID=" & Me!Liste0

Exit_Befehl9_Click:
Exit Sub

Err_Befehl9_Click:
MsgBox Err.Description
Resume Exit_Befehl9_Click

End Sub

muss ich nicht noch das Listenfeld irgendwie mit dem Button verknüpfen? Oder wie bekommt der sozusagen die Information welcher Eintrag gerade ausgewählt ist?

Im Anhang ist noch einmal die aktuelle Version.

Vielen Dank :D

Anne Berg
15.02.2008, 14:50
Hallo,

Me!Liste0 enthält den ausgewählten Eintrag - sofern einer ausgewählt wurde - entsprechend der Angabe in "gebundene Spalte". In deinem Fall ist das die Satz-ID. In meinem Test hat das hervorragend geklappt. Was passiert denn bei dir?

Nachtrag:
Wenn du den Button umbenennst, musst du natürlich auch die Ereignisprozedur anpassen!

...gleiches gilt für das Listenfeld! :rolleyes:

marius6d
15.02.2008, 17:14
ja es tut sich eben gar nichts, keine Fehlermeldung einfach nichts :S

Arne Dieckmann
15.02.2008, 17:22
Was Anne meinte: Du hast den Button umbenannt, deshalb hat er die Ereignisprozedur "verloren". Lege nach Anlegen von Ereignisprozeduren (Klick mich) (http://www.ardiman.de/datenbanken/grundlagen/vba.html#SEC1) eine Ereignisprozedur für den Button ("Open" als Name würde ich übrgens nicht empfehlen) und dessen Ereignis "Beim Klicken" an, kopiere den alten Code zwischen Sub .. und End Sub und füge ihn bei der neuen Prozedur ein.

marius6d
15.02.2008, 17:30
ahh! endlich funktionert es, vielen Dank euch beiden. Werde wohl im Verlauf der nächsten Wochen noch mer Fragen haben, ist schliesslich für meine Diplomarbeit!

Ich wünsche euch ein schönes Wochenende!

Gruss Marius6d