Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - Suchfunktion einbauen (https://www.delphipraxis.net/97416-sql-suchfunktion-einbauen.html)

geLLi 10. Aug 2007 08:38

Datenbank: SQL • Version: 2000 • Zugriff über: ADO

SQL - Suchfunktion einbauen
 
Hallo,

ich hab mal eine Frage.

Vorab, ich bin neu in der Delphi-Programmierung.


Ich hab bereits über ein AccessFormular eine Abfrage zum SQL (2000) Server erstellt. Klappt alles.

Mein Problem ist jetzt, das ich das ganze in Delphi programmieren musse (ohne Access)!


Ich habe ein Suchfeld, einen Suchbutton und eine Suchanzeigebox.

Wenn ein Suchbegriff ins Suchfeld eingegeben wird und auf den Suchbutton geklickt wird, soll in der Suchanzeigebox alle passenden Ergebnisse (Spalte "SuchSchlagwort" in der SQL-Tabelle) angezeigt werden.
Wenn man in der Suchanzeigebox doppelt auf den gefundenen Suchbegriff klickt, soll er zu dem Datensatz springen.
Außerdem soll er den eingegebenen Suchbegriff in einer anderen SQL-Tabelle speichern, um eine Art "TOP10" der Suchbegriffe zu erstellen (das wäre ersteinmal nicht so wichtig!)

Das Ganze ist ein wenig schwer zu erklären.

Ich kopiere den VB-Code mal hinten dran, vielleicht kann damit einer was anfangen!

Zitat:

Private Sub Befehl26_Click()
DoCmd.Requery "sucheanzeige"

Dim strSQL As String

Me!sucheanzeige.Requery
' begriff speicher, wenn suche erfolgreich war und mind. ein treffer gelanded wurde
'If CBool(Me!sucheanzeige.ListCount <= 0) Then Exit Sub
strSQL = "SELECT Count(*) " & _
"FROM dbo_Suchwerte " & _
"WHERE SuchSchlagwort = '" & Me!suchtxt & "'"
If CurrentDb.OpenRecordset(strSQL)(0) = 0 Then
strSQL = "INSERT INTO dbo_Suchwerte " & _
"( SuchSchlagwort, Suchanzahl ) " & _
"VALUES ('" & Me!suchtxt & "', 1 )"
Else
strSQL = "UPDATE dbo_Suchwerte " & _
"SET Suchanzahl = Suchanzahl + 1 " & _
"WHERE SuchSchlagwort = '" & Me!suchtxt & "'"
End If
CurrentDb.Execute strSQL, 128 'dbFailOnError

Me!top10.Requery
End Sub
Bin für jeden kleinen Tipp dankbar!
Hoffe konnte das Problem einigermaßen klar darstellen!

Vielen Dank im Vorraus!

Viele Grüße.
geLLi

marabu 10. Aug 2007 09:09

Re: SQL - Suchfunktion einbauen
 
Herzlich willkommen in der Delphi-PRAXiS, geLLi.

Du kannst dein Access-Formular in Delphi nachbilden. Ziehe dir eine ADOConnection auf dein Formular und versuche eine Verbindung zum SQL-Server aufzubauen indem du im Object Inspector (oder per Doppelklick auf die Komponente) die Eigenschaften der Verbindung setzt. Du kannst den Erfolg deiner Bemühungen zur Entwurfszeit prüfen indem du Connected auf True setzt.

Freundliche Grüße vom marabu

geLLi 10. Aug 2007 09:31

Re: SQL - Suchfunktion einbauen
 
Hallo,

Danke für deine schnelle Antwort.

Also das Formular hab ich mir schon komplett nachgebaut und auch schon die ADO-Verbidung hergestellt.

Er zeigt mir auch die Datensätze und alles an! klappt!


ich möchte jetzt nur die Suchfunktion einbauen + via Doppelklick in der SuchergebnisBox direkt auf den entsprechenden Datensatz springen.

Mit dem +1 zählen wär ersteinmal nicht all zu wichtig!

Viele Grüße!

marabu 10. Aug 2007 12:59

Re: SQL - Suchfunktion einbauen
 
Hallo,

die Suchfunktion kannst du eigentlich analog zum Access-Formular programmieren. Irgendwo wirst du eine Query absetzen wollen, bei der du den Suchbegriff als Parameter vorsehen solltest. Wenn sich dein SELECT-Statement abgesehen vom Suchbegriff nie ändert, dann kannst due es gleich im Object Inspector eintragen:

SQL-Code:
SELECT * FROM tabelle WHERE schlagwort = :schlagwort
Eventuell hast du in deiner Access-Lösung bereits über eine unscharfe Suche - LIKE bzw UPPER() - nachgedacht.

Das Ergebnis zeigst du in einer Box? Dann hast du nur eine Spalte im Result-Set? Einen mehrspaltigen Result-Set könntest du in einem DBGrid anzeigen. Dieses Grid hat ScrollBars und die Positionierung auf einen bestimmten Datensatz wäre kein Problem.

Vielleicht kannst du die Rahmenbedingungen (Datenmodell, verwendete Komponenten) noch etwas genauer beschreiben? Oft werden bei der Verschlagwortung mittels Thesaurus M:N Beziehungen zu einem Schlagwort-Katalog aufgebaut oder bei freier Verschlagwortung eine 1:N Beziehung. Oder es wird gar nicht normalisiert und die Schlagworte stehen in einem TEXT-Feld in der Form *Schlagwort1*Schlagwort2*.

Freundliche Grüße

geLLi 13. Aug 2007 07:42

Re: SQL - Suchfunktion einbauen
 
Hallo,

super, vielen Dank!


hat geklappt!

Viele Grüße,
geLLi


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz