Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Aktuellen Datensatz aus Formular in Bericht drucken

Begonnen von dx3, Februar 02, 2015, 14:21:36

⏪ vorheriges - nächstes ⏩

dx3

Hallo!

Ich habe ein Problem und würde mich sehr über eure Hilfe freuen!
Ich habe eine Auswahlabfrage erstellt und ein Formular welches auf die Auswahlabfrage zugreift. Im Formular kann ich zwischen den einzelnen Datensätze "vor und zurück" springen. Jetzt möchte ich allerdings den aktuell angezeigten Datensatz im Formular an einen Bericht übergeben. Das Problem ist, das die Auswahlabfrage bzw das Formular keine ID als Feld hat. Ich habe schonmal gesucht und das gefunden:

Private Sub Befehl1337_Click()
On Error GoTo Err_Befehl1337_Click

Dim stDocName As String
Dim LinkCriteria As String

stDocName = "Berichtname"
LinkCriteria = "[Nummer] = " & Me.[Nummer]
DoCmd.OpenReport stDocName, acPreview, , LinkCriteria

Exit_Befehl1337_Click:
    Exit Sub

Err_Befehl1337_Click:
    MsgBox Err.Description
    Resume Exit_Befehl16_Click
   
End Sub


Ich kann allerdings "LinkCriteria = "[Nummer] = " & Me.[Nummer]" nicht korrekt ausfüllen, da ich in der Auswahlabfrage gar keine eindeutige ID habe.

Gibt es einen Befehl der einfach den im Formular angezeigten Datensatz an den Bericht übergibt?

Würde mich sehr über eure Hilfe freuen!

Grüße

MzKlMu

Hallo,
ein eindeutiges Feld ist zwingend notwendig.
In einer Datenbanktabelle sollte es niemals kein eindeutiges Feld geben. Das halte ich für eine absolute Erfordernis. Jede Tabelle benötigt einen Primärschlüssel.
Ich verstehe ohnehin nicht, wie man eine Datenbank ohne Schlüsselfelder haben kann. Eine Datenbank ist eine Sammlung von Tabellen die untereinander in Beziehung stehen. Und diese Beziehungen laufen über Schlüsselfelder.
Primärschlüssel=eindeutig
Fremdschlüssel mit Duplikaten.

Wenn Du keinen PS hast, füge einen Autowert ein und mache diesen zum PS.
Gruß Klaus

dx3

Hallo!

Vielen Dank für die schnelle Antwort!
Ich hab den Primärschlüssel der Auswahlabfrage hinzugefügt. Allerdings bekomme ich immer noch nicht das gewünschte Ergebnis.


LinkCriteria = "[Nummer] = " & Me.[Nummer]
DoCmd.OpenReport stDocName, acPreview, , LinkCriteria


Wenn ich meinen Primärschlüssel anstelle von [Nummer] einfüge kommt der Fehler:
Fehler beim Kompilieren:
Unzulässige Verwendung des Schlüsselworts Me


Hätte jemand einen Tipp für mich?

danke !

MzKlMu

Hallo,
wie heißt der Primärschlüssel in der Tabelle und wie heißt das Formularfeld das den PS im Formular anzeigt. Diese beiden Namen musst Du verwenden.
Und den Datentyp des Primärschlüssels müsste man auch wissen.
Gruß Klaus

dx3

Hallo,


also der Primärschlüssel heißt MaschinenID, Zahl Long Intger.
Das Formular heißt "00_Alle_Maschinen"
Der Bericht heißt "00_Alle_Maschinen"
Das Formularfeld heißt ID.

Würde mich sehr freuen wenn das noch klappt!

Grüße

database

Hallo,

versuch mal:

Private Sub Befehl1337_Click()
ON Error GOTO Err_Befehl1337_Click

Dim stDocName AS String
Dim LinkCriteria AS String

stDocName = "00_Alle_Maschinen"
LinkCriteria = "[MaschinenID] = " & Me.[ID]
DoCmd.OpenReport stDocName, acPreview, , LinkCriteria

Exit_Befehl1337_Click:
    Exit Sub

Err_Befehl1337_Click:
    MsgBox Err.Description
    Resume Exit_Befehl16_Click
   
END Sub


HTH

dx3

Hey,


es kommt die Fehlermeldung: Objekt unterstützt diese Eigenschaft oder Methode nicht


Irgendwelche Ideen?

Grüße

MzKlMu

Hallo,
bitte kopiere den kompletten Code exakt so wie Du diesen verwendest hier rein. Kopieren, nicht abschreiben. Wie sonst soll man die Richtigkeit beurteilen ?

Heißt das Feld auf dem Formular wirklich nur ID wenn das Tabellenfeld MaschinenID heißt ?
Scheint mir irgendwie unwahrscheinlich. Das müsstest Du ja umbenannt haben.
Gruß Klaus

dx3

Hey,

ja ich hab das Formularfeld nachträglich per Hand angelegt. Wenn ich MaschinenID eintrage kommt auch der Fehler: "Methode oder Datenobjekt nicht gefunden"


Private Sub Befehl478_Click()
On Error GoTo Err_Befehl478_Click

Dim stDocName As String
Dim LinkCriteria As String
stDocName = "00_Gesamt_Datensatz"
LinkCriteria = "MaschinenID = " & Me.ID
DoCmd.OpenReport stDocName, acPreview, , LinkCriteria

Exit_Befehl478_Click:
    Exit Sub

Err_Befehl478_Click:
    MsgBox Err.Description
    Resume Exit_Befehl478_Click
   
End Sub




Danke für eure Hilfe!

dx3

Hallo,


hab gerade einen anderen Ansatz gefunden:



DoCmd.OpenReport ReportName:="Bericht_Gesamt_Datensatz", view:=acViewPreview, WhereCondition:="MaschinenID = forms!00_Gesamt_Datensatz!MaschinenID"


Hier kommt der Fehler: Synatcfehler in Abfrageausdruck: MaschinenID = forms!00_Gesamt_Datensatz!MaschinenID

Habt ihr Ideen?

Grüße

MzKlMu

Hallo,
das ist kein anderer Ansatz, das ist das Gleiche, nur anders geschrieben. Und das Me ist sonst nix als der Formularbezug (forms!00_Gesamt....) in Kurzform.
Es gibt immer noch Zweifel, wie das Formularfeld heißt das die MaschinenID im Formular anzeigt. Wenn Du es nachträglich angelegt hast, musst Du es umbenannt haben. Neue Felder erhalten entweder den Namen Text... oder der Steuerelementinhalt wird als Name verwendet.
Zeige mal ein Bild der Eigenschaften wo Name und Steuerelementinhalt zu sehen ist.
Gruß Klaus

dx3

Hallo,

ich habs gelöst:

DoCmd.OpenReport ReportName:="Bericht_Gesamt_Datensatz", view:=acViewPreview, WhereCondition:="[MaschinenID]=[Forms]![00_Gesamt_Datensatz]![MaschinenID]"


So tut es !

Danke für eure Hilfe!

Grüße

MzKlMu

Hallo,
also heißt das Feld doch nicht ID, sondern MaschinenID. Hatte ich ja gleich vermutet, daher die intensive Nachfrage. Und dann funktioniert das auch:
stDocName = "00_Gesamt_Datensatz"
LinkCriteria = "MaschinenID = " & Me.MaschinenID
DoCmd.OpenReport stDocName, acPreview, , LinkCriteria


Der von Dir gezeigte Code ist nur eine andere Schreibweise. Und Me ist das Gleiche wie [Forms]![00_Gesamt_Datensatz]
Gruß Klaus