![]() |
Mehrzeiligen Text zuweisen incl. '
In C# gibt es die Möglichkeit, mehrzeiligen Text so zuzuweisen
Code:
Diese Zuweisung hat den Vorteil, dass ich den kompletten Textblock kopieren und 1:1 im MsSQL-Manager testen kann
this.AddCmd(@"
if not exists(select * from information_schema.tables where table_name = 'Tabelle1') begin create table Tabelle1 (ID int not null Identity (1,1), Datum Datetime, Result varchar(15), Info varchar(50) null) on [primary] end "); In Delphi kenn ich nur so was
Delphi-Quellcode:
Entsprechend mühsam ist es den eigentlich relevanten SQL-Text (der auch umfangreicher sein kann) im SQL-Manager zu testen. Zumal auch die doppelten ''Tabelle1'' bei Strings geändert werden müssen.
quQuery.SQL.Text := 'if not exists(select * from information_schema.tables where table_name = ''Tabelle1'')';
quQuery.SQL.Add('begin'); quQuery.SQL.Add(' create table Tabelle1'); quQuery.SQL.Add(' (ID int not null Identity (1,1),'); quQuery.SQL.Add(' Datum Datetime,'); quQuery.SQL.Add(' Result varchar(15),'); quQuery.SQL.Add(' Info varchar(50) null)'); quQuery.SQL.Add(' on [primary]'); quQuery.SQL.Add('end'); Hat jemand eine Idee, wie ich den Text ähnlich wie bei C# als ein Block zuweisen kann? Direkt im quQuery-Editor kann ich es nicht zuweisen, da es viele solcher SQL's hintereinander geben kann. Vielen Dank im Voraus |
AW: Mehrzeiligen Text zuweisen incl. '
Mehrzeilige String-Konstanten gibt es in Delphi leider nicht.
|
AW: Mehrzeiligen Text zuweisen incl. '
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...:P
eine andere Möglichkeit wäre das speichern der SQL außerhalb vom QT...in Ressourcen. ![]() Tool: PS: Ich liebe es. :drunken: ![]() Vorteile: * Das SQL ist eine Datei, die im bevorzugten Editor testbar ist. :thumb: (Parameter müßten ggf. werttechnisch ergänzt werden :wink:) * Alle SQL an einem Platz im Dateisystem und nicht über den QT oder DPR verteilt. QT:
Delphi-Quellcode:
function TDatabaseBase.GetSQLByName(SQLName: string): string;
var SQLStream: TResourceStream; SQLStrings: TStringList; SQLStringsDecrypt: TStringList; begin Result := ''; SQLStrings := TStringList.Create; try SQLStringsDecrypt := TStringList.Create; try SQLStream := TResourceStream.Create(HInstance, SQLName, PWideChar(conDatabaseResourceGroupString)); // MSSQL2012 z.B. entsprechend des Ressourcennamens den du vergeben hast try try SQLStrings.LoadFromStream(SQLStream); SQLStringsDecrypt.Text := TToolsCrypt.Decrypt(SQLStrings.Text, conKey); // nur bei verschlüsseltem SQL nötig Result := SQLStringsDecrypt.Text; except Result := ''; end; finally SQLStream.Free; end; finally SQLStringsDecrypt.Free; end; finally SQLStrings.Free; end; end; ... procedure TDatabase.FillList(List: TBlubbFieldList; TableName: string); var I: Integer; Qry: TFDQuery; Field: TBlubbField; begin Qry := CreateQuery; try Qry.SQL.Text := Format(GetSQLByName('TABLE_FIELDLIST'), [TableName]); Qry.Open; if not Qry.Eof then begin List.Clear; for I := 0 to Qry.Fields.Count - 1 do begin Field := TBlubbField.Create; Field.FieldIndex := I; Field.FieldName := Qry.Fields[I].FieldName; Field.Fieldype := Qry.Fields[I].DataType; List.Add(Field); end; end; finally Qry.Free; end; end; |
AW: Mehrzeiligen Text zuweisen incl. '
Gerade hatte ich geschrieben:
Das habe ich befürchtet. Ich hatte gehofft, es gibt irgendeinen Trick. Ich könnte es aus einen Textfile auslesen, aber das wäre bei den Kunden verpönt. Das gilt natürlich auch für html. Es wäre vom Kunden änderbar |
AW: Mehrzeiligen Text zuweisen incl. '
Dann wäre haentschmans Ressourcenlösung genau das richtige für Dich
|
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
|
AW: Mehrzeiligen Text zuweisen incl. '
OK, zu schnell geantwortet. Ich hatte nicht bedacht, dass Ressourcen ja kompiliert sind. Damit wäre es eine Option.
|
AW: Mehrzeiligen Text zuweisen incl. '
Delphi-Quellcode:
Sowas wäre vielleicht noch am wenigsten schmerzhaft, man kann die überflüssigen
'create table Tabelle1 '//
+'(ID int not null Identity (1,1), '// +'Datum Datetime, '// +'Result varchar(15), '// +'Info varchar(50) null) '// +'on [primary] '// +' und '// leichter finden und rauslöschen. |
AW: Mehrzeiligen Text zuweisen incl. '
Tool schreiben:
Ein Memo, in das Du das getestete SQL per Copy&Paste reinpappst. Zweites Memo für die Ausgabe. Ein Edit für den Namen der Query im Quelltext. Eine Button für 'ne Routine (sinngemäß) dieser Art:
Delphi-Quellcode:
Ergebnis per Copy&Paste an die passende Stelle im Quelltext einfügen.
Memo1.Lines.Clear;
Memo1.PasteFromClipboard; Memo2.Lines.Clear; Memo2.Lines.Add(Format('%s.SQL.Clear;',[edQueryName.Text])); for i := 0 to Memo1.Lines.Count - 1 do Memo2.Lines.Add(Format('%s.SQL.Add(%s);',[edQueryName.Text,QuotedStr(Memo1.Lines[i])])); Memo2.SelectAll; Memo2.CopyToClipboard; Hab' sowas vor Jahren mal für 'nen ähnlichen "Bedarf" in 'ner vollkommen anderen Entwicklungsumgebung benötigt. Hat wunderbar geklappt und sehr viel Schreiberei erspart. |
AW: Mehrzeiligen Text zuweisen incl. '
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:52 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 by Thomas Breitkreuz