Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular aus Bericht öffnen

Begonnen von Spedi05, März 26, 2022, 21:18:29

⏪ vorheriges - nächstes ⏩

Spedi05

Hallo zusammen

möchte ein Formular aus Bericht öffnen.
Im Bericht und im Formular befinden sich jeweils ein Textfeld ( 2022-0011 ).
Habe bereits mit u.g. Code veruscht leider erfolgslos

Versuch 1 :

DoCmd.OpenForm "Rechnungsvorlage", WhereCondition:="Rech_nr_2 '" = Me!Rech_nr_2 '"

Versuch 2:

DoCmd.OpenForm "Rechnungsvorlage", WhereCondition:="Rech_nr_2='" & Me!Rech_nr_2 & "'"

Was mache ich falsch ?

Bitte um Hilfe

  •  

MzKlMu

Hallo,
ein Bericht der in der Seitenansicht gezeigt wird kennt keine Ereignisse, Dein Vorhaben ist also nicht möglich.
Du kannst den Bericht allenfalls in der Berichtsansicht öffnen, welche aber dann zum Drucken nicht geeignet ist.

Warum willst Du ein Formular aus einem Bericht öffnen ?
Nomalerweise macht man das nur umgekehrt.
Gruß
Klaus
  •  

Spedi05

Hallo Klaus,

ich möchte das auch aus dem Berichansicht öffnen und nicht aus der Seiteansicht.

Wie ist der richtige Cide
  •  

DF6GL

Hallo,

bei der Berichtsansicht


Erstelle für das Feld, das die Rechnungsnummer (Rech_nr_2) anzeigt, die Klick-Ereignisprozedur:


ZitatSub Rech_nr_2_Dbl_Click(Cancel As Integer)

DoCmd.OpenForm "Rechnungsvorlage", , ,"Rech_nr_2='" & Me!Rech_nr_2 & "'"   'Falls das Tabellenfeld den Datentyp TEXT hat

End Sub

Spedi05

Hallo Klaus,

vielen Dank für den Code.

Leider kommme ich nicht weiter

Wenn ich auf das Feld klicke, kommt die Meldung "Parameterwert eingeben"

  •  

PhilS

Zitat von: Spedi05 am März 27, 2022, 12:22:06Wenn ich auf das Feld klicke, kommt die Meldung "Parameterwert eingeben"
Dann heißt die entsprechende Spalte in der Datenherkunft deines Formulars Rechnungsvorlage anders. Wenn du den korrekten Namen in der Where-Condition einfügst, wird diese Parameterabfrage nicht mehr erscheinen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •  

MzKlMu

Hallo,
es wäre sinnvoll, wenn Du den kompletten Code zeigst der zur Meldung führt. Wie sonst stellst Du Dir Hilfe vor ?
Außerdem wäre es wichtig, welchen Datentyp (in der Tabelle) das Feld Rech_nr_2 hat.

PS:
Der Code in #3 war nicht von mir, sondern von Franz

PS2:
Mir ist gerade aufgefallen, dass Du in keinem einzigen Deiner Themen eine abschließende Antwort (Feedback) gibst.
Da wäre noch Potential.
Gruß
Klaus
  •  

Spedi05

Hallo zusammen

ich habe nochmal geprüft, das Feldname im Berichtansicht sowie Formular ist richtig

Beide sind Textfelder siehe Bild 1 + 2

Was muss ich anders machen ?
  •  

PhilS

Zitat von: Spedi05 am März 28, 2022, 20:09:07ich habe nochmal geprüft, das Feldname im Berichtansicht sowie Formular ist richtig
Es geht nicht um den Steuerelement-Namen im Formular oder Bericht, sondern um den Spaltennamen in der Datenherkunft (Abfrage oder Tabelle) des Formulars. Dieser ist in deinem Screenshot für das Formular nicht zu sehen. Im Gegenteil, dass du für das Steuerelement Rech_nr_2 dort einen Ausdruck anstelle eines Spaltennamens eingetragen hast, deutet sehr darauf hin, dass es diese Spalte in der Datenherkunft nicht gibt.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •  

Spedi05

Hallo,

ich habe im Berichtansicht sowie im Formular noch ein weiteres Feld "LdfReNr" hinzugefügt.
Das Formular wird anhand der "Tab_Rechn" erzeugt und der Bericht aus der Abfrage "Rechnungsliste"
Die Daten für die Abfrage kommen aus der Tabelle "Tab_Rechn"

Das Feld LdfReNr ist ein Zahlenfeld

Habe jetzt den Code :
DoCmd.OpenForm "Rechnungsvorlage", WhereCondition:="LfdReNr=" & Me!LfdReNr
eingegeben, aber es öffnet sich ein leeres Formular

  •  

PhilS

Zitat von: Spedi05 am März 29, 2022, 21:32:57ich habe im Berichtansicht sowie im Formular noch ein weiteres Feld "LdfReNr" hinzugefügt.
Das Formular wird anhand der "Tab_Rechn" erzeugt [...]
Wiederholung: Die Felder in dem Formular sind in diesem Kontext nicht relevant!

Wenn "Tab_Rechn" die Datenherkunft des Formulars ist, dann kannst du nur Spalten aus dieser Tabelle in der Where-Condition verwenden.

Hier dieselbe Aussage in Code formuliert:
DoCmd.OpenForm "Rechnungsvorlage", WhereCondition:="EineSpalteAusTabelle_Tab_Rechn=" & Me!LfdReNr
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •  

DF6GL

Hallo,


und dabei gilt es zu beachten, welchen DATENTYP das TABELLENfeld aufweist.

Im gezeigten Beispiel ist EineSpalteAusTabelle_Tab_Rechn als vom Datentyp Ganzahl (Long) angenommen.

Spedi05

Hallo

egal was ich mache, komme ich nicht weiter.
Ich habe die Datenbank jetzt hochgeladen, vlt. könnt Ihr mir jetzt helfen.

Vielen lieben Dank im Voraus
  •  

PhilS

Zitat von: Spedi05 am März 30, 2022, 21:42:15egal was ich mache, komme ich nicht weiter.
Verständlich...

Ziehe das Feld Rech_Nr zusätzlich in den Bericht und mach es unsichtbar.
Dann ändere den Code im Bericht zu:
DoCmd.OpenForm "Rechnungsvorlage", , , "Rech_nr= " & Me.Rech_Nr
Dass du dann im Formular Rechnungsvorlage immer noch nicht den gewünschten Datensatz siehst, liegt daran, dass du im "Beim Öffnen"-Ereignis des Formular per Makro zu einem neuen Datensatz springst.

Zwei 3 weitere Hinweise:
1.) Wenn das Feld Rech_Nr eindeutig Datensätze identifizieren soll, dann sollte es auch einen eindeutigen Index in der Tabelle haben.
2.) Wenn du dein Feld Rech_nr_2 unbedingt im Bericht zur Anzeige brauchst, dann ist das so. Aber du solltest dieses Feld nirgends im Code verwenden. Selbst wenn du die Probleme, die wir hier diskutiert haben, sinnvoll behandeln kannst, ist es von der Performance immer noch suboptimal.
3.) Ich rate dir dringend die scheinbar redundanten Felder Rech_Nr, LfdReNr, Rech_Nr_2 und Rech_Datum, Rech_Jahr, Monat wenigstens so zu benennen, dass man ihren Sinn versteht und sie auseinanderhalten kann.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor
  •  

Spedi05

Hallo zusammen,

vielen Dank für eure Hilfe.
Sorry für die Verspätung
  •