PDA

Vollständige Version anzeigen : Schon wieder UFO aktualisuieren


dancer1970
27.10.2003, 14:33
Hallo,
irgendwie bin ich wohl zu blöd dazu.

Am Einde einer Prozedur möchte ich die Daten in dem Unterformular subdisplay_pkey_v_lfadresse_beh aktualisieren.
Das Unterformular basiert auf einer Pass Through Abfrage und wird in der Prozedur davor verändert.
Mir gelingt es einfach nicht die korrekten Daten anzuzeigen ohne das Formular zu schließen und wieder zu öffnen. wo istder Fehler?


Private Sub button_speichern_Click()

Call update_pkey_behaelter

Me![subdisplay_pkey_v_lfadresse_beh].Requery
'Forms![display_pkey_behaelter].[subdisplay_pkey_v_lfadresse_beh].Requery
'Forms![display_pkey_behaelter].Requery
'Me.subdisplay_pkey_v_lfadresse_beh.Form.Requery

End Sub


Danke Stefan

Nouba
27.10.2003, 14:59
hast Du es schon einmal mit Me![subdisplay_pkey_v_lfadresse_beh].Form.Requery probiert? Eventuell müßte bei einem gebundenen UFo auch noch das HFo requeried werden.

Arne Dieckmann
27.10.2003, 15:23
Auf jeden Fall muss für

subdisplay_pkey_v_lfadresse_beh

der Name des UFo-Steuerelements im HF eingesetzt werden. S. dazu auch "Grundlagen/3.2" (Link in meiner Signatur).

dancer1970
27.10.2003, 16:05
Danke

Habe

Me![subdisplay_pkey_v_lfadresse_beh].Form.Requery

probiert.
Keine Auswirkung
subdisplay_pkey_v_lfadresse_beh

ist Name des UFO Steuerelements und gleichzeitig auch Name des UFo.
Ist das ein Problem?

Das UFO ist ungebunden!

Stefan

Arne Dieckmann
27.10.2003, 16:12
Name und Herkunftsobjekt dürfen übereinstimmen - ich mache das immer so.

Wenn das UFo ungebunden ist - was stellst Du dort dar? Und warum brauchst Du dann ein Requery?

dancer1970
27.10.2003, 16:22
Folgendes.
Im Hauptformular werden Behälterdaten dargestellt.
Die Zuordnung zu einer Adresse erfolgt über eine Nummer und die eigentlichen Adressdaten werden in einem Unterformular dargestellt.
Wenn sich nun die Nummer ändert, müssen sich auch die Adreßdaten ändern.
Da ich ausschließlich mit Pass Through Abfragen auf die Oracle DB arbeite, kann ich nicht wie mit Access Tabellen arbeiten.

Ein andere Lösungsansatz hat auch nicht funktioniert.
http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=106948

Das mit dem Aktualisieren ist irgendwie ein Problem.

Stefan

Arne Dieckmann
27.10.2003, 16:26
Hm. Auch wenn Du mit Oracle arbeitest - könntest Du mal ein rein Access-basiertes Beispiel hier im Forum hochladen? Dazu müsstest Du natürlich einen Teil der Tabellen in einer neuen MDB importieren.

dancer1970
27.10.2003, 19:12
Danke für den einsatz.

Hier mein Versuch das Ganze nachzubilden.
Es wird nicht alles funktionieren und vielleicht liegt das Problem auch genau in den Pass through Abfragen?

Kannst ja schaun...

Stefan

Arne Dieckmann
27.10.2003, 19:39
So ist es natürlich schwierig zu testen. Was mich irritiert:

In der Funktion "update_pkey_behaelter() steht unter anderem:

Call CreateSPT("SQL_SELECT_PKEY_LF_ADRESSE_BEH", "select * from v_mgbkataster_adresse where " & _
"V_M_KEYNR = '" & .V_B_BEH_KEY_MGB & "';", True)


V_M_KEYNR ist in der Tabelle aber ein Zahlenfeld - evtl. sind dann die Hochkommata zuviel:

Call CreateSPT("SQL_SELECT_PKEY_LF_ADRESSE_BEH", "select * from v_mgbkataster_adresse where " & _
"V_M_KEYNR = " & .V_B_BEH_KEY_MGB & ";", True)

Nouba
27.10.2003, 19:43
wenn Du die PT-Abfrage dann noch mit CurrentDB().Execute DeineAbfrage, dbFailOnError statt der komischen OpenQuery-Geschichte ausführst, erhälst Du vielleicht eine brauchbare Fehlermeldung.

dancer1970
28.10.2003, 08:11
Danke für die Antworten. Das mit den Anführungszeichen stimmt, hat aber in meinem Fall nichts geändert.
Das mit Execute funktioniert natürlich nur bei den update SQLs.

Der Teil des Codes sieht jetzt so aus:

CurrentDb().Execute "SQL_UPDATE_PKEY_BEHAELTER", dbFailOnError
Call CreateSPT("SQL_SELECT_PKEY_BEHAELTER", "select * from v_behaelter where v_b_keynr = " & Forms![display_pkey_behaelter]![V_B_KEYNR], True)
Call CreateSPT("SQL_SELECT_PKEY_LF_ADRESSE_BEH", "select * from v_mgbkataster_adresse where " & _
"V_M_KEYNR = " & .V_B_BEH_KEY_MGB & ";", True)
'DoCmd.SetWarnings False
'DoCmd.close acForm, "display_pkey_behaelter"
'DoCmd.OpenQuery "access_select_pkey_behaelter", acNormal, acEdit
'DoCmd.close acQuery, "access_select_pkey_behaelter"
'DoCmd.SetWarnings True
'DoCmd.OpenForm "display_pkey_behaelter", acNormal, acEdit


Das funktionierte vorher und jetzt auch ganz prima.
Mein Problem liegt im Formular in dem Feldchen oben rechts. wenn diese Nummer geändert wird, soll nach dem Drücken des Speicher Buttons die Adresse im UFO aktualisiert werrden.
Die Abfrage SQL_SELECT_PKEY_LF_ADRESSE_BEH liefert auch den korrekten Datensatz, nur wird dieser leider nicht angezeigt.
Erst nach Formular schließen und wieder öffnen.


Private Sub button_speichern_Click()

Call update_pkey_behaelter
Me![subdisplay_pkey_v_lfadresse_beh].Form.Requery
'Me![subdisplay_pkey_v_lfadresse_beh].Requery
'Forms![display_pkey_behaelter].[subdisplay_pkey_v_lfadresse_beh].Requery
'Forms![display_pkey_behaelter].Requery
'Me.subdisplay_pkey_v_lfadresse_beh.Form.Requery

End Sub

dancer1970
29.10.2003, 08:34
weiß denn keine ne Lösung?

Arne Dieckmann
29.10.2003, 08:37
Spiele mal mit der UFo-Eigenschaft "Filter zulassen" rum.

dancer1970
29.10.2003, 08:51
da gibt ja nicht viel Möglichkeit.
Ob ja oder nein --> keine Auswirkung!

Ich verstehe nicht warum der Datensatz der zugrundeliegenden PT Abfrage nicht angezeigt wird.

So wird doch Haupt und Unterformular aktualisiert, oder?


Me![subdisplay_pkey_v_lfadresse_beh].Form![ADR_LF_V_ADR_NAME1].Requery
DoCmd.Requery



Stefan

Arne Dieckmann
29.10.2003, 08:55
So
Me![subdisplay_pkey_v_lfadresse_beh].Form![ADR_LF_V_ADR_NAME1].Requery

wird wohl das Textfeld ADR_LF_V_ADR_NAME1 im UFo neu abgefragt.


Denkbar ist natürlich, dass zum Zeitpunkt des Requerys der Datensatz noch gar nicht in der Tabelle vorhanden ist ...
Musst Du evtl. vorher speichern (ich kenne den Ablauf nicht mehr so genau)?

WMS
29.10.2003, 09:03
.... hast du das ganze mal mit Refresh versucht? :confused:

Me![subdisplay_pkey_v_lfadresse_beh].Form![ADR_LF_V_ADR_NAME1].Refresh

dancer1970
29.10.2003, 11:49
Arne, Du könntest recht haben.
Beim Ausführen des SQls für das Unterformular beziehe ich mich auf den Inhalt des Feldes V_B_BEH_KEY_MGB.
Im Formular bekomme ich den Wert angezeigt, in der Tabelle steht noch der alte vorherige Wert.

Mit

Me![V_B_BEH_KEY_MGB].Requery
Me![subdisplay_pkey_v_lfadresse_beh].Form.Requery

funktioniert es nicht.

Wie lautet denn der Befehl für speichern (in Tabelle schreiben) bzw. einen Satz vor und wieder zurück?

WMS
29.10.2003, 11:59
ich möcht mich nicht aufdrängen, aber da wäre doch ein REFRESH sinnvoll :confused:

Me![subdisplay_pkey_v_lfadresse_beh].Form.ReFresh

... oder verstehe ich da etwas nicht ? :bawling:

WMS
29.10.2003, 12:10
in diesem Thread hatten wir so etwas ähnliches -->
hier (klicke hier) (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=106886&perpage=15&highlight=wms&pagenumber=2)

... ich würde es auch einfach mal mit Me.Refresh probieren :confused:

Arne Dieckmann
29.10.2003, 12:21
Evtl. musst Du dann ersteinmal einen INSERT-Befehl absetzen (wie gesagt, ich kenne mich mit dem Ablauf nicht mehr aus). Oder, wenn das Formular schon an die Tabelle gebunden ist, evtl. dann

DoCmd.RunCommand acCmdSaveRecord

(alles natürlich vor dem Requery).

Hast Du denn schon ein Refresh ausprobiert, wie es WMS vorgeschlagen hat?

dancer1970
29.10.2003, 13:36
Tschuldigung, dass ich mich erst jetzt melde.

Also das mit saverecord ist gut und funktioniert. In der Tabelle steht jetzt auch der richtige Wert.

Danach habe ich verschiedene Versionen mit requery und refresh getestet. Kein Erfolg. Wenn ich das UFO allein öffne wird der neue Datensatz angezeigt.


Private Sub button_speichern_Click()

DoCmd.RunCommand acCmdSaveRecord 'funktioniert

Call update_pkey_behaelter 'ruft die Speicherfunktion und aktualisiertes select auf

Me.Refresh 'keine Wirkung
Me![subdisplay_pkey_v_lfadresse_beh].Form.Requery 'keine Wirkung
Me![subdisplay_pkey_v_lfadresse_beh].Form.Refresh 'keine Wirkung
'Me![subdisplay_pkey_v_lfadresse_beh].Refresh 'FEHLER! Objekt unterstützt diese Eigenschaft oder Methode nicht

End Sub


Könnte es vielleicht damit zu tun haben, dass die Datenherkunft des UFO eine PT Abfrage ist?
Bei dem Versuch eine Verknüpfung zwischen HF und UFO wurde die fehlende Datenherkunft angemeckert.