Hallo,
Ich frage mich gerade ob es möglich ist, Makros so abzulegen / speichern, dass sie für jedes Formular nutzbar sind aber dennoch bei Weitergabe der Datenbank beinhaltet sind.
Ich habe 2 Formulare mit jeweils separaten Tabellen und entsprechend musste ich auch die Makros für jedes Formular separat hinterlegen. Eigentlich ja nicht schlimm, ich kann nun aber aus Formular2 nicht auf globale Variablen, die ich in Formular1 hinterlegt habe zugreifen. Oder liege ich da falsch? Ich müsste also alle Makros in z-b Meine Makros ablegen um globale Variablen nutzen zu können. Dann könnte ich aber die Datenbank nicht weitergeben...
Versteht mich jemand=)?
Verfügbarkeit der Makros / Globale Makros & Variablen
Moderator: Moderatoren
-
- ***
- Beiträge: 65
- Registriert: Mo, 14.01.2008 19:31
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Verfügbarkeit der Makros / Globale Makros & Variablen
...da Makros (noch nicht) an BASE-Dokumente angehängt werden - musst Du sowieso eine Bibliothek zusätzlich verteilen... oder verstehe ich da nun etwas falsch?
[immer noch: 8°52'55"N 98°16'1" E; aktuell: 29 Grad C]
[immer noch: 8°52'55"N 98°16'1" E; aktuell: 29 Grad C]
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: Verfügbarkeit der Makros / Globale Makros & Variablen
Hey Gabriel,
Aber vielleicht kannst du das Beispiel besser beschreiben?
Gruss
Thomas
Globale Variablen in Formular 1? meinst du Konstanten? Ansonsten könntest du natürlich die Werte beim Aufruf aus Formualar 1 als Parameter mit auf Formular 2 übergeben - und dann stehen sie auch dort zur Verfügung??Gabriel123 hat geschrieben:Eigentlich ja nicht schlimm, ich kann nun aber aus Formular2 nicht auf globale Variablen, die ich in Formular1 hinterlegt habe zugreifen.
Aber vielleicht kannst du das Beispiel besser beschreiben?
Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- ***
- Beiträge: 65
- Registriert: Mo, 14.01.2008 19:31
Re: Verfügbarkeit der Makros / Globale Makros & Variablen
Gerne beschreibe ich noch mal mein Problem genauer=) Inzwischen bin ich auch schon ein Schritt weiter=)
Formular 1 enthält Kundendaten / liest aus Tabelle 1
Formular 2 ist leer und liest / schreibt in Tabelle 2 - hier werden neue Aufträge für einen Kunden erfasst.
In Formular1 ist ein Button "neuer Auftrag" und Formular2 öffnet sich. Hier sollen nun die kundendaten, die gerade in Formular1 aktiv waren übernommen werden. Ich muss also aus Formular1 die daten an Formular2 übergeben.
Da habe ich mir nun mit globalen Variablen geholfen
Form1: txtKundennr1 = .getByName("Kundennr.1").Text
Form2: .getByName("Kundennr.1").Text = txtKundennr.
Das geht auch inzwischen ohne Probleme. ABER, dadurch, dass die daten in Form2 über ein makro in die Textfelder geschrieben werden, werden sie nicht als Eingabe erkannt. ich kann sie also nicht speichern. selbst wenn ich manuell noch was ergänze, wird nur das ergänzte in tabelle 2 gespeichert.
Formular 1 enthält Kundendaten / liest aus Tabelle 1
Formular 2 ist leer und liest / schreibt in Tabelle 2 - hier werden neue Aufträge für einen Kunden erfasst.
In Formular1 ist ein Button "neuer Auftrag" und Formular2 öffnet sich. Hier sollen nun die kundendaten, die gerade in Formular1 aktiv waren übernommen werden. Ich muss also aus Formular1 die daten an Formular2 übergeben.
Da habe ich mir nun mit globalen Variablen geholfen
Form1: txtKundennr1 = .getByName("Kundennr.1").Text
Form2: .getByName("Kundennr.1").Text = txtKundennr.
Das geht auch inzwischen ohne Probleme. ABER, dadurch, dass die daten in Form2 über ein makro in die Textfelder geschrieben werden, werden sie nicht als Eingabe erkannt. ich kann sie also nicht speichern. selbst wenn ich manuell noch was ergänze, wird nur das ergänzte in tabelle 2 gespeichert.
Re: Verfügbarkeit der Makros / Globale Makros & Variablen
Hallo Gabriel,

