| Autor |
Beitrag |
dm
      
Beiträge: 83
|
Verfasst: Di 04.02.03 11:52
Hallo,
ich möchte folgendes realisieren: Man kann nach einem Kriterium (z.B. Nachname in der Datenbank Personal) suchen. Jedoch nicht nur nach einem zur Zeit sondern man kann mehrere Nachnamen gleichzeitig suchen lassen.
Nun die Frage: Wie kann ich abfragen, ob ein Datensatz den ich gesucht habe vorhanden ist oder nicht ?
Ich habe eine Sucheingabemaske gebastelt, bei der der Anwender mehrere Nachnamen eingeben kann und die Daten werden dann, falls vorhanden, am BIldschirm ausgegeben.
Nun möchte ich aber bei den Nachnamen die nicht gefunden (weil nciht vorhanden) wurden eine Fehlermeldung danebenschreiben, damit der Anwender sofort sieht, WELCHE Datensätze nicht vorhanden sind.
Lange Rede kurzer Sinn: wie kann ich mit SQL überprüfen, ob ein Datensatz vorhanden ist ohne die Ausgabe (z.B. DBGrid) manuell zu durchsuchen?
Gruß Dennis
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 04.02.03 12:58
Hi!
Nun, du nimmst einfach eine Query und lässt für jeden Namen das Statement
select count(*) from Tabelle where Nachname="MeinName"
eintragen. Nach dem Öffnen der Query kannst du einfach die Anzahl der für diesen Nachnamen gefundenen Datensätze prüfen (Query.RecordCount).
Cu,
Udontknow
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Di 04.02.03 13:13
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
dm 
      
Beiträge: 83
|
Verfasst: Di 04.02.03 13:35
erstmal danke euch beiden,
werde das gleich nach der mittagspause  mal ausprobieren
|
|
dm 
      
Beiträge: 83
|
Verfasst: Di 04.02.03 13:54
udontknow :
dann weiss ich aber immernoch nicht, WELCHE datensätze nicht geunden wurden, ich kenne nur die anzahl der gesuchten nud die anzahl der gefundenden datensätze.
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 04.02.03 16:26
Hmm? Wieso? Was ist mit folgender Schlussfolgerung :
"Wenn die Anzahl der ermittelten Datensätze für den aktuellen Namen null ist, gibt es keinen Datensatz für diesen Namen."
Also, nehmen wir mal an, du hast die zu suchenden Namen in einer Listbox:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| for i:=0 to ListBox.Items.Count-1 do begin Query.SQL.Text:='Select * from tabelle where Nachname="'+ListBox.Items[i]+'"'; Query.Active:=True; if CDS.RecordCount=0 then ListBox.Items[i]:=ListBox.Items[i]+' NICHT GEFUNDEN'; Query.Active:=False; end; |
Cu,
Udontknow
Zuletzt bearbeitet von Udontknow am Di 04.02.03 16:39, insgesamt 2-mal bearbeitet
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 04.02.03 16:34
@Neojones: Dein Beispiel ist für Multi-User-Datenbanken nicht gerade zu empfehlen... Hmmm... Naja, sofern für jeden Benutzer ein eindeutiger Tabellenname genommen wird, gehts, aber elegant würde ich so etwas nicht nennen, Tabellen On-the-fly aufzubauen.
|
|
neojones
      
Beiträge: 1206
Erhaltene Danke: 1
|
Verfasst: Di 04.02.03 17:48
Wir machen das so bei einer Datenbank, auf der 4000 (!!!) User arbeiten und übergeben in einem zusätzlichen Feld immer die Session-ID. Ein Trigger am Server löscht alle nicht mehr vorhandenen Session später raus.
_________________ Ha! Es compiliert! Wir können ausliefern!
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Di 04.02.03 19:50
Also doch nicht temporär eine Tabelle anlegen und anschliessend wieder löschen, sondern einfach in einer Tabelle mit einem weiteren Feld für die Identifikation des Benutzers bzw. der Session Datensätze anlegen und löschen. So macht das Sinn, ja. 
|
|