AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL über Memo und edit text
Thema durchsuchen
Ansicht
Themen-Optionen

SQL über Memo und edit text

Ein Thema von Tommi1966 · begonnen am 16. Apr 2020 · letzter Beitrag vom 18. Apr 2020
Antwort Antwort
Seite 1 von 3  1 23      
Tommi1966

Registriert seit: 9. Jun 2019
12 Beiträge
 
#1

SQL über Memo und edit text

  Alt 16. Apr 2020, 10:52
Datenbank: SQLite3 • Version: 3 • Zugriff über: zconnect
Hallo zusammen,
folgendes Problem beschäftigt mich
auf einer Form habe ich folgende Komponenten
Memo1,edit1,edit2,edit3,Button1

Wie kann man nun folgendes realisieren
memo1 wird zur Laufzeit rein geschrieben
edit1.text wird zur Laufzeit mit z.B. Test1 gefüllt
edit2.text, edit3.text ebenso

in dem Memo möchte ich nun folgendes eingeben ( die select soll Variable sein )

select * from Tabelle where (Feld1=edit1.text and Feld2=edit2.text and Feld3=edit3.text) or (Feld1=edit2.text)

wie muss ich in dem Memo die edit angeben, so das wenn ich auf den Button klicke folgendes erscheint

select * from Tabelle where (Feld1=Test1 and Feld2=Test2 and Feld3=Test3) or (Feld1=Test2)

Vorab schon mal vielen Dank für eure Mühe
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 11:03
Das Einfachste (wenn auch nicht das Eleganteste oder Performanteste) wäre wohl eine Stringersetzung mit StringReplace.
Memo1.Text := StringReplace(Memo1.Text, 'edit1.text', '' + Edit1.Text + '', [rfReplaceAll, rfIgnoreCase]);
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 11:51
Zitat:
Das Einfachste
wären Parameter.

Delphi-Quellcode:
SQLKomponente.SQL.Text := 'select * from Tabelle where (Feld1=:edit1 and Feld2=:edit2 and Feld3=:edit3) or (Feld1=:edit2)';
SQLKomponente.ParamByName('edit1').Value := Edit1.Text;
Und wenn man das nicht nur ausführen, sondern wirklich den SQL-Text haben will,
dann gibt es bei so mancher Komponente oft auch eine Funktion, wo man sich den SQL-Text so zurückgeben lassen kann, dass dort die Makros und Parameter durch das Zugewiesene ersetzt wurden.
$2B or not $2B
  Mit Zitat antworten Zitat
Tommi1966

Registriert seit: 9. Jun 2019
12 Beiträge
 
#4

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 11:58
Ich möchte euch danken

habe die Antwort von DeddyH in meinem Programm schon verarbeitet und es dient meinem Zweck voll und ganz

den Vorschlag von himitsu werde ich auch noch probieren

das Thema hätte sich so mit erledigt

der Programmiercode sieht nun so aus

text1:=query3.FieldByName('repmemo').AsString;
text1:=StringReplace(text1, 'edit8.text', '' + label25.Caption + '' , [rfReplaceAll, rfIgnoreCase]);
text1:=StringReplace(text1, 'edit9.text', '' + label26.caption + '' , [rfReplaceAll, rfIgnoreCase]);
text1:=StringReplace(text1, 'edit3.text', '' + Edit3.Text + '' , [rfReplaceAll, rfIgnoreCase]);
try
query1.active:=false;
query1.sql.clear;
query1.sql.add(text1);
query1.sql.text:=text1;
query1.active:=true;
except
on e: Exception do begin
MessageDLG('Fehler!'+#13#10+'Keine Auswahldaten vorgegeben !'+#13#10+e.message,mtError,[mbOk],0);
exit;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 12:20
Zitat:
'' + xxx + ''
Wer böse ist, der verwendet zumindest Delphi-Referenz durchsuchenQuotedStr, auch wenn das eigentlich die Maskierung von Delphi-Stings ist und rein garnichts mit SQL zu tun hat, welches z.B. auch ein \ kennt. (aber in unzähligen Deplhi-SQL-Tutorials wird das Verbrechen begangen diese Funktion zu verwenden, drum machen das zuviele)

Irgendwo in den Units der Query-Komponenten sollte sich aber eine Funktion verstecken, welche SQL-Namen und SQL-Strings richtig maskieren kann.
(meistens auch mit "Quote" oder "Escape" im Namen)


PS: [DELPHI]...[/DELPHI]
$2B or not $2B

Geändert von himitsu (16. Apr 2020 um 12:24 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 12:42
'' + label25.Caption + ''

Wieso funktioniert das? Hätte sowas erwartet:

'''' + label25.Caption + ''''
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 13:56
Mmm "'+irgendwas+'" wäre meine wahl.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#8

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 14:11
Damit erhälst du dann aber einen String der '+irgendwas+' enthält

Will man in 'nem String ein Hochkomma haben, so muss man zwei Hochkommas schreiben.

Will man nun am Anfang eines Strings ein Hochkomma haben, muss man drei Hochkommas schreiben.

Soll ein String aus einem Hochkomma bestehen, muss man vier Hochkommas schreiben.

Meiner Meinung nach ist Jumpys Erwartung richtig.

[edit]
Wenn jedoch in label25.Caption und label26.Caption sowie Edit3.Text der Inhalt bereits in Hochkommata steht, dürfte es auch funktionieren.

In dem Falle wären jedoch das '' + bzw. das + '' entbehrlich.

Geändert von Delphi.Narium (16. Apr 2020 um 14:34 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 14:59
Die Hochkommata (egal welche jetzt) wären jedoch falsch, wenn das entsprechende DB Feld kein Text wäre, und in dem Edit z.B. eine Zahl steht. Diese Unsicherheit allein würde mich schon dazu bewegen, das wie bereits vorgeschlagen mit Parametern zu machen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: SQL über Memo und edit text

  Alt 16. Apr 2020, 15:09
'' + label25.Caption + ''

Wieso funktioniert das? Hätte sowas erwartet:

'''' + label25.Caption + ''''
Stimmt.

Aber wie gesagt, Parameter oder zumindestens eine Escape-Funktion, die das richtig macht.
$2B or not $2B
  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 04:31 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