🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro: SQL Code einer Abfrage auslesen und BASIC gerecht formatieren zur Verwendung in executeUpdate()

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
EinsamerBaumWald
Beiträge: 31
Registriert: Fr 28. Nov 2014, 20:41

Makro: SQL Code einer Abfrage auslesen und BASIC gerecht formatieren zur Verwendung in executeUpdate()

Beitrag von EinsamerBaumWald » Sa 24. Sep 2016, 23:27

Hallo,

ich weiß, wie ich in einem Makro SQL-Befehle absetzen kann. Zwecks der besseren Lesbarkeit schreibe ich den SQL Code eingerückt in einer Abfrage (SQL-Kommando direkt ausführen angehakt). Nun würde ich gerne wissen, wie ich in einem Makro den SQL-Code direkt aus der Abfrage auslesen kann.
Der String müsste um die Zeilenumbrüche und Tabs bereinigt werden, die Anführungszeichen verdoppelt, um ihn dann an oSQL_Statement.executeUpdate() zu übergeben.

Hintergrund:
Es handelt sich um UPDATE, INSERT INTO - Befehle, die ich aus der Abfrage heraus gar nicht ausführen kann, diese dient nur zum Speichern wg. der Übersichtlichkeit bei der Erstellung des Codes.
Ich möchte mir das manuelle Copy & Paste und umformatieren sparen.
Außerdem wäre es schön, die Daten nicht zweimal in einer Datei speichern zu müssen.


Vielen Dank!

Grüße,
EinsamerBaumWald

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Makro: SQL Code einer Abfrage auslesen und BASIC gerecht formatieren zur Verwendung in executeUpdate()

Beitrag von gogo » Sa 25. Feb 2017, 09:59

SQL-Code:

Code: Alles auswählen

thisDatabaseDocument.DataSource.QueryDefinitions.getByIndex(3).Command
.getByIndex(3) verweist auf Abfrage 3 (gezählt wird von 0 bis n). Da kannst Du auch .getByName("MeineAbfrage") verwenden.

zwecks Übersichtlichkeit:
kann man im Makrobereich auch übersichtlich gestalten. z.B. so:

Code: Alles auswählen

sSQL = "Select                                           " & _
	 " 	Preis,                                          " & _
	 " 	Artikelname                                     " & _
	 " from                                               " & _
	 " 	Artikel                                         " & _
	 " where                                              " & _
	 " 	ID_Artikel = " & cStr(sArtikelnummer)             & _
	 " order by                                           " & _
	 " 	Preis"
wird dann natürlich komplexer, wenn man " braucht ...
cave: Nach den "_" MUSS DIREKT EIN ZEILENUMBRUCH FOLGEN.


Zuletzt als neu markiert von EinsamerBaumWald am Sa 25. Feb 2017, 09:59.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten