vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Datenbanken
Re: Suchen mit Leerzeichen über mehrere Spalten 
Autor: Preisser
Datum: 23.08.11 18:44

Hallo,

du könntest dir z.B. eine Funktion machen, der du ein Array aus Spalten sowie ein Array aus Suchwörtern übergibst (sowie einen Parameter, der besimmt, ob alle Wörter vorkommen müssen oder nur eins davon), und diese generiert dann den SQL-String. z.B.
Public Function GenerateSQLSearchString(Columns() As String, Words() As String, _
  AlleWorterVorkommen As Boolean) As String
    Dim sqlString As String
    Dim i As Long, j As Long
    For i = 0 To UBound(Words)
        If Len(Words(i)) > 0 Then 'Wenn das Wort leer ist, keinen Ausdruck 
        ' angeben
            If i > 0 Then sqlString = sqlString & _
                IIf(AlleWorterVorkommen, " AND ", " OR ")
            sqlString = sqlString & "("
            For j = 0 To UBound(Columns)
                If j > 0 Then sqlString = sqlString & " OR "
                sqlString = sqlString & Columns(j) & " LIKE '%" + Words(i) + _
                  "%'"
            Next
            sqlString = sqlString & ")"
        End If
    Next
    GenerateSQLSearchString = sqlString
End Function
Man könnte sie dann z.B. so aufrufen:
Dim Spalten() As String
ReDim Spalten(2)
Spalten(0) = "Spalte1"
Spalten(1) = "Spalte2"
Spalten(2) = "Spalte3"
 
Dim Suchstring As String
Suchstring = "Wort1 Wort2"
Dim Woerter() As String
Woerter = Split(Suchstring, " ") 'Suchstring über Leerzeichen in String-Array 
' splitten
MsgBox GenerateSQLSearchString(Spalten, Woerter, False)
(der Suchstring wäre dann natürlich später variabel). Dann generiert die Funktion einen entsprechenden SQL-Ausdruck, welcher an den WHERE-Teil eines SQL-Strings angehängt werden kann.

Diese Funktion demonstriert jetzt nur das Prinzip und sollte so natürlich keinesfalls in fertigen Programmen so verwendet werden, da:
- LIKE-Spezialzeichen nicht espaced werden (und der Anwender dadurch selbst LIKE-Operatoren verwenden kann (was die Ergebnisse verfälscht), außer natürlich dies ist ausdrücklich so gewollt).
- Parameter einfach in den SQL String eingefügt werden, was SQL Injection ermöglicht
- der Fall nicht gehandhabt wird, wenn nur leere Wörter (mit 0 Zeichen) oder ein leeres Array vorliegt, da dies einen leeren String zurückgibt. Man könnte aber beim Aufruf der Funktion testen, ob die Länge des Strings 0 ist, und wenn ja, z.b. den WHERE-Parameter weglassen (damit nicht etwas ungültiges wie "SELECT .. FROM Tabelle WHERE;" generiert wird).

Des Weiteren könnte man die Anzahl der Wörter, die man zur Suche zulässt, beschränken, um nicht einen zu langen SQL-Ausdruck zu produzieren.

Da bei einer Datenbank standardmäßig ein Stringvergleich verwendet wird, der Groß-Kleinschreibung entsprechend verarbeitet, wird auch eine Spalte mit "TeSt" bei der Suche nach "test" gefunden, ohne dass man die Strings vorher normalisiert.

Beitrag wurde zuletzt am 23.08.11 um 19:01:22 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Suchen mit Leerzeichen über mehrere Spalten1.520Callimero23.08.11 16:06
Re: Suchen mit Leerzeichen über mehrere Spalten913wb-soft23.08.11 16:24
Re: Suchen mit Leerzeichen über mehrere Spalten897Callimero23.08.11 17:08
Re: Suchen mit Leerzeichen über mehrere Spalten890Callimero23.08.11 16:37
Re: Suchen mit Leerzeichen über mehrere Spalten894Preisser23.08.11 17:36
Re: Suchen mit Leerzeichen über mehrere Spalten1.015Callimero23.08.11 18:01
Re: Suchen mit Leerzeichen über mehrere Spalten927Preisser23.08.11 18:08
Re: Suchen mit Leerzeichen über mehrere Spalten872Callimero23.08.11 18:27
Re: Suchen mit Leerzeichen über mehrere Spalten1.073Preisser23.08.11 18:44
Re: Suchen mit Leerzeichen über mehrere Spalten872Callimero23.08.11 19:01
Re: Suchen mit Leerzeichen über mehrere Spalten900Callimero23.08.11 19:49
Re: Suchen mit Leerzeichen über mehrere Spalten990wb-soft23.08.11 19:48
Re: Suchen mit Leerzeichen über mehrere Spalten985Callimero23.08.11 19:55

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel