AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Suchfunktion - Alter

Ein Thema von delphiluc · begonnen am 30. Mär 2009 · letzter Beitrag vom 30. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
delphiluc

Registriert seit: 29. Mär 2009
7 Beiträge
 
#1

Suchfunktion - Alter

  Alt 30. Mär 2009, 17:14
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??
Angehängte Dateien
Dateityp: pas unitprogramm_119.pas (12,2 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 17:25
Zitat von delphiluc:
das problem ist nur, dass ich in der datenbank alle spieler mit ganzem Geburtsdatum z.b. 21.03.1982 als string eingegeben habe.
Was hindert Dich daran, das zu ändern? Von welchem DBMS reden wir denn überhaupt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 17:30
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:
das problem ist nur, dass ich in der datenbank alle spieler mit ganzem Geburtsdatum z.b. 21.03.1982 als string eingegeben habe
Wenn schon string dann 20090401 (YYYYMMDD), dann kann man wenigstens sortieren.



Grüße
K-H
  Mit Zitat antworten Zitat
delphiluc

Registriert seit: 29. Mär 2009
7 Beiträge
 
#4

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 17:32
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?!
  Mit Zitat antworten Zitat
delphiluc

Registriert seit: 29. Mär 2009
7 Beiträge
 
#5

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 17:35
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?
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#6

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 18:04
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:
UPDATE MyTable
   SET NeuesFeld = CAST(AltesFeld AS DATE)
3. Kontrolliere die Feldinhalte.
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 18:06
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
 DatumNeu:=copy(Datum,7,4)+copy(datum,4,2)+copy(datum,1,2); Aber wenn Du schon dabei bist, dann nimm doch gleich ein "richtiges" Datumsformat (weiß leider nicht was es unter Paradox gibt).
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 18:08
@Jürgen: Ich finde auch, dass es besser ist, fehlerhaftes DB-Design zu korrigieren als die Zeit mit Workarounds zu verschwenden .
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
delphiluc

Registriert seit: 29. Mär 2009
7 Beiträge
 
#9

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 18:10
blöde frage jürgen....

aber wo muss ich diesen sql code hineinschreiben??
  Mit Zitat antworten Zitat
delphiluc

Registriert seit: 29. Mär 2009
7 Beiträge
 
#10

Re: Suchfunktion - Alter

  Alt 30. Mär 2009, 18:14
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz