![]() |
Suchfunktion - Alter
Liste der Anhänge anzeigen (Anzahl: 1)
habe folgendes problem...
ich möchte bei meinem fußball datenbankprogramm eine such funktion einbauen mit der man mit dem Alter die Spieler eingrenzen kann! habe mir das so vorgestellt, dass ich ein edit Feld Alter habe und darunter eine Radio Group wo man zwischen maximal und mindestens auswählen kann. das problem ist nur, dass ich in der datenbank alle spieler mit ganzem Geburtsdatum z.b. 21.03.1982 als string eingegeben habe. wie kann ich das jetzt machen? habe mir gedacht irgendwie mit copy das jahr rausschneiden.... bitte helft mir
Delphi-Quellcode:
procedure TFormProgramm.BitBtn3Click(Sender: TObject);
var sqlstr,erg,source,target:string; rechnung:integer; begin if Cbsuchealter.Checked then Case rgalter.ItemIndex of 0: begin source:=QSuche['Geburtsdatum']; Target := Copy(Source, 7, 4); rechnung:=2009-strtoint(EdsucheAlter.Text); QSuche['Geburtsdatum']:=target; sqlstr := sqlstr+'where Geburtsdatum > rechnung and'; end; 1: begin source:=QSuche['Geburtsdatum']; Target := Copy(Source, 7, 4); rechnung:=2009-strtoint(EdsucheAlter.Text); QSuche['Geburtsdatum']:=target; sqlstr := sqlstr+'where Geburtsdatum < rechnung and'; end; end; was wäre eure lösung?? |
Re: Suchfunktion - Alter
Zitat:
|
Re: Suchfunktion - Alter
Hallo delphiluc,
das kommt darauf an was Du unter "Alter" verstehen willst. Zum einen könntest Du behaupten Alter=50 bedeutet alle die 1959 geboren sind. Zum anderen könntest Du das Alter auf das Tagesdatum beziehen, also wer vor dem 1. April 1959 geboren wurde und nach dem 1. April 1958, der ist 50 Jahre alt. Oder Du beziehst das auf Monate, oder jede beliebige Unschärfe die Dir gefällt. Ich pers. halte von einer "Alterabfrage" nicht viel, da, gibt man das Alter in Jahren an, man eine Unschärfe von 365 Tagen oder 12 Monaten hat. Da schon lieber mit dem Geburtsdatum arbeiten, da dann jeder das entsprechende "Alter" in das Datum hineininterpretieren kann. Zitat:
Grüße K-H |
Re: Suchfunktion - Alter
wir reden von paradox von delphi4!
es hindert mich dass ich nicht 272 datensätze umschreiben möchte und ich das geburtsdatum erhalten möchte! eine leichtere lösung wäre natürlich wenn ich einfach nach Geburtsjahr suche (obwohl da muss ich auch den string zerschneiden). ich möchte es aber anwenderfreundlicher mit alter machen. ich hoffe du verstehst jetzt was ich meine?! |
Re: Suchfunktion - Alter
hi p80286!
danke für deinen vorschlag! könntest du noch ein bisschen genauer schildern wie ich das machen kann ohne die ganzen datensätze zu ändern? |
Re: Suchfunktion - Alter
Hallo,
es sind einige wenige Schritte; das geht auch mit dem "internen" SQL des Datenbank-Explorers von Delphi (oder was auch immer man als Benutzeroberfläche verwenden will). 1. Füge ein neues Feld ein, das als Datum definiert wird. 2. Führe einen einzigen Befehl aus (ungefähr so wie dieser):
SQL-Code:
3. Kontrolliere die Feldinhalte.
UPDATE MyTable
SET NeuesFeld = CAST(AltesFeld AS DATE) 4. Lösche das alte Feld. Unter Umständen muss der Inhalt von "AltesFeld" noch genauer konvertiert werden, z.B. mit Substring. Aber grundsätzlich kann LocalSql das direkt erledigen; und die "alten" Delphi-Versionen haben auch eine entsprechende Hilfe zur BDE. Gruß Jürgen |
Re: Suchfunktion - Alter
Hallo delphiluc,
ich vermute Du hast mich falsch verstanden, ein Datum als String ist bis auf wenige Ausnahmen nur eine Notlösung! Wenn Du das bisher bestehende Datum wirklich so eingegeben hast, wie Du es beschrieben hast, dann mach es mit substr falls Paradox so etwas kennt. Ansonsten unter delphi mit
Delphi-Quellcode:
Aber wenn Du schon dabei bist, dann nimm doch gleich ein "richtiges" Datumsformat (weiß leider nicht was es unter Paradox gibt).
DatumNeu:=copy(Datum,7,4)+copy(datum,4,2)+copy(datum,1,2);
Die 272 Datensätze werden sich doch irgendwie als Excel-File oder ASCII-Delimited-File oder auslagern lassen. Oder noch besser, Du legst eine neue "Datumsspalte" an, konvertierst das "Stringdatum" hinein und löschst dann die "StringDatumSpalte". Gruß K-H edit: Da war Jürgen schneller aber getippt ist getippt. Schreibfehler |
Re: Suchfunktion - Alter
@Jürgen: Ich finde auch, dass es besser ist, fehlerhaftes DB-Design zu korrigieren als die Zeit mit Workarounds zu verschwenden :thumb:.
|
Re: Suchfunktion - Alter
blöde frage jürgen....
aber wo muss ich diesen sql code hineinschreiben?? |
Re: Suchfunktion - Alter
lol...bin grade draugekommen dass ich das geburtsdatum eh als Datumstyp und nicht als string konfiguriert habe!
wie mache ich das jetzt trotzdem weiter mit der alterssuche? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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