SQL Befehl via Makro

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

tim9394
*
Beiträge: 14
Registriert: Mi, 26.09.2012 14:19

SQL Befehl via Makro

Beitrag von tim9394 »

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
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: SQL Befehl via Makro

Beitrag von juetho »

tim9394 hat geschrieben:... nur mal generell: Kann man einen SQL Befehl in ein Makro einbauen.
Selbstverständlich geht das. Viele Beispiele stehen in der Einführung in Base sowie im Base-Handbuch.
Ich hab etwas von String variablen gelesen. Gibts es da einen Universellen Code in den ich meinen Befehl nur noch einfügen muss?
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ürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
tim9394
*
Beiträge: 14
Registriert: Mi, 26.09.2012 14:19

Re: SQL Befehl via Makro

Beitrag von tim9394 »

Hey!

cool danke ich wälz mich da mal durch. Danke für die schnelle Antwort!!

Gruß
tim9394
*
Beiträge: 14
Registriert: Mi, 26.09.2012 14:19

Re: SQL Befehl via Makro

Beitrag von tim9394 »

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:

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
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!!!
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: SQL Befehl via Makro

Beitrag von juetho »

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:

Code: Alles auswählen

oForm = thisComponent.drawpage.forms.getByName("Anzeige")
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:

Code: Alles auswählen

oForm = thisComponent.drawpage.forms.MainForm.getByName("Anzeige")
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.

Code: Alles auswählen

oForm = thisComponent.drawpage.forms.MainForm.Anzeige
Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
tim9394
*
Beiträge: 14
Registriert: Mi, 26.09.2012 14:19

Re: SQL Befehl via Makro

Beitrag von tim9394 »

Ok das ware wirklich doof.... aber danke!

hab jetzt ein neues Problem:

Code: Alles auswählen

oDrawpage = oDoc.drawpage
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:

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!!!!
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: SQL Befehl via Makro

Beitrag von juetho »

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
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: SQL Befehl via Makro

Beitrag von DPunch »

Servus
tim9394 hat geschrieben:Dieser Teil wird angemeckert mit der Meldung: "Eigenschaft oder Meldung nicht gefunden: drawpage
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?
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.
tim9394
*
Beiträge: 14
Registriert: Mi, 26.09.2012 14:19

Re: SQL Befehl via Makro

Beitrag von tim9394 »

@ 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!!!
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: SQL Befehl via Makro

Beitrag von juetho »

tim9394 hat geschrieben:Ich will den Befehl später über eine Schlatfläche anwählen.
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.
Aber wenn das schon nicht funktioniert....
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.
Ich weiß zwar nicht was eine IDE ist,
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.
aber zuvor war ich in base, sprich datenbank
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").

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
tim9394
*
Beiträge: 14
Registriert: Mi, 26.09.2012 14:19

Re: SQL Befehl via Makro

Beitrag von tim9394 »

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
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: SQL Befehl via Makro

Beitrag von juetho »

tim9394 hat geschrieben:wie kann ich den sql befehl ... für eine Schaltfläche in ein makro rein schreiben?
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.

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
Antworten