PDA

Vollständige Version anzeigen : Formulare funktionieren in Naviformular nicht mehr


DerLothringer
18.06.2012, 09:06
Guten Morgen liebes Forum,

ich habe mehrere Formulare in ein Navigationsformular gezogen um das Ganze etwas übersichtlicher zu gestalten.

Nun funktioniert jedoch ein Formular nicht mehr. Dieses hatte 4 Kombiboxen, in denen man Werte für eine Abfrage auswählen und diese anschließen über einen Button ausführen konnte (Die Abfrage hat sich dann im Formular geöffnet).

Muss ich vielleicht irgendeine Verknüpfung für die Abfrage neu anpassen?
Wenn ja was stimmt nicht?

Altes Abfragekriterium:
Wie Wenn([Formulare]![Konformitätsprüfung]![Kombinationsfeld44]="Alle";"*";[Formulare]![Konformitätsprüfung]![Kombinationsfeld44])


Neues Abfragekriterium:
Wie Wenn([Formulare]![Naviformular]![Kombinationsfeld44]="Alle";"*";[Formulare]![Naviformular]![Kombinationsfeld44])


Muss ich in das Abfragekriterium viell. noch einen Zwischenschrit integrieren?

Danke

Anne Berg
18.06.2012, 09:10
Hallo,

wenn ich das richtig sehe, ist dein Formular nun zu einem Unterformular geworden und die Syntax muss dementsprechend angepasst werden.

Versuche es mal folgendermaßen:Wie Wenn([Formulare]![Naviformular]![Konformitätsprüfung].Formular![Kombinationsfeld44]="Alle";"*";[Formulare]![Naviformular]![Konformitätsprüfung].Formular![Kombinationsfeld44])

DerLothringer
18.06.2012, 09:21
Haut leider auch nicht hin, wenn ich im Naviformular auf den entsprechenenden Reiter klicke kommen immer noch die Abfrageboxen für die Parameter.

Das mit dem Unterformular schein mir aber irgendwie logisch, vielleicht ist nur die Syntax noch nicht ganz richtig.

Wie nimmt man denn Bezug auf ein Unterformular? Muss da ein "." ins Abfragekriterium?


Grüße

Atrus2711
18.06.2012, 09:36
Hi,

m.E. ist das Problem, dass das Formular im Navi-Ufo wechselt. Sprich: in dem Moment, wo du im Naviform auf ein anderes Register umschaltest, zeigt das Ufo auf ein anderes Formular, nämlich das des neuen Registertabs. Und das alte ist "weg".

Du könntest versuchen, die Übergabe der Filterwerte über TempVars zu steuern. Lass die Kombifeldwerte AfterUpdate in TempVars eintragen, und greife diese TempVars im Ergebnisformular abgreifen.

DerLothringer
18.06.2012, 09:44
In meinem Naviformular sind 2 Tabs, das Formular im ersten Tab funktioniert problemlos. Der 2 Tab ist ein Formular in dem Werte für eine Parameterabfrage per Kombibox ausgewählt werden können und dann auf Knopfdruck im Form dargestellt werden.

Die Parameterabfragefenster kommen erst wenn man auf den Tab für das zweite Formular klickt.

Für die Abfrage wechselt ja nichts, die Werte werden immer nur aus dem zweiten Formular bezogen, das erste Formular dient nur dazu eine Tabelle zu füllen.

Ich "glaube" man müsste nur den Verweis in der Abfrage auf das Naviformular und die Felder im 2 Tab anpassen. Die Abfrage soll ihre Werte ja immer daraus beziehen.

Hoffe das war jetzt nicht zu umständlich.

Atrus2711
18.06.2012, 09:56
Hm,
ich habe gerade kein 2010 zur Hand, aber wenn ich an 2007 denke, war der "Pfad" zum Durchgriff auf Ufos so:

Forms!Hauptform!UfocontrolImHauptform.Form!ControlImUfo
oder, wenn das Hauptform das aktuelle Form ist:
Me!UfocontrolImHauptform.Form!ControlImUfo.
Dabei ist

UfocontrolImHauptform = Name des Gucklochs für das Ufo im Hauptform (nicht zu verwechseln mit dem Namen des dort angezeigten Forms!)
ControlImUfo = Name des Controls im Ufo, auf das du greifen willst (iirc also ein Kontrollkästchen)

DerLothringer
18.06.2012, 09:56
Hab das jetzt in der Abfrage auf

Wie Wenn([Formulare]![Navigationsformular]![Kombinationsfeld44]="Alle";"*";[Formulare]![Navigationsformular]![Kombinationsfeld44])

geändert.

Jetzt kann ich den Tag im Naviformular öffnen und auch die Werte in den Kombiboxen auswählen, wenn ich allerdings auch meinen Button drücke der dann die Werte im Formular anzeigen soll passiert nichts.

Hab mich hierauf bezogen Punkt 4.2:

http://donkarl.com/FAQ/FAQ4Formulare.htm

DerLothringer
18.06.2012, 10:00
Ist das Hauptformular dann das Naviform?

Was meinst du denn mit Guckloch?

Atrus2711
18.06.2012, 10:00
Hauptform = Naviform,
Guckloch = "Rechteck" im Hauptform, in dem das Ufo "durchguckt".

DerLothringer
18.06.2012, 10:23
Habs jetzt so versucht:

Wie Wenn([Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44]="Alle";"*";[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44])

haut aber auch noch nicht ganz hin, ich bekomme bei öffnen des entsprechenden Tabs immer noch die Parameterabfragefenster.

Mir is der Name des "UfocontrolImHauptform" noch nicht so bewusst. Welcher soll das denn sein? Muss ich in deinem Bezug noch was ersetzen?


Danke für eure fleißige Hilfe...

Atrus2711
18.06.2012, 10:34
Das Ufo ist für das Hauptform genauso ein Control wie ein Textfeld oder eine Linie. Und wie jedes Control hat auch das Ufo-Control im Hauptform eine Eigenschaft "Name", die hier gemeint ist.

Welches Formular das Ufo-Control anzeigt, ist eine ganz andere Sache; das regelt die Eigenschaft Steuerelementinhalt. Und die ist bei Naviformularen noch dazu abhängig vom gewählten Register.

Anne Berg
18.06.2012, 10:47
Hallo,

es ist doch so, wie Martin schon sagte, es gibt nur ein Unterformular und der Inhalt wird beim Wechseln der Registerkarte ausgetauscht.
Du kannst also nicht auf Ufo-2 zugreifen, wenn Ufo-1 aktiv ist und umgekehrt.

DerLothringer
18.06.2012, 10:52
Das hab ich jetzt so halbwegs verstanden, aber wenn ich dann auf den Tab von UFO 2 klicke, in dem auch das Abfrageformular ist, werden dann nicht auch die Werte aus diesem für die Abfrage verwendet? Wenn ich den Button für Abfragedaten aktualisieren klicke kommen ja immer noch die PArameterboxen der Abfrage. Ich will einfach nur das er die aus den Kombiboxen bezieht.

Gibt es eine Möglichkeit die Abfrage weiterhin über das Abfrageformular im Naviformular zu öffnen?

Atrus2711
18.06.2012, 10:54
Fragen die Parameter denn nach Ersatzwerten für die Kombifelder oder nach Ersatzwerten für die Tabellenfelder?

Anne Berg
18.06.2012, 11:00
Wo befinden sich denn die Kombifelder? Lege sie doch einfach ins Hauptformular.

DerLothringer
18.06.2012, 11:07
Die Boxen fragen nach Ersatzwerten für die Kombifelder.

Die Kombifelder müssen im 2 Unterformular (2 Tab im Naviformular) liegen und können nicht direkt ins Haupt- bzw. Naviformular.

Anne Berg
18.06.2012, 11:19
im 2 UnterformularWas ist das für eine Sprache - "im zwei Unterformular"?! Das liest sich echt schauderhaft. Ist es dir wirklich zu mühsam einen Punkt zu setzen?

Beschreibe doch bitte noch einmal den Aufbau des Formulars ganz genau. Was befindet sich im ersten und was im zweiten Unterformular? Und wo befindet sich besagter Button zum Aktualisieren?

DerLothringer
18.06.2012, 11:34
Verzeih bitte den vergessenen Punkt. Ich bin eigentlich auch ein Freund vernünftiger Rechtschreibung, aber ab und an vergesse auch ich was beim Tippen.

Das Ganze sieht wie folgt aus:

Ich habe zwei Formulare. Das erste Formular füllt eine Tabelle mit Daten, das zweite Formular hat im Kopf 4 Kombiboxen. Aus diesen Kombiboxen wählt man Werte aus die als Parameter an eine Abfrage übergeben werden. Nachdem man alle Werte in den Kombiboxen ausgewählt hat klickt man auf einen "OK-Button" (Dieser ist auch im zweiten Formular direkt neben den Kombiboxen)

Ich möchte nun beide Formulare in ein Naviformular integrieren um jeweils von einem Reiter/Tab zum nächsten zu klicken.

Im zweiten Formular wird übrigens die Abfrage geöffnet wenn man auf den Button geklickt hat. (Direkt im Formular und nicht in einem Unterformular oder Ähnlichem)

Dafür habe ich einfach einen Befehl auf den OK-Button gelegt.
(Me.Requery)


Sieht jemand eine Möglichkeit beide Formulare in einem Naviformular auszuführen so das die Parameterübergabe funktioniert wie vorher? Beide Formulare einzeln laufen ja tadellos.


Hoffe das war jetzt alles verständlich genug.


Gruß

Anne Berg
18.06.2012, 11:46
Das zweite Formular hat also die Kombifelder und ist darüberhinaus an eine Abfrage gebunden, die durch diese Kombifelder gefiltert werden soll und das Ergebnis wird direkt im zweiten Formular angezeigt?

Dann verstehe ich nicht warum die Kombifelder sich nicht so ansprechen lassen sollten:[Forms]![Naviformular]![NaviUnterformular].Form![Kombinationsfeld44]vorausgesetzt, die Bezeichnungen stimmen alle.

DerLothringer
18.06.2012, 11:50
Was muss ich denn hier eventuell ersetzen?

Das NaviUnterformular vielleicht mit dem Namen des auf dem Tab steht bzw. dem Namen des zweiten Formulars?

Der Zweite Tab, bzw. Das Formular das ich ins NAviform gezogen habe heißt bei mir Konformitätsprüfung...

maikek
18.06.2012, 11:59
Moin,
vielleicht hilft dies ja weiter (mit Bild ;) ):
DBWiki Verweis auf Control im UFO (http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Verweis_auf_Steuerelement_im_Unterformular)
maike

DerLothringer
18.06.2012, 12:00
So steht es jetzt in der Kriterienzeile meiner Abfrage:

Wie Wenn([Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44]="Alle";"*";[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44])

Wenn ich allerdings im Navigationsformular auf den zweiten Tab klicke öffnen sich immer noch die Parameterabfragefenster.

Sieht vielleicht jemand einen Fehler?

Anne Berg
18.06.2012, 12:09
Wird denn exakt nach dem Ausdruck gefragt, den du dort angegeben hast?

Lass doch das Wie und Wenn probeweise einfach mal weg und trag lediglich den Formularfeldbezug dort ein:=[Forms]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44]

Ich habe das inzwischen mal getestet und im Prinzip sollte das so funktionieren.

Anne Berg
18.06.2012, 12:15
Was muss ich denn hier eventuell ersetzen?

Das NaviUnterformular vielleicht mit dem Namen des auf dem Tab steht bzw. dem Namen des zweiten Formulars?
im Normalfall gar nichts, denn die Bezeichnungen Navigationsformular und Navigationsunterformular werden von Access standardmäßig vergeben.
Den Namen des Navigationsformulars findest du im Navigationsfenster und den Namen des Unterformularsteuerelements findest du in der Entwurfsansicht des Navigationsformulars, wenn du das Unterformularsteuerelement einmal anklickst.

DerLothringer
18.06.2012, 12:15
Wenn ich das so wie von dir geschrieben in die Kriterienzeile eingebe bekomme ich die Meldung "Parameterwert eingeben"

mit dem Kommentar "=[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44]"

direkt über der Eingabezeile. Hast du eine Ahnung woran das liegen kann?

Anne Berg
18.06.2012, 12:19
Merkwürdig ist, dass bei dir scheinbar nicht "Form" in "Formulare" geändert wird.
Ich habe extra "Form" geschrieben, damit man sieht ob Access an der Stelle mitdenkt. ;)

Hast du die Bezeichnungen überprüft, wie oben beschrieben?

Wo hast du das denn überhaupt hingeschrieben? Zeig doch bitte mal den SQL-Code der Abfrage.

DerLothringer
18.06.2012, 12:22
Hier der SQL Code der Abfrage, letzter Stand wie von dir gefordert ohne Wie und Wenn:

SELECT Tabelle1.ID, Tabelle1.[Datenfeld-Nr], Tabelle1.Anforderung, Tabelle1.Land, Tabelle1.Vorschriftenbereich, Tabelle1.Fahrzeugklasse, Tabelle1.Fahrzeug, Tabelle1.Bild, Tabelle1.[Ist-Zustand]
FROM Tabelle1
WHERE (((Tabelle1.Land)=[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44]) AND ((Tabelle1.Vorschriftenbereich)=[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld50]) AND ((Tabelle1.Fahrzeugklasse)=[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld52]) AND ((Tabelle1.Fahrzeug)=[Formulare]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld48]));


für Forms hab ich auch schonmal Formulare geschrieben, aber ob Englisch oder Deutsch spielt doch keine Rolle, oder?!

Atrus2711
18.06.2012, 12:22
Oder lad mal eine anonymisierte Version hoch. Ich hab zwar derzeit kein 2010 zur Hand, aber vielleich andere. Und zuhause hab ich 2010 und kann spätestens da gucken.

DerLothringer
18.06.2012, 12:28
Ich hab noch eine Idee woran es liegen kann, teste das gleich mal und berichte. Wenn es nicht geht bau ich mal eine verschleierte Version zusammen.

Jetzt kann ich es immerhin gerade ohne Probleme öffnen, nur bekomme ich keine Abfrageergebnisse was wohl aber daran liegt das meine "Wies" "&" "Wenns" und Wildcards weg sind...

Danke für eure super Hilfe!!!

Anne Berg
18.06.2012, 12:39
Ich hab noch eine Idee...und die wäre?

Auch fehlen noch Antworten auf meine Fragen.
Hast du die Bezeichnungen von Haupt- und Unterformular überprüft und stimmen sie mit den Standardbezeichnungen überein?
Wird bei dir im Abfrageentwurf tatsächlich "Form" nicht in "Formular" geändert?aber ob Englisch oder Deutsch spielt doch keine Rolle, oder?!Nein, nicht ganz, im SQL-Code solltest du stets die englische Syntax verwenden.

DerLothringer
18.06.2012, 12:39
Problem gelöst! Es geht. Ich hab alles mal in SQL geschrieben weil es in den Kriterienzeilen zu unübersichtlich war.

Das Problem lag daran das Form und Formulare nicht immer einheitlich in einer Sprache geschrieben war. Dies habe ich jetzt behoben.

Aber wie es so immer ist, verschwindet ein Problem taucht das nächste auf.
;-)

Da ich im ersten Unterformular festgelegt habe das alle Ausfüllfelder Pflichtfelder sind kann man nicht auf den zweiten Tab springen bevor nicht alles ausgefüllt ist. Das könnte ich aber noch verkraften wenn man das nicht umgehen kann.

Danke vielmals für eure tolle Hilfe!

Die Überlegungen zum Aufbau der Datenbank ändern sich jedoch ziemlich oft im Entstehungsprozess. Ich weiß einfach noch nicht so richtig wohin das Ganze gehen soll.

Wenn jemand von euch Lust und Zeit hat sich vielleicht mal anzuhören wie es werden soll und mir ein paar Tipps und Anregungen geben kann wäre das auch toll.

Auf jeden Fall Danke für die super Hilfe, so sollte es in Foren laufen!

DerLothringer
18.06.2012, 12:40
Hallo Anne,

die Namen haben alle übereingestimmt. Es lag nur am zweisprachigen. Das scheint ein Problem für Access zu sein.

DerLothringer
19.06.2012, 07:47
....gespeichert, heute morgen wieder geöffnet und nichts geht mehr. Ich krieg hier die Krise.

In der Kriterienzeile steht jetzt:

[Forms]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44]

Wenn ich das Formular im Unterformular öffne kommt aber immer noch die Meldung "Parameterwert eingeben"

Und dieses mal habe ich alles in SQL in Englisch geschrieben!

Anne Berg
19.06.2012, 08:15
Hallo,

das würde ich mir jetzt doch ganz gern mal selbst ansehen...

DerLothringer
19.06.2012, 08:23
Ich versuch mal eine Musterdatei zu bauen, ich hab noch eine Datenbank extra für sowas. Dauert nur einen Moment.

DerLothringer
19.06.2012, 08:30
Hallo Anne,

dumme Sache! In der Beispieldatenbank die ich gebaut habe funktioniert es, nur kann ich keinen Unterschied zu meiner feststellen! Jetzt muss ich wohl suchen...

Gibts irgendetwas spezielles was ich bei der Spreche beachten muss (Deutsch/Englisch)

DerLothringer
19.06.2012, 08:46
Ein Fehler ist mir noch aufgefallen.

Die Abfrage habe ich über SQL geschrieben

SELECT Tabelle1.ID, Tabelle1.[Datenfeld-Nr], Tabelle1.Anforderung, Tabelle1.Land, Tabelle1.Vorschriftenbereich, Tabelle1.Fahrzeugklasse, Tabelle1.Fahrzeug, Tabelle1.Bild, Tabelle1.[Ist-Zustand]
FROM Tabelle1
WHERE (Tabelle1.Land Like [Forms]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld44])

Wenn ich das Formular aber im Naviformular öffne steht aber in der Parameterabfragebox: "Formulare!Navigationsformular!Navigationsunterformular.Form!Kombinationsfeld44"


Also wird "Forms" ins Deutsche übersetzt, "Form" aber nicht. Kann das die Ursache des Problems sein und wenn ja, wie könnte man das lösen?!

Atrus2711
19.06.2012, 09:03
Ich halte da eher das eckige Einklammern von Form für das Problem...

DerLothringer
19.06.2012, 09:08
Diese eckigen Klammern werden aber automatisch hinzugefügt wenn ich in der Entwurfsansicht speichere

also bei ...Form![Kombinationsfeld44]

->Speichern und zack sieht es so aus:

...[Form]![Kombinationsfeld44]

vielleicht eine andere Schreibweise?

maikek
19.06.2012, 09:42
Moin,
lass mal das Form ganz weg, was passiert dann?
maike

DerLothringer
19.06.2012, 09:50
Es kommt auch eine Box die nach dem Parameterwert fragt, nur das jetzt:"Formulare!Navigationsformular!Navigationsunterformular.Kombinationsfeld44" als Kommentar darunter steht.

Ich versteh es einfach nicht. Gestern ging es ja auch kurzzeitig...

maikek
19.06.2012, 10:04
Ich kenn mich mit den Naviformularen von 2010 nicht aus, aber ...
Anne schrieb, dass die automatisch benannt werden. Jetzt hast du aber 2 UFOs im Naviformular, das zweite wird anders heißen, als das erste, also möglicherweise nicht der Standardname Navigationsunterformular. Guck doch noch mal genau nach, wie der Name des UFO-Controls lautet.
maike

Atrus2711
19.06.2012, 10:07
Das muss deshalb nicht richtig sein. Schreibs mal in der SQL-Ansicht, und lass die eckigen Klammern um Form weg.

DerLothringer
19.06.2012, 10:17
Es taucht nur ein Navigationsunterformular in der Entwurfsansicht auf, egal auf welches ich klicke, die heißen beide so (beide Tabs/Reiter).

Wenn ich das Ganze in SQL schreibe ändert das auch nichts.

in meiner Kleinen Musterdatenbank die ich immer zum probieren nehme funktioniert es ja komischerweise.

Soll ich die vielleicht mal hochladen, damit jeder sieht was genau das Ziel ist?!

maikek
19.06.2012, 10:59
Du schriebst, die Nachfrage nach den Parametern erfolgt bereits beim Aufruf des Unterformulars.
Mag es vielleicht sein, dass da einfach noch keine Werte in den Kombis vorliegen? Ich nutze Formularbezüge in Abfragen nicht, kann man da mit der NZ-Funktion arbeiten? Oder den Kombis selbst einen Standardwert verpassen?
maike

DerLothringer
19.06.2012, 11:07
Die Abfrage der Parameter erfolgt nur weil die Verknüpfung zu den Kombiboxen nicht funktioniert. Wenn diese nämlich funktioniert öffnet sich das Formular leer, dann wählt man die Inhalte aus den Kombifeldern, klickt auf den Button und die Abfrageergebnisse weren angezeigt.

Ich bin mir sicher das es nur an der richtigen Verbindung zu den Kombifeldern im Formular liegt. Wahrscheinlich nur eine Kleinigkeit.

Ich versteh nur nicht warum es in der Musterdatenbank die ich zum spielen nehme geht, in der neuen aber nicht!!!

D.h. es funktioniert wenn man es nur richtig macht. Nur leider finde ich keinen Unterschied zwischen den Einträgen in den Kriterienzeilen der jeweiligen DB. Hier mal bei de zum vergleich

Aus funktionierender DB:
Wie [Forms]![Navigationsformular]![Navigationsunterformular].[Form]![Kombinationsfeld18]

Aus nicht funktionierender DB:
Wie [Formulare]![Navigationsformular]![Navigationsunterformular].[Formular]![Kombinationsfeld44]

(ob Forms oder Formulare macht keinen Unterschied)

Atrus2711
19.06.2012, 11:11
Wie/Like gewechselt?
Namen der Steuerelemente geprüft?

DerLothringer
19.06.2012, 11:19
Like + Forms/Form wurde in SQL verwendet.

Steuerelement heißt immer noch Kombinationsfeld44.

Es treibt mich zur Weissglut das ich nicht den Unterschied zur Musterdatenbank sehe...

DerLothringer
19.06.2012, 11:44
Die Lösung das Problems:

Abreißen und neu machen!

Das schien mir jetzt das vernünftigste zu sein und es hat auch geklappt. Ich hab dieses Mal aber erst die Kriterien in der Abfrage geändert und dann das Naviformular erstellt. So ging es dann auch...

Kriterienzeile so wie von Anne geschrieben hat funktioniert.

Wer weiß schon was für Routinen da im Hintergrund ablaufen...


Danke vielmals für eure Hilfe!