AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrzeiligen Text zuweisen incl. '

Ein Thema von norwegen60 · begonnen am 21. Sep 2020 · letzter Beitrag vom 21. Sep 2020
Antwort Antwort
Seite 1 von 3  1 23      
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#1

Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 08:57
In C# gibt es die Möglichkeit, mehrzeiligen Text so zuzuweisen
Code:
            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
         ");
Diese Zuweisung hat den Vorteil, dass ich den kompletten Textblock kopieren und 1:1 im MsSQL-Manager testen kann

In Delphi kenn ich nur so was
Delphi-Quellcode:
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');
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.

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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 09:12
Mehrzeilige String-Konstanten gibt es in Delphi leider nicht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 09:30
Moin...
eine andere Möglichkeit wäre das speichern der SQL außerhalb vom QT...in Ressourcen. https://www.delphipraxis.net/49505-s...einbinden.html

Tool:
PS: Ich liebe es. https://www.delphipraxis.net/190316-...e-creator.html

Vorteile:
* Das SQL ist eine Datei, die im bevorzugten Editor testbar ist. (Parameter müßten ggf. werttechnisch ergänzt werden )
* 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;
Miniaturansicht angehängter Grafiken
sql.jpg  

Geändert von haentschman (21. Sep 2020 um 09:49 Uhr)
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 09:34
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
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
379 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 09:47
Dann wäre haentschmans Ressourcenlösung genau das richtige für Dich
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 09:48
Zitat:
Ich könnte es aus einen Textfile auslesen, aber das wäre bei den Kunden verpönt.
Verstehe ich. Das versteht sich aus Gründen der SQL Injection! Die SQL sind bei Ressourcen einkompiliert.
  Mit Zitat antworten Zitat
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#7

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 10:10
OK, zu schnell geantwortet. Ich hatte nicht bedacht, dass Ressourcen ja kompiliert sind. Damit wäre es eine Option.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#8

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 10:24
Delphi-Quellcode:
     'create table Tabelle1 '//
    +'(ID int not null Identity (1,1), '//
    +'Datum Datetime, '//
    +'Result varchar(15), '//
    +'Info varchar(50) null) '//
    +'on [primary] '//
Sowas wäre vielleicht noch am wenigsten schmerzhaft, man kann die überflüssigen
+' und '// leichter finden und rauslöschen.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#9

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 10:31
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:
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;
Ergebnis per Copy&Paste an die passende Stelle im Quelltext einfügen.

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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#10

AW: Mehrzeiligen Text zuweisen incl. '

  Alt 21. Sep 2020, 10:35
Zitat:
Ein Memo, in das Du das getestete SQL per Copy&Paste reinpappst.
...es geht eher um das testen des SQL in dem DB Editor, was im QT schon mit .Add( steht...quasi umgekehrt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz