![]() |
Delphi-Version: 10.2 Tokyo
Doppelte durch einfache Hochkommas ersetzen
Hi zusammen
Von Workbench habe ich Scripts wie diese exportiert:
Delphi-Quellcode:
Und solches soll nun in sowas eingefügt werden:
CREATE TABLE "PdfOfficerDB"."tblAuthor"("AuthorID" INTEGER PRIMARY KEY NOT NULL,
"Name" VARCHAR(45) NOT NULL, "Vorname" VARCHAR(45) NOT NULL, "tblUser_idTblUser" INTEGER NOT NULL, CONSTRAINT "fk_tblAuthor_tblUser1" FOREIGN KEY("tblUser_idTblUser") REFERENCES "tblUser"("idTblUser"));
Delphi-Quellcode:
Das heisst: einige der doppelten Hochkommas muss ich entfernen, andere durch einfache ersetzen sowie zusätzlich am Ende jeder Zeile den String abschliessen und, wenn der String in dernächsten Zeile fortgesetzt wird, ein + hinzufügen.
function TDMLSQLiteOfficerFE.CreateTblFile: string;
var SQLstring: String; begin SQLstring := 'CREATE TABLE tblFile(FileID INTEGER PRIMARY KEY NOT NULL,'+ 'FilePath" VARCHAR(100) NOT NULL,'+ 'FileType" VARCHAR(5) NOT NULL,'+ 'FileVersion" VARCHAR(3) NOT NULL,'+ 'tblDocuments_DocuID" INTEGER NOT NULL,'+ 'CONSTRAINT fk_tblFile_tblDocuments1'+ 'FOREIGN KEY(tblDocuments_DocuID)'+ 'REFERENCES tblDocuments(DocuID"))'; Result := SQLString; end; Ich hab das erstmal über Suchen und ersetzen versucht, aber da meckert Delphi: Zitat:
Zitat:
Wie kriege ich die doppelten Hochkommas weg, ohne jedes einzeln entfernen zu müssen? Gruss Delbor |
AW: Doppelte durch einfache Hochkommas ersetzen
Zuerst alle " entfernen, dann MultiPaste nutzen.
|
AW: Doppelte durch einfache Hochkommas ersetzen
TigerLilly
Zitat:
Aber Google ist doch ein schlaues ![]() Vielen Dank für deine Antwort! Gruss Delbor PS: Ich habs jettzt auch mal mit Notepad++ versucht. suchen : ", ersetzen durch '. Aus
Delphi-Quellcode:
wurde
CREATE TABLE "PdfOfficerDB"."tblOrt"("OrtID" INTEGER PRIMARY KEY NOT NULL,
"Ort" VARCHAR(65), "PLZ" VARCHAR(6));
Delphi-Quellcode:
Ob da mit den beiden Möglichkeiten (Notepad++ oder Multipaste wirklich Zeit und Tipparbeit eingespart würde, bin ch mir nicht sicher. Das Ergebnis von Notepad++ sähe eventuell besser aus, wenn die nicht benötigten Tabellennamen vorher entfernt würden...
CREATE TABLE 'PdfOfficerDB"."tblOrt"("OrtID' INTEGER PRIMARY KEY NOT NULL,
'Ort' VARCHAR(65), 'PLZ' VARCHAR(6)); |
AW: Doppelte durch einfache Hochkommas ersetzen
Ich hoffe das Beispiel
Delphi-Quellcode:
war noch nicht fertig, das könnte doch in die Hose gehen!
...
'FilePath" VARCHAR(100) NOT NULL,'+ 'FileType" VARCHAR(5) NOT NULL,'+ 'FileVersion" VARCHAR(3) NOT NULL,'+ 'tblDocuments_DocuID" INTEGER NOT NULL,'+ ... Gruß K-H |
AW: Doppelte durch einfache Hochkommas ersetzen
Hi p80286
Zitat:
Effizienter würde das eventuell durch ein eigenes kleines Tool gelöst... Gruss Delbor PS: Im Nachinein sehe ich: das war eines der Statements, die ich zuvor händisch angepasst habe - dabei gingen dann einige Sachen vergessen. |
AW: Doppelte durch einfache Hochkommas ersetzen
Hmmm..
Wenn ich das richtig sehe, soll aus:
Code:
folgendes werden:
CREATE TABLE "PdfOfficerDB"."tblAuthor"("AuthorID" INTEGER PRIMARY KEY NOT NULL,
"Name" VARCHAR(45) NOT NULL, "Vorname" VARCHAR(45) NOT NULL, "tblUser_idTblUser" INTEGER NOT NULL, CONSTRAINT "fk_tblAuthor_tblUser1" FOREIGN KEY("tblUser_idTblUser") REFERENCES "tblUser"("idTblUser"));
Code:
Wenn das richtig ist, dann würde es z.B. so gehen:
'CREATE TABLE PdfOfficerDB.tblAuthor(AuthorID INTEGER PRIMARY KEY NOT NULL, '+
'Name VARCHAR(45) NOT NULL, '+ 'Vorname VARCHAR(45) NOT NULL, '+ 'tblUser_idTblUser INTEGER NOT NULL, '+ 'CONSTRAINT fk_tblAuthor_tblUser1 '+ 'FOREIGN KEY(tblUser_idTblUser) '+ 'REFERENCES tblUser(idTblUser)); ';
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer; sl : TStringList; l : integer; begin sl := TStringList.Create; try // Alle " löschen sl.Text := Trim(StringReplace(Memo1.Text,'"','',[rfReplaceAll])); for i := 0 to sl.Count-1 do begin // Anzahl führende Leerzeichen ermitteln l := Length(sl[i]) - Length(Trim(sl[i])); // Führende Leerzeichen + in Anführungszeichen setzen (mit Trennleerzeichen je Zeilenende) sl[i] := StringOfChar(' ',l) + QuotedStr(Trim(sl[i])+ ' '); // '+' bei allen Zeilen, außer der letzten, anhängen if i < sl.Count-1 then sl[i] := sl[i] +'+' else // ';' bei letzter Zeilen anhängen sl[i] := sl[i] +';'; end; Memo2.Text := sl.Text; finally sl.Free; end; end; |
AW: Doppelte durch einfache Hochkommas ersetzen
Hi HolgerX
Danke für dein Codeschnipsel! Gruss Delbor |
AW: Doppelte durch einfache Hochkommas ersetzen
Wieso können eigentlich die doppelten Anführungszeichen nicht bleiben? Das sind doch nur gequotete Identifier und die sollten auch im Delphi-Code funktionieren.
|
AW: Doppelte durch einfache Hochkommas ersetzen
Hi Uwe Raabe
Zitat:
Gruss Delbor |
AW: Doppelte durch einfache Hochkommas ersetzen
Zitat:
|
AW: Doppelte durch einfache Hochkommas ersetzen
Hi Uwe Raabe
Das Script 'funktioniert' in Workbench überhaupt nicht. Workbench kann erst genutzt werden, wenn eine aktive Verbindung zum MySQL-Server besteht(*). Für den MySQL-Server generiert MySQL-Workbench (**) zum Beispiel folgendes Script:
Delphi-Quellcode:
Was auffällt: Hier sind die Feldnamen in accents eingeschlossen - den selben accents, die von MySQL-Autoren benutzt werden, um an der Comandozeile MySQL-Tabellen zu erstellen.
-- -----------------------------------------------------
-- Table `ContentMasterData`.`kategorien_tabelle` -- ----------------------------------------------------- DROP TABLE IF EXISTS `ContentMasterData`.`kategorien_tabelle` ; CREATE TABLE IF NOT EXISTS `ContentMasterData`.`kategorien_tabelle` ( `Kath_ID` INT UNSIGNED NOT NULL AUTO_INCREMENT, `Kategorie` VARCHAR(120) CHARACTER SET 'latin1' NOT NULL, PRIMARY KEY (`Kath_ID`)) ENGINE = InnoDB AUTO_INCREMENT = 3 DEFAULT CHARACTER SET = latin1; -- ----------------------------------------------------- -- Table `ContentMasterData`.`bildtabelle` -- ----------------------------------------------------- DROP TABLE IF EXISTS `ContentMasterData`.`bildtabelle` ; CREATE TABLE IF NOT EXISTS `ContentMasterData`.`bildtabelle` ( `idBild` INT UNSIGNED NOT NULL AUTO_INCREMENT, `Thumbnail` BLOB NULL, `Bitmap` BLOB NULL, `Jpeg` BLOB NULL, `FolderId` VARCHAR(32) NULL, PRIMARY KEY (`idBild`)) ENGINE = InnoDB DEFAULT CHARACTER SET = latin1; Im SQLite-Manual hingegen wird darauf hingewiesen, dass in SQLite einfache Hochkommas verwendet werden wie in Pascal. Allerdings muss ich zugeben, dass mir nicht bekannt ist, in welcher Form SQLite Tabellennamen erwartet. Zur Zeit kann ich das nicht nachschlagen - die Waschküche wartet.:lol: *** Gruss Delbor * Zumindest nur dann kann mit Forward- oder Reverse Engineering gearbeitet werden. ** Sorry, ich hab den Namen "MySQL Workbench daurch abgekürzt,dass ich den ersten Teil weggelassen habe. Das hätte ich gleich im ersten Thread schreiben sollen. *** PS: Heute Samstag habe ich das Manual durchsucht, aber nirgends etwas explzit zu Tabellennamen gefunden. Beispielcode hingegen steht genug da - und da nirgends Hochkommas, ausser wenn ein Wert in eine Spalte als String geschrieben werden soll:
Delphi-Quellcode:
CREATE TABLE t1 (a INT, b VARCHAR (10));
INSERT IN t1 (a, b) VALUES ('123', 456); |
AW: Doppelte durch einfache Hochkommas ersetzen
Ich versteh ehrlich gesagt nicht so recht, warum Du Dich damit so lange aufhältst.
Es dauert 2 Minuten eine Beispieltabelle mit Doppelten Anführungszeichen oder mit einfachen oder ohne in Delphi gegen ein sqlite laufen zu lassen. die Internetsuche ist eher schneller: ![]() Zitat:
Zitat:
10 Tabellen hast Du auch eben mit der Hand geschrieben. Und Du wärst schon seit Tagen dabei, Deine Anwendung zu programmieren. *Die Quotes werden in der Regel eingesetzt, um non ASCI Zeichen verwenden zu können oder auch Schlüsselwörter. Wenn Du sowieso deutsche Bezeichner verwendest, dürfte der letzte Fall ausgeschlossen sein und statt Umlauten empfiehlt sich dann die zusammengesetzte Schreibweise ae, ue, oe, ss. Also bräuchtest Du keine Quotes, sind sie vorhanden, würde es aber auch nicht stören. |
AW: Doppelte durch einfache Hochkommas ersetzen
Hi jobo
Zitat:
Gruss Delbor |
AW: Doppelte durch einfache Hochkommas ersetzen
Das sollte meinerseits absolut kein Appel sein, nichts zu lernen. ;-)
Der Gedanke ist eher: - Ein Tool soll auch wirklich helfen, also vielleicht einen Thread für das beste sqlite Modeling Tool eröffnen. (mysql tools für sqlite scheint jedenfalls nicht die beste Wahl zu sein.) - Falls Handbuch und kluge Ratschläge mal nicht erreichbar sind, tut's oft auch ein wenig ausprobieren, ist ja kein Atomkraftwerk. |
AW: Doppelte durch einfache Hochkommas ersetzen
Hi jobo
Zitat:
Gruss Delbor |
AW: Doppelte durch einfache Hochkommas ersetzen
Hab mal nachgeschaut, sieht nicht so aus, als ob sich noch jemand um die Pflege dieses Programms kümmert.
Da würde ich eher nach etwas suchen, wo es mehr Aktivitäten gibt.Bzw. gibt es ja auch von Emba/Idera entsprechende Werkzeuge. Logische und dann physikalische Modellierung mit Produkt spezifischer Syntax sollte bei Kaufsoftware natürlich kein Problem darstellen. Ich hab mir auch irgendwann mal ein Excelsheet * gebaut, was aus Tabellennamen und Feldlisten, -Typen usw. vollständige Skripte baut. Je nach Bedarf und Problemstellung kann man hier sehr effizient arbeiten. Z.B ist es in Excel besonders einfach, systematisch und flexibel Suffixe oder Präfixe in Feldnamen oder Tabellennamen einzubauen, zu ändern oder Interfaceviews zu generieren. * Ich meine natürlich Tabellenkalkulationssoftware allgemein, Excel braucht man nicht dafür. |
AW: Doppelte durch einfache Hochkommas ersetzen
Hi jobo
Zitat:
Tools, mit denen Datenbanken erstellt werden können, gibt es genügend - eines davon ist frei als Plugin für Firefox erhältlich(SQLite-Manager). Aber keines dieser Tools bietet eine Möglichkeiten á la MySQL-Workbench, DB-Modelle erstmal grafisch zu erstellen. Ich hab hier den SQLite Expert Personal auf der Platte, dessen Professional-Version eine grafische Oberfläche bieten würde, aber kostenpflichtig ist. Andrerseits hab ich mir aus dem Codeschnipsel von HolgerX ein kleines Tool gebaut, mit dem ich einen SQL-String in das richtige Format bringen kann. Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz