wie lautet der Befehl zum Daten schreiben? (gelöst)
Moderator: Moderatoren
wie lautet der Befehl zum Daten schreiben? (gelöst)
Hi, ich habe ein Formular mit einem Hauptformular in Tabellenform und einem Unterformular in Blöcken, das ich mit dem Assistenten erstellt habe. Beide Formulare sind über die ID verknüpft. Funktioniert soweit ganz gut, die Tabelle bietet die Übersicht und das Unterformular die Details. Wenn ich nun aber die Daten im Unterformular verändere, werden die Veränderungen erst dann in die Tabelle übernommen, wenn ich das Gesamtformular schließe und wieder öffne. Ich habe mit oForm.reload experimentiert, aber das funzt nicht.
Sicherlich gibt es einen Befehl, der die Tabelle aktualisiert, aber wie lautet der?
Sicherlich gibt es einen Befehl, der die Tabelle aktualisiert, aber wie lautet der?
Zuletzt geändert von Noebian am Do, 24.11.2011 18:03, insgesamt 1-mal geändert.
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
Re: wie lautet der Befehl zum Daten schreiben?
Hi,
der Befehl lautet .reload
Wenn er nicht funzt, scheint es an was anderem zu liegen, z.B. das die Daten noch nicht in die DB geschrieben wurden.
Vielleicht hilft Dir dieser Link:viewtopic.php?f=8&t=47265&start=15#p172750
Viel Erfolg Gruß R
Edit: mehr Infos oder eine Beispieldatei könnten helfen ...
der Befehl lautet .reload
Wenn er nicht funzt, scheint es an was anderem zu liegen, z.B. das die Daten noch nicht in die DB geschrieben wurden.
Vielleicht hilft Dir dieser Link:viewtopic.php?f=8&t=47265&start=15#p172750
Viel Erfolg Gruß R
Edit: mehr Infos oder eine Beispieldatei könnten helfen ...
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: wie lautet der Befehl zum Daten schreiben?
Hallo R.
ja, genau das ist das Problem: die Daten werden (noch) nicht in die Datenbank geschrieben. Auch dann nicht, wenn ich die Datensätze wechsle. Das passiert erst dann, wenn ich das Formular schließe und wieder öffne. Und genau das möchte ich per Makro erreichen: dass die Daten, die ich ins Unterformular eingetippselt habe in die DB geschrieben und so im Hauptformular sichtbar werden . updateRow funzt auch nicht....
ja, genau das ist das Problem: die Daten werden (noch) nicht in die Datenbank geschrieben. Auch dann nicht, wenn ich die Datensätze wechsle. Das passiert erst dann, wenn ich das Formular schließe und wieder öffne. Und genau das möchte ich per Makro erreichen: dass die Daten, die ich ins Unterformular eingetippselt habe in die DB geschrieben und so im Hauptformular sichtbar werden . updateRow funzt auch nicht....
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: wie lautet der Befehl zum Daten schreiben?
Beispieldatei... sonst sind alle Hilfeversuche "stochern im Nebel"
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: wie lautet der Befehl zum Daten schreiben?
Nun denn: etwa so....
- Dateianhänge
-
- Beispiel.odb
- schlichtes Beispiel
- (12.66 KiB) 57-mal heruntergeladen
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: wie lautet der Befehl zum Daten schreiben?
Das ist nicht korrekt:Noebian hat geschrieben:die Daten werden (noch) nicht in die Datenbank geschrieben. Auch dann nicht, wenn ich die Datensätze wechsle.
die Daten im Sub-Formular werden in die (DB-)Tabelle geschrieben - beim Wechsel des Datensatzes (wie erwartet).
[LO 3.4.3]
Die Tabellenansicht Deiner Daten wird (natürlich) ohne Befehl nicht aktualisiert.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: wie lautet der Befehl zum Daten schreiben?
Achja... Makros waren keine dabei?
Warum schreibst Du hier im Makro-Unterforum?
Warum schreibst Du hier im Makro-Unterforum?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: wie lautet der Befehl zum Daten schreiben?
weil ich nach einem Makro suche!Warum schreibst Du hier im Makro-Unterforum?
Nochmal zum Verständnis - funktioniert es bei dir anders als bei mir?
Ich ändere im rechten Feld "Hans" zu "Hansen". Tabellenfeld bleibt unverändert.
Ich wechsle den Datensatz und lasse mir Peter Petersen anzeigen.
Dann gehe ich zurück: Im Tabellenfeld steht immer noch "Hans", im rechten Feld "Hansen"
Erst wenn ich das Formular komplett schließe und wieder öffne, ist die Änderung im Tabellenfeld angekommen.
Ich möchte nun, dass das Tabellenfeld automatisch aktualisiert wird, wenn das rechte Feld verändert wurde.
Wie kann ich das erreichen?
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: wie lautet der Befehl zum Daten schreiben?
Der Befehl heisst: .reload()
Das wurde Dir oben schon gesagt, wenn Du damit experimentiert hast, dann zeige uns Deine Versuche...
Und Deine OOo-Version, Dein Betriebssystem, bitte!
Das wurde Dir oben schon gesagt, wenn Du damit experimentiert hast, dann zeige uns Deine Versuche...
Und Deine OOo-Version, Dein Betriebssystem, bitte!
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: wie lautet der Befehl zum Daten schreiben?
Hi,
ich habe folgendes versucht:
bei der Beispieldatenbank funtioniert das auch - bei meiner anderen, die ich in Arbeit habe, dummerweise nicht. Sie hat die gleiche Struktur, aber dort bewirkt der gleiche Befehl, dass die veränderte Zeile (SubForm) durch die unveränderte Tabellenzeile (Mainform) überschrieben wird. WEnn ich jedoch das veränderte Formular schließe und wieder öffne, dann hat die DB die veränderte Fassung übernommen.
Leider sind dort zuviele personenbezogene Daten als dass ich sie veröffentlichen könnte...
Nachtrag: ändere ich den Datensatz,gehe einmal zum nächsten und wieder zurück und führe dann das Makro aus, wird die Mainform geändert, so wie es sein soll. Merkwürdig, oder?
Nachtrag2: Jetzt wird es ganz verrückt. Öffne ich die Beispieldatenbank, funktioniert das Makro wie gewünscht. Öffne ich dann die andere DB und gehe danach zurück zur BeispielDB verhält sie sich plötzlich anders als vorher. Nun wird auch dort die veränderte SubForm von der unveränderten MainForm überschrieben...
ich habe folgendes versucht:
Code: Alles auswählen
sub reload
oForm=ThisComponent.drawpage.forms.getbyIndex(0)
oForm.reload
end sub
Leider sind dort zuviele personenbezogene Daten als dass ich sie veröffentlichen könnte...
Nachtrag: ändere ich den Datensatz,gehe einmal zum nächsten und wieder zurück und führe dann das Makro aus, wird die Mainform geändert, so wie es sein soll. Merkwürdig, oder?
Nachtrag2: Jetzt wird es ganz verrückt. Öffne ich die Beispieldatenbank, funktioniert das Makro wie gewünscht. Öffne ich dann die andere DB und gehe danach zurück zur BeispielDB verhält sie sich plötzlich anders als vorher. Nun wird auch dort die veränderte SubForm von der unveränderten MainForm überschrieben...
Zuletzt geändert von Noebian am Mo, 31.10.2011 18:14, insgesamt 1-mal geändert.
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: wie lautet der Befehl zum Daten schreiben?
Tja, und die "Original"-Datei ist gleich Deinem Beispiel... nur: da geht's nicht?!
Das kann nicht sein.
Tipp:
Arbeite mit dem EVENT-Objekt, bei dem Ereignis: Nach dem Datensatzwechsel (des Sub-Formulars)
Und verwende XRAY und/oder MRI zur Untersuchung Deiner Objekte
Das kann nicht sein.
Tipp:
Arbeite mit dem EVENT-Objekt, bei dem Ereignis: Nach dem Datensatzwechsel (des Sub-Formulars)
Und verwende XRAY und/oder MRI zur Untersuchung Deiner Objekte
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: wie lautet der Befehl zum Daten schreiben?
Ich glaub', ich hab's jetzt. Das hier scheint zu funktionieren:
ein Problem taucht dabei allerdings auf: die Anzeige springt automatisch zum ersten Datensatz. Wie komme ich denn da wieder zum aktuellen zurück? *seufz*
Code: Alles auswählen
sub reload
oForm=ThisComponent.drawpage.forms.getbyIndex(0)
oSubForm = oForm.getByName("SubForm")
oSubForm.updateRow
oForm.reload
end sub
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
Re: wie lautet der Befehl zum Daten schreiben?
Auch gelöst. Ich will ja nicht nerven, aber vielleicht interessiert das auch andere:
Code: Alles auswählen
sub reload
dim oForm, oSubForm as object
dim intDatensatz as integer
oForm=ThisComponent.drawpage.forms.getbyIndex(0)
oSubForm = oForm.getByName("SubForm")
oSubForm.updateRow
intDatensatz = oForm.getRow()
oForm.reload
oForm.absolute(intDatensatz)
end sub
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden
Re: wie lautet der Befehl zum Daten schreiben?
Also, ich verstehe die ganze Aufregung nicht.
Du hast eine einzige Tabelle, in der Du alle Daten verwalten willst. Du benötigst kein Unterformular. Packe die einzelnen Felder auf das gleiche Formular, und die Sache läuft.
Mein Rat: Setze Dich mit dem Aufbau von Formularen auseinander und nutze den Formular Navigator im Bearbeitungsmodus.
Dann siehst Du den Unterschied zwischen Deiner Datei und der angehängten.
Gruß R
Du hast eine einzige Tabelle, in der Du alle Daten verwalten willst. Du benötigst kein Unterformular. Packe die einzelnen Felder auf das gleiche Formular, und die Sache läuft.
Mein Rat: Setze Dich mit dem Aufbau von Formularen auseinander und nutze den Formular Navigator im Bearbeitungsmodus.
Dann siehst Du den Unterschied zwischen Deiner Datei und der angehängten.
Gruß R
- Dateianhänge
-
- Beispiel_Subform_Noebian.odb
- (12.57 KiB) 53-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: wie lautet der Befehl zum Daten schreiben?
Super F3K!
Das kommt davon, wenn man sich auf die Assistenten verlässt. Deine Lösung ist natürlich viel simpler.
Danke schön. Ich habe viel zu kompliziert gedacht.
Das kommt davon, wenn man sich auf die Assistenten verlässt. Deine Lösung ist natürlich viel simpler.
Danke schön. Ich habe viel zu kompliziert gedacht.
Xubuntu 12.04 / AOO 4.0 / MySQL 5.2.40
herzliche Grüße aus Deutschlands Norden
herzliche Grüße aus Deutschlands Norden