Seite 1 von 1
SQL Befehl via Makro
Verfasst: Mi, 26.09.2012 14:24
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
Re: SQL Befehl via Makro
Verfasst: Mi, 26.09.2012 15:28
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
Re: SQL Befehl via Makro
Verfasst: Mi, 26.09.2012 16:53
von tim9394
Hey!
cool danke ich wälz mich da mal durch. Danke für die schnelle Antwort!!
Gruß
Re: SQL Befehl via Makro
Verfasst: Do, 27.09.2012 09:44
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!!!
Re: SQL Befehl via Makro
Verfasst: Do, 27.09.2012 09:51
von juetho
Da hilft das 4-Augen-Prinzip, nämlich ein einfacher Schreibfehler: Es heißt Compo
nent, 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.
Gruß Jürgen
Re: SQL Befehl via Makro
Verfasst: Do, 27.09.2012 11:08
von tim9394
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:
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
Verfasst: Do, 27.09.2012 11:39
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
Re: SQL Befehl via Makro
Verfasst: Do, 27.09.2012 12:32
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.
Re: SQL Befehl via Makro
Verfasst: Do, 27.09.2012 16:57
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!!!
Re: SQL Befehl via Makro
Verfasst: Do, 27.09.2012 19:21
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
Re: SQL Befehl via Makro
Verfasst: So, 30.09.2012 16:30
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
Re: SQL Befehl via Makro
Verfasst: So, 30.09.2012 16:53
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