Es könnte auch funktionieren, wenn du nach dem Inhaltsreinschreiben den Rowset speicherst - bin mir aber nicht ganz sicher. Möglicherweise müsste auch hier zunächt ein Update erfolgen - dann könnten aber die Felder wieder leer sein....
Viele Grüße
Thomas
Das ist korrekt. Das Formular bildest ja Inhalte nur ab - normalerweise die Inhalte des aktuellen Rowsets. Schreibst du direkt etwas in die Formularfelder (per Basic), so ist nur der dargestellte Inhalt verändert worden - nicht das Rowset an sich. Um das zu umgehen, schreibe die Werte entweder direkt in das Rowset (also in die Datenbank) und rufe anschliessend das Formular über "refresh" auf, jetzt werden die dargestellten Inhalte aktualisiert - deine Eingaben sind zu sehen und dennoch in der DBGabriel123 hat geschrieben:ABER, dadurch, dass die daten in Form2 über ein makro in die Textfelder geschrieben werden, werden sie nicht als Eingabe erkannt. ich kann sie also nicht speichern.

Es könnte auch funktionieren, wenn du nach dem Inhaltsreinschreiben den Rowset speicherst - bin mir aber nicht ganz sicher. Möglicherweise müsste auch hier zunächt ein Update erfolgen - dann könnten aber die Felder wieder leer sein....
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: Verfügbarkeit der Makros / Globale Makros & Variablen
Hallo,
ich habe kürzlich in einem US-Forum die Lösung gefunden, mit der ich per Macro an eine Tabelle gebundene Formularfelder ändern und automatisch speichern kann. Mit dieser Methode erkennt das Formular die Änderung und speichert die Daten so ab, als wenn ich sie per Hand geändert hätte (der Speichern-Button wird aktiviert und beim schließen wird automatisch gefragt, ob die Änderungen gespeichert werden sollen. Weiterer Vorteil: ein UnDo, also rückgängig machen der noch nicht gepeicherten Änderung des Formulars geht auch!
Hier der auf das wesentliche reduzierte Code:
oDoc = thisComponent
oForm = oDoc.DrawPage.Forms.GetByIndex(0)
oTx = oForm.getByName("meinFormularFeld")
oTxCtr = oDoc.CurrentController.GetControl(oTx)
oTxCtr.Text = "neuer Wert"
Das wars!!
Achtung, Du mußt natürlich auf den richtigen Datentyp achten, also numerisch, text usw.
Allerdings kann ich das Funktionieren nur für ooBase 3.0 bestätigen.... zu früheren Versionen kann ich nichts sagen.
Viel Spaß und Gruß
eBayer
ich habe kürzlich in einem US-Forum die Lösung gefunden, mit der ich per Macro an eine Tabelle gebundene Formularfelder ändern und automatisch speichern kann. Mit dieser Methode erkennt das Formular die Änderung und speichert die Daten so ab, als wenn ich sie per Hand geändert hätte (der Speichern-Button wird aktiviert und beim schließen wird automatisch gefragt, ob die Änderungen gespeichert werden sollen. Weiterer Vorteil: ein UnDo, also rückgängig machen der noch nicht gepeicherten Änderung des Formulars geht auch!
Hier der auf das wesentliche reduzierte Code:
oDoc = thisComponent
oForm = oDoc.DrawPage.Forms.GetByIndex(0)
oTx = oForm.getByName("meinFormularFeld")
oTxCtr = oDoc.CurrentController.GetControl(oTx)
oTxCtr.Text = "neuer Wert"
Das wars!!
Achtung, Du mußt natürlich auf den richtigen Datentyp achten, also numerisch, text usw.
Allerdings kann ich das Funktionieren nur für ooBase 3.0 bestätigen.... zu früheren Versionen kann ich nichts sagen.
Viel Spaß und Gruß
eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008