PDA

Vollständige Version anzeigen : Formular auf Register


alfini
24.04.2011, 18:47
Hallo Forum,

ich habe ein Register erstellt.
Das Gegister heißt RegisterStr5, die Seite darauf S_Stoerung.
Auf dieser Seite ist das Formular.
Auf der Registerseite ist ein Button für einen Bericht.
Nun möchte ich das Datum eingrenzen.
Dazu habe ich auf der Registerseite S_Stoerung ein ungebundenes Textfeld angelegt.
Ich habe folgendes versucht aber keinen Erfolg!
forms!RegisterStr5!S_Stoerung!frmStoerung!Textfeld
Für eure Hilfe bedanke ich mich im voraus.
Gruß alfini

ebs17
24.04.2011, 20:07
Das Register spielt bei der Referenzierung keine Rolle, wohl aber das Hauptformular, auf dem das Register liegt:
Forms!Hauptformularname!frmStoerung.Form!Textfeld

alfini
25.04.2011, 10:27
Hallo ebs17,

leider funktioniert es nicht.
Ich habe alle möglichen Varianten ausprobiert.
Jedes mal kommt die Meldung Parameter eingeben.
Gebe ich dann ein datum ein so wird der Bericht mit dem Datum geöffnet.
Für deine Mühe bedanke ich mich im voraus.
Gruß alfini

Lanz Rudolf
25.04.2011, 10:44
Hallo
ist die DatenHerkunft des HuptFormular oder/und des Register (Bericht).
eine Abfrage ? (SQL)
wie sehen die aus ?
Wenn Ja kannst Du den SQL-code dieser Abfragen Zeigen ?

ebs17
25.04.2011, 11:16
Ich habe alle möglichen Varianten ausprobiert.
Wenn Du ALLES ausprobiert hast, dürfte es müßig sein, Tipps zu geben ...

Ich will es trotzdem noch einmal versuchen. Wenn es um das gefilterte Öffnen eines Berichtes geht, etwa ...
DoCmd.OpenReport "NameBericht", acViewNormal, , _
"Datumsfeld = " & Format(Me!txtDatum, "\#yyyy\-mm\-dd\#")
Wo Du den Bezug zum Textfeld hernimmst, solltest Du selber wissen. Der obige Beitrag von mir sollte dazu einen Ansatz liefern.

alfini
25.04.2011, 14:33
Hallo Helfer,

ich beschreibe mal meine Vorgehensweise.
1. zuerst habe ich einzelne Formulare für die Tabellen angelegt.
2. ein neues leeres Formular erstellt.
3. Darauf ein Registersteuerelement mit 6 Registern.
4. auf den einzelnen Registerseiten dann die Formulare gelegt.
5. somit habe ich ein Formular mit allen Formularen die über die Registerblätter angezeigt werden können.
6. auf der Registerseite, benannt S_Stoerung, ist das Formular frmStoerung.
7. neben dem Formular ist ein Button und ein ungebundenes Textfeld, für die Datumseischränkung, mit dem man einen Bericht startet.
8. der Bericht hat eine Abfrage als Grundlage.
9. in den Kriterien der Abfrage habe ich nun die Einschränkungen für das Datum erstellt nach euren Vorgaben.
Leider kommt immer die Meldung Parameter eingeben.
Nach Eingabe eines Datums wird der Bericht mit den Datum angezeigt.
Für eure Mühe bedanke ich mich im voraus.
Gruß alfini

Lanz Rudolf
25.04.2011, 15:34
Hallo
Abfrage habe ich nun die Einschränkungen für das Datum erstellt nach euren Vorgaben.
Zeige Doch die Abfrag(als SQL-Cod)
oben Links auf Ansich und SQL Wählen
s. Bild
• anders beschrieben man geht in eine Abfrage Entwurfsansicht und wählt da oben Links unter Ansicht die SQL-Ansicht
jetzt kann man den SQL-Befehl mit Copy&Paste in den VBA-Code Kopieren

den Code in zwischen ablage Kopieren
und hierher kopieren ;)

• andere Möglichkeit
man Öffnen Direktfenster (Stgr+G / Ctrl+G) und gibt im Direktfenster folgenden Befehl ein
?CurrentDB.QueryDefs("AbfDeine").SQL
dann bekommt man auch den SQL-Befehl dieser Abfrage,
jetzt geht es mit Copy&Paste etc. ..weiter wie bei Möglichkeit1

alfini
25.04.2011, 16:20
Hallo Lanz Rudolf,

hier die Abfrage.


SELECT tblStoerung.sto_id, tblStoerung.sto_Datum, tblAnlageteil.anlt_bezeichnung, tblSchicht.sch_bezeichnung, tblStoerung.sto_bezeichnung, tblStoerung.sto_zeit
FROM tblAnlageteil INNER JOIN (tblSchicht INNER JOIN tblStoerung ON tblSchicht.sch_id = tblStoerung.sch_id_f) ON tblAnlageteil.anlt_id = tblStoerung.anlt_id_f
WHERE (((tblStoerung.sto_Datum)=[form]![frmHauptformular]![frmStoerung].[form]![stor_Datum]));


Gruß alfini

ebs17
25.04.2011, 17:09
7. neben dem Formular ist ein Button und ein ungebundenes Textfeld
Für eine richtige Parameterübergabe solltest Du Dich dafür interessieren, in welchem, nicht neben welchem Formular das Textfeld liegt.
... =[form]![frmHauptformular] ...
An der Stelle Forms oder Formulare (Mehrzahl!).

Lanz Rudolf
25.04.2011, 17:42
Hallo
das ganze jetzt noch schon Formatiert : ;)
SELECT tblStoerung.sto_id ,
tblStoerung.sto_Datum ,
tblAnlageteil.anlt_bezeichnung,
tblSchicht.sch_bezeichnung ,
tblStoerung.sto_bezeichnung ,
tblStoerung.sto_zeit
FROM tblAnlageteil
INNER JOIN (tblSchicht
INNER JOIN tblStoerung
ON tblSchicht.sch_id = tblStoerung.sch_id_f)
ON tblAnlageteil.anlt_id = tblStoerung.anlt_id_f
WHERE (
(
(
tblStoerung.sto_Datum
)
=[form]![frmHauptformular]![frmStoerung].[form]![stor_Datum]
)
);

Lanz Rudolf
25.04.2011, 17:53
Hallo
evtl schreibst Du in einem allgemeinen Modul ein kleine Funktion die so auaehen könnte:
Public Function DausF() As variant
DausF =Format$([form]![frmHauptformular]![frmStoerung].[form]![stor_Datum],"\#yyyy\-mm\-dd\#")
End Function
und jetzt schreibst Du anstelle von
=[form]![frmHauptformular]![frmStoerung].[form]![stor_Datum]
= DausF()

evetl. musst du noch [form]! durch Forms! ersetzen
ach das hat Eberhart schon gesagt :)

alfini
25.04.2011, 18:49
Hallo Helfer,

ich habe kein Resultat erziehlt.
Das Problem habe ich durch ein Auswahlformular gelöst.
Vielen dank für eure Hilfe
Gruß alfini

ebs17
25.04.2011, 18:53
"Kein Resultat - Problem gelöst": Das klingt logisch ...