🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
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:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten