Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Text Abfrage (https://www.delphipraxis.net/119823-sql-text-abfrage.html)

NickelM 1. Sep 2008 16:23

Datenbank: Paradox • Zugriff über: SQL oder Table

SQL-Text Abfrage
 
Hi alle Datenbankprogrammierer,

Gibt es eine Funktion bei der SQL oder Table, womit ich die ganze Datenbank nach einem bestimmten Text durchsuchen kann?

Es geht darum:

Wenn ich jetzt in einem Editfeld z.b. 'Heim' reinschreibe soll er die ganze Datenbank im Feld 'Stadt' nach diesem 'Heim' durchsuchen.
Egal an welcher Stelle es steht Z.b.

'Heim'

Stadt:
Weisenheim
Freinsheim
....

Ich habs jetzt so gamacht, das ich beim Edit OnChange den Text nehme und mit ner while-Schleife das Feldwert mit dem im Edit vergleiche und wenn es net stimmt, geht er alle Zeichen bis zu den jetzten durch...und dan das gleiche mit dem nächsten... und diese Einträge werden dan in ner Listbox angezeigt.
Wenn ich mir jetzt aber vorstelle so 100 Einträge, was bei der Datenbank der Fall sein kann später, dauert das sicher lange.
Ist dan net ne SQL Abfrage schneller oder irre ich da??? Und... Geht das überhaupt :gruebel:

Bernhard Geyer 1. Sep 2008 16:33

Re: SQL-Text Abfrage
 
Meinst du ganze Datenbank oder doch nur die Position in einer Spalte?

Dafür wäre der Like-Befehl da:

SQL-Code:
select * from mytabelle where Upper(myfeld) like '%HEIM%'

shmia 1. Sep 2008 16:43

Re: SQL-Text Abfrage
 
Zitat:

Zitat von NickelM
Gibt es eine Funktion bei der SQL oder Table, womit ich die ganze Datenbank nach einem bestimmten Text durchsuchen kann?

Nein, eine ganze Datenbank (*) geht sowieso nicht und bei einer ganzen Tabelle müsstest du das selber programmieren:
Alle Datensätze einer Tabelle mit SELECT * FROM ... auslesen, alle Datensätze durchwandern und jedes String/Widestring-Feld mit deinem Suchmuster vergleichen.
Oder du schreibst eine Abfrage, die speziell auf eine bestimmte Tabelle zugeschnitten ist:
SQL-Code:
SELECT * FROM Tabelle
WHERE (Feld1 like '%test%') or (Feld2 like '%test%') or ...

*) beim MS SQL Server gibt es einen Fulltext Search service

NickelM 1. Sep 2008 17:11

Re: SQL-Text Abfrage
 
Danke euch beiden. Habs grad getestet aber ich funkt irgentwie net. Zugegeben ich arbeite net viel damit aber ich brauch das für ne Unternehmer-Software

SQL-Code:
Select * From "Kunden.db"
As Kunden
where Upper("Vorname") like '%STE%'
Er nihmmt es mir an, aber er zeigt nichts an
beim Button click sag ich Close, Open.

In der datenbank steht eine Datensatz wo der Vorname Stefan ist. den müsste er reinthoretisch finden oder???

Hab Delphi 5.

Es passiert nichts.

shmia 1. Sep 2008 17:19

Re: SQL-Text Abfrage
 
Du solltest mal die gesamte WHERE-Bedingung weglöschen, nur um zu prüfen, ob dann überhaupt ein Datensatz angezeigt wird.
Und dann würde ich die doppelten Anführungszeichen um "Vorname" mal weglassen:
SQL-Code:
Select * From "Kunden.db"
As Kunden
where Upper(Vorname) like '%STE%'

alzaimar 1. Sep 2008 17:23

Re: SQL-Text Abfrage
 
1. Ist das 'Upper' wirklich notwendig?
2. Versuche anstatt '%' einmal '*'.

NickelM 1. Sep 2008 17:41

Re: SQL-Text Abfrage
 
Liste der Anhänge anzeigen (Anzahl: 1)
Funkt genauso wenig....auch net ohne Anführungszeichen und '*' stat '%'

Liegt auch net am Feld, weil ich es auch mit Nachname versucht habe und es auch ohne % oder * versucht und stat ' hab ich auch " eingesetzt macht er alles net die Tabelle die damit verbunden ist funkt auch net habe mal nene Tabellen ausschnitt als Bild von der Tabelle (VCL).

entweder bin ich zublöd oder es stimmt was net :wall:

EDIT: Ohne WHERE Werden alle angezeigt!!
Bin kru Fersehr gugen werde vermutlich erst wieder um ca. 19:30 antworten..

mkinzler 1. Sep 2008 17:45

Re: SQL-Text Abfrage
 
Versuch es mal mit dem Aliasnamen:
SQL-Code:
Select
    * 
From
    "Kunden.db" Kunden
where
    Upper(Kunden.Vorname) like '%STE%';

NickelM 1. Sep 2008 18:25

Re: SQL-Text Abfrage
 
Juhu........
es klappt danke mkinzler jetzt funkts

Auch dank an alle anderen die mir geholfen haben meiner Lösung näher zukommen :zwinker: :mrgreen:

Gruß
NickelM

hoika 1. Sep 2008 18:35

Re: SQL-Text Abfrage
 
Hallo,

SQL-Code:
Select * From Kunden
where Upper(Kunden.Vorname) like '%STE%';
das klappt bei mir.

zu spät ;(


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 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