SQL Befehl via Makro
Moderator: Moderatoren
SQL Befehl via Makro
Hallo alle zusammen!
Ich bin neu hier und bräuchte eure Hilfe. Ich will einen einfachen Sortierungsbefehl über eine Schaltfläche in ein Formular einbauen. Ich weiß dass das als Button gibt also im unteren Bildbereich, nur mal generell: Kann man einen SQL Befehl in ein Makro einbauen. Ich hab etwas von String variablen gelesen. Gibts es da einen Universellen Code in den ich meinen Befehl nur noch einfügen muss?
Vielen Dank schonmal!!!
Gruß
Tim
Ich bin neu hier und bräuchte eure Hilfe. Ich will einen einfachen Sortierungsbefehl über eine Schaltfläche in ein Formular einbauen. Ich weiß dass das als Button gibt also im unteren Bildbereich, nur mal generell: Kann man einen SQL Befehl in ein Makro einbauen. Ich hab etwas von String variablen gelesen. Gibts es da einen Universellen Code in den ich meinen Befehl nur noch einfügen muss?
Vielen Dank schonmal!!!
Gruß
Tim
Re: SQL Befehl via Makro
Selbstverständlich geht das. Viele Beispiele stehen in der Einführung in Base sowie im Base-Handbuch.tim9394 hat geschrieben:... nur mal generell: Kann man einen SQL Befehl in ein Makro einbauen.
Einen "universellen Code" kann es nicht geben, weil immer auch die jeweilige Situation zu beachten ist. Aber die Beispiele in den Handbüchern können kopiert und angepasst werden. Am sinnvollsten suchst du nach CreateStatement. JürgenIch hab etwas von String variablen gelesen. Gibts es da einen Universellen Code in den ich meinen Befehl nur noch einfügen muss?
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: SQL Befehl via Makro
Hey!
cool danke ich wälz mich da mal durch. Danke für die schnelle Antwort!!
Gruß
cool danke ich wälz mich da mal durch. Danke für die schnelle Antwort!!
Gruß
Re: SQL Befehl via Makro
Hi
nochmal eine Frage:
Ich hab hier in der Arbeit Open Office 3 von Oracle. Jetzt probier ich mal ein bisschen Makros zu schreiben, mit der Anleitung, die ich bekommen habe. Ziemlich einfach:
Nun sagst mir eine Fehlermeldung:
BASIC-Laufzeifehler
Objektvariable nicht belegt.
und makiert den Bereich oDoc = thisCompoment
Wahrscheinlich ne simple Geschichte und ich stell mich furchtbar an, aber bitte schreibt doch, wenn ihr Zeit habt einfach kurz an was es liegt.
Danke!!!
nochmal eine Frage:
Ich hab hier in der Arbeit Open Office 3 von Oracle. Jetzt probier ich mal ein bisschen Makros zu schreiben, mit der Anleitung, die ich bekommen habe. Ziemlich einfach:
Code: Alles auswählen
Sub Aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
oDoc = thisCompoment
oDrawpage = oDoc.drawpage
oForm = o.Drawpage.forms.getByName("Anzeige")
oForm.reload()
End Sub
BASIC-Laufzeifehler
Objektvariable nicht belegt.
und makiert den Bereich oDoc = thisCompoment
Wahrscheinlich ne simple Geschichte und ich stell mich furchtbar an, aber bitte schreibt doch, wenn ihr Zeit habt einfach kurz an was es liegt.
Danke!!!
Re: SQL Befehl via Makro
Da hilft das 4-Augen-Prinzip, nämlich ein einfacher Schreibfehler: Es heißt Component, nicht Compoment. Später ist die Variable o nicht definiert und nicht zugewiesen; oder der Punkt ist zuviel. Schreib direkt:
Wahrscheinlich ist das noch falsch, weil das oberste Formular üblicherweise MainForm heißt und das von dir gewünschte Formular darunter liegt. Also sollte es lauten:
Außerdem kann ein Element oft direkt mit dem Namen angesprochen werden (ohne getByName). Bei Formularen sollte das fast immer funktionieren, bei Controls nicht unbedingt.
Gruß Jürgen
Code: Alles auswählen
oForm = thisComponent.drawpage.forms.getByName("Anzeige")
Code: Alles auswählen
oForm = thisComponent.drawpage.forms.MainForm.getByName("Anzeige")
Code: Alles auswählen
oForm = thisComponent.drawpage.forms.MainForm.Anzeige
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: SQL Befehl via Makro
Ok das ware wirklich doof.... aber danke!
hab jetzt ein neues Problem:
Dieser Teil wird angemeckert mit der Meldung: "Eigenschaft oder Meldung nicht gefunden: drawpage.
Kann sein, dass ich wieder ähnlich doof bin, aber dann ist ja auch die antwort umso einfacher
Falls Fragen bestehen hier nochmal der ganze Code:
Vielen DANK!!!!
hab jetzt ein neues Problem:
Code: Alles auswählen
oDrawpage = oDoc.drawpage
Kann sein, dass ich wieder ähnlich doof bin, aber dann ist ja auch die antwort umso einfacher

Falls Fragen bestehen hier nochmal der ganze Code:
Code: Alles auswählen
REM ***** BASIC *****
Sub Aktualisieren
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = thisComponent.drawpage.forms.MainForm.Anzeige
oForm.reload()
End Sub
Vielen DANK!!!!
Re: SQL Befehl via Makro
Hmmm. Eigentlich ist das richtig und hat auch keinen Schreibfehler.
Ich könnte mir höchstens vorstellen, dass der Übersetzer die Definition von oDrawpage und die angemeckerte Zuweisung nicht benutzen will, weil anschließend nichts mehr mit oDrawpage gemacht wird. (Aber ich bezweifle, dass der Übersetzer so intelligent ist.) Wenn du die von mir vorgeschlagene Zuweisung zu oForm benutzt, kannst du auf Definition und Zuweisung von oDoc und oDrawpage verzichten (zunächst zum Kommentar verwandeln, später - wenn alles funktioniert - löschen).
In welchem Zusammenhang wird denn die Prozedur Aktualisieren aufgerufen? Geht es über einen Button im Formular, dessen Ereignis "Aktion ausführen" diese Prozedur zugeordnet wurde? Oder wolltest du das Makro direkt ausführen (aus dem Editor heraus oder aus der Makro-Auswahl)? Letzteres kann mit diesen Objekten nicht funktionieren. Jürgen

