SQL_Statement.execute

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Buck_r
*
Beiträge: 16
Registriert: Mi, 13.01.2016 15:12

SQL_Statement.execute

Beitrag von Buck_r »

Hallo an alle!
ich versuche per Makro eine SQL Abfrage ablaufen zu lassen.
Es funktioniert alles, jedoch mit einer Einschenkung.
Die SQL Abfrage muss als STING in eine Variable geschrieben werden, das mit " anfängt und mit "aufhört.
Leider ist in meiner Anfrage ein " notwendig.
SELECT `bestelldaten`.`Bestell Pos` AS `Best./Pos`, `bestelldaten`.`Stückzahl`
AS `Menge`, `bestelldaten`.`Bezeichnung`
AS `Artikeltext`, `bestelldaten`.`Material`
AS `Werkstoff`, `bestelldaten`.`t=`
AS `Dicke`, CONCAT( '#', ( CONCAT( `Kunden_Kennung`, ( CONCAT( '-', `Art.Nr.` ) ) ) ) )
AS `AerikelNr.`, `kundenbestellung`.`id` FROM `testdb`.`bestelldaten`
AS `bestelldaten`, `testdb`.`kundenbestellung`
AS `kundenbestellung` WHERE `bestelldaten`.`ID` = `kundenbestellung`.`id`
AND `kundenbestellung`.`id` = 10233
INTO OUTFILE 'E:\\test_test\\SQL_Import\\Filename.csv'
FIELDS TERMINATED BY '\t'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
Nämlich genau hier (ENCLOSED BY '"') hört auch der Sting auf, obwohl die SQL Abfrage weiter geht.

_Import\\Filename.csv'FIELDS TERMINATED BY '\t'ENCLOSED BY '"'LINES TERMINATED BY '\r\n'"

Das ist ein Problem weil die SQL Anfrage fehlerhaft ist.
Dase ersetzen des ENCLOSED BY '"' gegen ENCLOSED BY '\t' zum Beispiel lässt den SQL wieder komplett erkennen, liefert jedoch einen Export, den ich nicht gebrauchen kann.
Ich brauche dieses ENCLOSED BY '"'.

ich hoffe das ihr mir helfen könnt.

Danke.
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: SQL_Statement.execute

Beitrag von Toxitom »

Hey Buck,

na, dann musst Du die Zeichen "maskieren":))

Als String für eine Varaibel werden die " einfach verdoppelt, da müsst4e also stehen:

Code: Alles auswählen

..ENCLOSED BY """"..
Wobei... ob Dein String dann wirklich fünktioniert? Die vielen "einfachen" Hochzeichen verwirren mich... müssten das nicht ebenfalls doppelte sein? Die dann wiederum maskiert werden müssen? Na, OK, ich kenne Dein DMS nicht... vielleicht funktioniert es ja.

Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Buck_r
*
Beiträge: 16
Registriert: Mi, 13.01.2016 15:12

Re: SQL_Statement.execute

Beitrag von Buck_r »

Hallo Toxitom
Dein Vorschlag klappt nicht. Ein " und die Farbe im Editor ändert sich schwarz. Ein weiteres " ändert sich die Farbe wieder Rot.
Somit kann ich ein " nicht in ein String einbauen !?
Ich dachte ich bin schlau und ersetze das " durch eine Variable.....tja schön Blöd, den auch diese Variable ist ein String und da stehe ich vor den gleichen Problemen.
Ein " und die Farbe im Editor ändert sich schwarz. Ein weiteres " ändert sich die Farbe wieder Rot.
mist.
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: SQL_Statement.execute

Beitrag von Toxitom »

Hei Buck,
Dein Vorschlag klappt nicht.
natürlich klappt das. Das ist Basiswissen beim Makro-Programmieren.

Hier der Beweis:
test.jpg
test.jpg (9.9 KiB) 4862 mal betrachtet
Keine Ahnung, was Du machst oder wo Du editiert.

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Buck_r
*
Beiträge: 16
Registriert: Mi, 13.01.2016 15:12

Re: SQL_Statement.execute

Beitrag von Buck_r »

Hallo Toxitom
ich Glaube das die einzelne Zeichen nicht richtig zu erkennen sind.
Es muss lauten ENCLOSED BY '"' =ENCLOSED BY Singel Quote Double Quote Singel Quote.
Dateianhänge
Unbenannt.PNG
Unbenannt.PNG (8.14 KiB) 4855 mal betrachtet
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: SQL_Statement.execute

Beitrag von Toxitom »

Hey Buck,
ich Glaube das die einzelne Zeichen nicht richtig zu erkennen sind....
Womit Du recht hast;) Wobei das gar nicht entscheident ist - das Prinzip ist doch das Gleiche.
...na, dann musst Du die Zeichen "maskieren":))
siehe meinen ersten Post.

Also lautet Dein Ausdruck:

Code: Alles auswählen

...  gensefuese = "ENCLOSED BY '""'" ...
So schwer war das doch nicht ;))

Gruss
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten