Entwickler-Ecke
Datenbanken - Ist ID vorhanden
Mysterio08 - Mi 22.09.10 16:00
Titel: Ist ID vorhanden
Hallo,
ich suche eine Funktion, welche mit als Rückgabewert sagt, ob es in einer Spalte einer Datenbanktabelle einen Eintrag mit dem Wert "Beispielwert" gibt. Das ist mein Ansatz:
DataSource2.DataSet.FieldByName('AuftragID').?
Natürlich könnte ich auch einfach eine SQL-Abfrage starten und prüfen, ob die Anzahl der gefundenen Aufträge > 0 ist, aber mit einer Funktion wäre es doch schöner!
mfg.
Tankard - Mi 22.09.10 16:08
mit
select * from auftrag where aufrtagsid=XXXXXX
dann wie folgt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| dataset.open; dataset.first; if dataset.eof then begin end else |
Mysterio08 - Mi 22.09.10 16:15
Mhm, aber wie genau muss die Anweisung lauten? Ich habe ja nicht nur einen Datensatz, sondern mehrere. Ich habe deinen Ansatz, Tankard, mal so verwendet:
Delphi-Quelltext
1: 2: 3: 4:
| DataSource2.DataSet.Open; while not DataSource2.DataSet.Eof do begin DataSource2.DataSet.FieldByName('AuftragID').??? then Existiert := True end; |
Edit: Da warst du schneller ;D
Aber ich wollte mich gerade um diese SQL-Anweisung (die ja noch ausgeführt werden muss?) "drücken", weil es auch darum geht, eine neue SQL-Abfrage zu starten, um die Datensätze im TDBGrid wieder anzuzeigen, oder geht das nicht verloren?
bummi - Mi 22.09.10 16:25
Ich würde das ganze einmalig wegkapseln ....
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Procdure GetHelpQuery(Ads:Tadodataset;const SQL:String); begin Ads.Close; Ads.Commandtext := SQL; Ads.Open; end;
Function GetCountForFieldAndValue(Ads:Tadodataset;const Table,Field,Value:String):Integer; begin GetHelpQuery(Ads,'Select Count(*) from ' + Table + ' where ' + Field + '=' + Value); Result := Ads.Fields[0].asInteger; end; |
jasocul - Do 23.09.10 07:49
Wenn auf der ID ein Index liegt, wovon ich mal ausgehe, würde ich ein SQL-Abfrage machen.
Ein Locate verschiebt meines Wissens auch den Datensatzzeiger, was oft zu unerwünschten Nebeneffekten führt.
Also einfach ein weiteres Dataset ezeugen und eine passende SQL-Abfrage definieren.
mkinzler - Do 23.09.10 08:12
Alternativ zu .Locate() gäbe es noch .Lookup(), welches den Datensatzzeiger nicht verschiebt.
Mysterio08 - Fr 24.09.10 17:01
Danke, das hat mir alles geholfen, ich habe es jetzt hinbekommen!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!