In welchem Zusammenhang wird denn die Prozedur Aktualisieren aufgerufen? Geht es über einen Button im Formular, dessen Ereignis "Aktion ausführen" diese Prozedur zugeordnet wurde? Oder wolltest du das Makro direkt ausführen (aus dem Editor heraus oder aus der Makro-Auswahl)? Letzteres kann mit diesen Objekten nicht funktionieren. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: SQL Befehl via Makro
Servus
Im ersten Fall gibt es keine "Drawpage", sondern lediglich "Drawpages", im zweiten Fall gibt es unter Umständen gar nichts dergleichen, je nachdem, welches Fenster zuvor aktiv war.
In welcher Art von Dokument führst Du den Code aus? Möglicherweise einer Calc-Tabelle? Oder möglicherweise innerhalb einer Datenbank, lässt das Makro aber aus der IDE heraus laufen?tim9394 hat geschrieben:Dieser Teil wird angemeckert mit der Meldung: "Eigenschaft oder Meldung nicht gefunden: drawpage
Im ersten Fall gibt es keine "Drawpage", sondern lediglich "Drawpages", im zweiten Fall gibt es unter Umständen gar nichts dergleichen, je nachdem, welches Fenster zuvor aktiv war.
Re: SQL Befehl via Makro
@ Jürgen:
Ich will den Befehl später über eine Schlatfläche anwählen. Im Grunde dient das ganze ja als Übungsobjekt, um mich in makros rein zufinden. Aber wenn das schon nicht funktioniert....
@ DPunch:
Ich weiß zwar nicht was eine IDE ist, aber zuvor war ich in base, sprich datenbank und genau dafür brauch ich das alles auch
Danke nochmal an euch alle!!!
Ich will den Befehl später über eine Schlatfläche anwählen. Im Grunde dient das ganze ja als Übungsobjekt, um mich in makros rein zufinden. Aber wenn das schon nicht funktioniert....
@ DPunch:
Ich weiß zwar nicht was eine IDE ist, aber zuvor war ich in base, sprich datenbank und genau dafür brauch ich das alles auch
Danke nochmal an euch alle!!!
Re: SQL Befehl via Makro
Später, und wie gehst du jetzt vor? Wo und wie genau hast du das Makro gestartet? Darauf zielte meine vorige Nachfrage, und DPunch hat sie konkretisiert.tim9394 hat geschrieben:Ich will den Befehl später über eine Schlatfläche anwählen.
Es sieht ganz danach aus, als wenn nur das Makro falsch gestartet wird. Darauf deutet die Fehlermeldung hin; jetzt müssen wir das nur genau klären.Aber wenn das schon nicht funktioniert....
Für solche unbekannte Abkürzungen gibt es viele Suchmöglichkeiten. Ich gehe vorzugsweise zu den Listen von Abkürzungen bei Wikipedia, je nachdem Computer oder Netzjargon. Im konkreten Fall ist die Integrierte Entwicklungsumgebung für Makros gemeint, also das Teilprogramm, in dem die Makros geschrieben werden.Ich weiß zwar nicht was eine IDE ist,
Und das reicht noch nicht als Angabe. Zu Base gehören u.a. das Startfenster, die Listen der Tabellen, Abfragen, Formulare und Berichte (überall dort kannst du Makros über Extras > Makros starten), die einzelnen Formulare (dort werden Makros über die Ereignisse der Teilformulare oder der Kontrollfelder gestartet) und die Makro-IDE (in der Titelzeile "Office Basic").aber zuvor war ich in base, sprich datenbank
Also nochmal: Welche Situation hat zum Ablauf des Makros und dem Fehler geführt? Bitte die einzelnen Schritte genau nennen (und ich hoffe, dass wir nicht nochmal nachfragen müssen). Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Re: SQL Befehl via Makro
also habs jetzt herausgefunden. war tatsächlich im falschen fenster, danke!
zurück zu meinem ursprünglichen problem:
wie kann ich den sql befehl
SELECT * FROM Tabelle1 ORDER BY "Autor"
für eine Schaltfläche in ein makro rein schreiben?
Wenn wer Zeit zum Erklären hat, bin ich dankbar. Aber macht euch kein Stress!
Tim
zurück zu meinem ursprünglichen problem:
wie kann ich den sql befehl
SELECT * FROM Tabelle1 ORDER BY "Autor"
für eine Schaltfläche in ein makro rein schreiben?
Wenn wer Zeit zum Erklären hat, bin ich dankbar. Aber macht euch kein Stress!

Re: SQL Befehl via Makro
Wie ich schon oben schrieb: Suche im Base-Handbuch nach CreateStatement. Das Problem dabei ist weniger, den SQL-Befehl in einem Makro unterzubringen und auszuführen. Wichtiger ist, was mit den ausgewählten Daten - also dem Ergebnis des SELECT-Befehls - geschehen soll.tim9394 hat geschrieben:wie kann ich den sql befehl ... für eine Schaltfläche in ein makro rein schreiben?
Einfacher dürfte es deshalb sein (es passt auch besser in Base-Formulare), wenn das Makro den Filter für die angezeigten Daten ändert. Dazu findest du Anregungen und Anleitungen auf Seite 234 ff. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC