Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Statements verknüpfen (https://www.delphipraxis.net/75675-sql-statements-verknuepfen.html)

Peter Mössinger 23. Aug 2006 15:03

Re: SQL Statements verknüpfen
 
Nur ein Verdacht:

Sind Deine Attribute vom Typ String? Wenn ja, dann solltest Du Anführungszeichen um die Werte machen.
Also wie :

Code:
WHERE Attributname = "abc" and ...
sonst denkt das Datenbanksystem, dass Du einen Satz abfragen willst, dessen Feld Attributname gleich dem Feld abc ist.

BBB 23. Aug 2006 15:23

Re: SQL Statements verknüpfen
 
Auch wenn der String von " eingeschlossen ist kommt dieser Fehler! Die Felder in der Tabelle sind alles Strings, ja.

hoika 23. Aug 2006 15:33

Re: SQL Statements verknüpfen
 
Hallo,
So richtig habe ich das erste Posting nicht verstanden ;)
aber vielleicht kannst du es ja ohne Filter machen ...

Wenn es sich immer um die gleiche Tabelle geht,
die gleichen auszugebenden Felder und nur um verschiedene WHERE-Klauseln handelt,
könnte man auch UNION benutzen.

Bsp. Tabelle Personal
PersonalId Integer
PersonalName Char(50)
PersonGroup Integer

Dann klappt folgendes

SQL-Code:
Select Personal.PersonalId, Personal.PersonalName
From Personal
Where PersonalId<100

Union

Select Personal.PersonalId, Personal.PersonalName
From Personal
Where (PersonalId>200) and (PersonalId<300)
Das ist nur ein einfaches Bsp., was natürlich viel einfacher mit einem Where gemacht werden könnte!

SQL-Code:
Select Personal.PersonalId, Personal.PersonalName
From Personal
Where PersonalId<100

Union

Select Personal.PersonalId, Personal.PersonalName
From Personal
Join PersonGroup on PersonGroup.Id=Personal.PersonGroup
Where (PersonGroup.No=5)

Im 2. Union wird der 2. Teil der Personaltabelle über einen
"komplexeren" join ermittelt

Vielleicht hilft es ja.


Heiko

BBB 23. Aug 2006 15:50

Re: SQL Statements verknüpfen
 
So ganz kapier ich nicht was Union eigentlich macht, verknüpft es die untere mit der oberen Select-Anweisung?

praktiker 23. Aug 2006 16:38

Re: SQL Statements verknüpfen
 
Hallo BBB


Versuchs doch einfach mal so

AdsQuery1.Close;
AdsQuery1.SQL.Clear;
AdsQuery1.SQL.Add('SELECT * FROM "cFileName" WHERE ');
AdsQuery1.SQL.Add('PRIMNUTZER LIKE " '+UpperCase(trim(txtPrimNutz.Text))+'% " ');

Wichtig sind die doppelten Anführungszeichen und anstatt dem Sternchen musst du in SQL das Prozentzeichen setzten.
Die Trim Funktion entfernt unötige Leerzeichen vor und hinter dem Text.



Erwin

BBB 23. Aug 2006 17:02

Re: SQL Statements verknüpfen
 
Jetzt bekomm ich dann einen Fehler,den ich auch schon mehrmals heute gesehen habe, aber mit dem ich leider nichts anfangen kann:

[...]
Either ACE could not find the specified file, or you do not have sufficent rights to access the file. Table name: cFileName'
[...]

An der Stelle hab ich dann (mehrmals) probiert anstelle von cFileName (beinhaltet: "Testtabelle.ADT"), den kompletten Pfadnamen inklusive dem Tabellennamen zu übergeben (C:\Temp\Testtabelle.ADT zB.)

Und bekomme dann

[...]
Column not found: abc1 --Location of Error in the SQL Statement is 122 (line2: column: 17)'.
[...]

An dieser Stelle würde praktisch "a" aus abc1 stehen.


//edit: Nein ich glaube dass das Zeichen 122 das "-Zeichen ist; also scheint er an dieser Stelle irgendwas ganz anderes zu erwarten!?!

//edit: Der String sieht so aus, nochmal zum Verständnis: SELECT * FROM "C:\Verzeichnis\Tabelle.Dateiendung" WHERE PRIMNUTZER LIKE "ABC1"

DGL-luke 23. Aug 2006 17:40

Re: SQL Statements verknüpfen
 
hast du es schon mit single quotes versucht? (#39: ')

BBB 23. Aug 2006 17:43

Re: SQL Statements verknüpfen
 
Funktioniert nicht, dann würde mein String irgendwo zu früh aufhören, oder wo würdest du die setzen?

mkinzler 23. Aug 2006 17:46

Re: SQL Statements verknüpfen
 
Zitat:

Zitat von BBB
Funktioniert nicht, dann würde mein String irgendwo zu früh aufhören, oder wo würdest du die setzen?

Entweder mit QuotedStr() oder als Verdoppelung.

DGL-luke 23. Aug 2006 17:50

Re: SQL Statements verknüpfen
 
LOL

Die Delphi-Syntax hat doch mit Abfragestring nichts zu tun. Du setzt ein single quote in einen string-literal, indem du #39 als char einfügst ('nicht wie '+39'raus hier') oder indem du zwei single quotes notierst ('nicht wie ''raus').

So:

abfrage := 'SELECT * FROM "C:\Verzeichnis\Tabelle.Dateiendung" WHERE PRIMNUTZER LIKE ''ABC1''";


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.
Seite 2 von 3     12 3      

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