Laden...

Suchbegriff - alle Datensätze in Tabelle überprüfen

Erstellt von budi1602 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.756 Views
B
budi1602 Themenstarter:in
204 Beiträge seit 2006
vor 17 Jahren
Suchbegriff - alle Datensätze in Tabelle überprüfen

Hallo!

Hab folgendes Problem:

Ich habe eine Kundentabelle (KundenNr, Name, Ort, ...).
Da sich mein Auftraggeber nicht alle KundenNr merken kann und es natürlich auch vorkommen kann, dass mehrer Kunden den gleichen Namen haben, möchte ich eine Art Kundensuchformular machen.

Es soll zB der Name und der Ort in eine TextBox eingegeben werden - "Mustername Musterort"
Jetzt soll meine Kundentabelle auf diese zwei Kriterien durchsucht werden.
Ich weiß, dass es wahrscheinlich besser wäre, eine eigene TextBox für den Suchort und eine eigene TextBox für den Suchnamen zu erstellen, aber leider hat mein Auftraggeber andere Vorstellungen.

Gibt es einen leichten Weg, dass umzusetzen?

mfg
budi16002

Gelöschter Account
vor 17 Jahren

kundentabelle ist in einer sql-datenbank?

erstmal musst du den string in der textbox splitten


string[] suchinfo = new string[2]
suchinfo = textbox1.Text.Split(' ');

(in diesem fall muss es eindeutig sein ob man zuerst kundennamen oder zuerst kundenort angibt

anschließend ist es wichtig ob eine datenbank die daten beherbergt oder nicht

B
budi1602 Themenstarter:in
204 Beiträge seit 2006
vor 17 Jahren

danke für die schnelle antwort!

Danke, das mit dem splitten hab ich schon gewusst.

Ja, die Kundentabelle ist in einer Datenbank!

Andere Frage:
Eigentlich möchte ich, dass der Suchende verschieden Suchbegriffe eingeben kann, ob das jetzt Postleitzahl, Name oder Ort ist, sollte egal sein.
Alle Datensätze sollten dann nach diesen Suchbegriffen durchsucht werden.

Es sollte hierbei aber egal sein in welcher reihenfolge die daten in die TextBox eingetragen werden. Sonst könnte ich ja eine einfache SQL-Like abfrage machen.

Gibt es dazu eine Lösungsmöglichketi?

mfg
budi1602

Gelöschter Account
vor 17 Jahren

also ich sehe nur die möglichkeit das du die eingegebenen werte splittest und dann die abfrage ca so gestaltest:

eingabe: Franz Mustermann München

statement:

Select * from customers where 
Firstname = Franz OR
Lastname = Franz OR
Address1 = Franz OR
Firstname = Mustermann OR
Lastname = Mustermann OR
Address1 = Mustermann OR
Firstname = MünchenOR
Lastname = MünchenOR
Address1 = MünchenOR

und dann machst du im dataset eine sortierung mit der anzahl der treffer die auf deine suchanfrage passen

schematisch würde es dann so aussehen:
if rowx contains "Franz" --> rowindex--
if rowx contains "Mustermann" --> rowindex--
if rowx contains "München" --> rowindex--

wenns was einfacheres gibt dann lass ich mich gerne belehren
aber intuitiv hätte ich jetzt das problem so gelöst

D
115 Beiträge seit 2006
vor 17 Jahren

Was hälst du denn von einer Volltextsuche über die Spalten, die du durchsuchen willst?

Artikel bei MS

B
budi1602 Themenstarter:in
204 Beiträge seit 2006
vor 17 Jahren

Vielen Dank für die schnellen Antworten!

Habe den Lösungsvorschlag von JAck30lena verwirklichen können! Funktioniert super, hab das ganze auch soweit verfeinert, dass man die Datenfelder der Datenbank nicht händisch eingeben muss.

Die Reihung wäre allerdings noch interessant. Die konnte ich leider nicht nachvollziehen. Könntest du mir das bitte etwas näher erläutern?

mfg
budi1602

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo budi1602,

die Reihenfolge bei einer ODER-Verknüpfung? Nun mal schnell nachgedacht...

Antwort: Die spielt natürlich keine Rolle 😉

Oder welche Reihenfolge meinst Du denn?

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

Gelöschter Account
vor 17 Jahren

das funktioniert so:

du hast eine tabelle
diese hat rows
die rows haben einen index der nullbasiert ist
der index beginnt mit 0 ganz oben

jetzt hast du mehrere möglichkeiten die spalten mit den meisten treffern nach oben zu bekommen.

unperformant aber einfach ist die möglichkeit das du:

schleife(anzahl der rows * anzahl der rows)
{
if rowx contains "Franz" --> vertausche spalte mit der darüberliegenden
if rowx contains "Mustermann" --> vertausche spalte mit der darüberliegenden
if rowx contains "München" --> vertausche spalte mit der darüberliegenden

x++
}