AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL - Anweisung - Kommatrennung
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Anweisung - Kommatrennung

Ein Thema von MasterChief_88 · begonnen am 26. Jan 2010 · letzter Beitrag vom 29. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
MasterChief_88
(Gast)

n/a Beiträge
 
#1

SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 15:44
Hi!

also hab ne Frage zu SQL:

ich möchte aus einer Tabelle nicht alle Datensätze, sondern nur ganz bestimmte haben.
Die ganz bestimmten Datensätze liegen in einer Stringlist (also der KEY zu jedem Datensatz).
Die ganzen KEYs les in ein string ein und trenne sie durch Komma.

hier der quelltext:

Table.Sql.text := ('Select * from MYTABLE where KEY in (' + QuotedStr(stringKEY)); somit vermeide ich, dass ich *-zig "SELECT"-Anweisungen schreibe.
Ich muss aber noch irgendwie delphi sagen, das die einzelnen KEYs in dem string kommagetrennt sind.

Nun meine Frage: WIE MACHEN ICH DAS? ODER WIE IST DER BEFEHL DAZU?

danke schon mal im voraus !
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 15:54
Hallo,

Du musst wohl um jeden Wert in der Stringliste ein QuotedStr machen und nicht um die ganze Stringliste. Sofern es sich um numerische Werte handelt, ist ein QuotedStr aber nicht erforderlich, eventuell fehlte Dir nur die schließende Klammer?

Table.Sql.text := ('Select * from MYTABLE where KEY in (' + QuotedStr(stringKEY) + ')');
  Mit Zitat antworten Zitat
MasterChief_88
(Gast)

n/a Beiträge
 
#3

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:13
also wenn ich das so klammer wie du, dann erhalt ich folgende Fehlermeldung:

arithmetic exception, numeric overflow, or string truncation muss sagen, die fehlermeldung sagt mir gar nix ^^
  Mit Zitat antworten Zitat
MasterChief_88
(Gast)

n/a Beiträge
 
#4

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:17
und wenn ich das so mach:

Table.Sql.text := ('Select * from MYTABLE where KEY in (' + stringKEY + ')' ); da haut er mir raus, dass er mit dem ) nichts anfangen kann ^^
schon komisch!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:21
Verwende Parameter
Markus Kinzler
  Mit Zitat antworten Zitat
MasterChief_88
(Gast)

n/a Beiträge
 
#6

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:31
???
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:33
Hallo,

zeig' uns bitte mal den Inhalt von stringKEY, da der ja Teil des SQL's wird. Da kann noch allerlei an "Strubbel" passieren.

@mkinzler: Wie müssten hier die Parameter aussehen? Eine kommaseparierte Stringliste (unbekannter Größe) bekommt man (glaub' ich) nicht so leicht in Parameter. Grundsätzlich sollte hier sicherlich das Vorgehen nochmal überdacht werden. Und: Prinzipiell sind Parameter die bessere Alternative.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:33
Parameter funktionieren hier leider nicht.
Man muss sich daher eine Funktion schreiben:
Delphi-Quellcode:
function GetQuotedKommaString(list:TStrings):string;
begin
   Result := '';
   for i:=0 to list.count-1 do
   begin
     if i =0 then
        Result := QuotedStr(list[i])
     else
        Result := Result + ','+QuotedStr(list[i]);
   end;
end;
...
Query.Sql.Text := 'Select * from MYTABLE where KEY in (' + GetQuotedKommaString(liste_dey_keys) + ')';
Andreas
  Mit Zitat antworten Zitat
MasterChief_88
(Gast)

n/a Beiträge
 
#9

Re: SQL - Anweisung - Kommatrennung

  Alt 26. Jan 2010, 16:50
@shmia

funktioniert super!!
Genau das war meine Frage und hab ick gesucht !!!

DANK DIR!! HAT MICH WEIT NACH VORNE GEBRACHT!!
  Mit Zitat antworten Zitat
28. Jan 2010, 22:03
Dieses Thema wurde von "fkerber" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Datenbanken" verschoben.
Da es sich um eine Frage und nicht um ein Code-Snippet handelt, verschiebe ich das mal
Antwort Antwort
Seite 1 von 2  1 2      


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:50 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