Announcement

Collapse
No announcement yet.

Filtern nach einem Teil des Feldinhaltes

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Filtern nach einem Teil des Feldinhaltes

    Hallo, mit folgender Anweisung filtere ich meine Datenmenge nach Anzahl der Jahre die im Feld VeZuGesamt steht:

    DataModule2.Sin_AdreTable.Filter := 'VeZuGesamt = ''' + Edit2.Text + '''';

    Im Feld VeZuGesamt steht aber komplett noch das Wort Jahre hinter der Gesamtjahrzahl.
    z.B. 20 Jahre. Wenn ich also 20 Jahre eingebe funktioniert das Ganze. Da aber der String Jahre immer gleich bleibt, möchte ich erreichen, das nach Eingabe von nur dem Wert 20, die Datenmenge gefiltert wird. Wie muß ich obige Anweisung ändern damit das funktioniert? Vielen Dank für Hinweise. Gruß ph.

  • #2
    Hi!<br>
    Vielleicht habe ich nicht gamz begriffen was Du willst aber hilft:<br>
    DataModule2.Sin_AdreTable.Filter := 'VeZuGesamt = ' + quotedstr ( Edit2.text + ' Jahre' );<br>
    Dir weiter?<br>
    BYE BERND<br&gt

    Comment


    • #3
      Hallo, das gibt eine Fehlermeldung. Bemühe mich aber das weiterzuverfolgen. Mit einer Function errechne ich einen bestimmten Zeitraum. Dieser Zeitraum wird dann in dem Datenbankfeld abgespeichert. z.B. 20 Jahre oder 15 Jahre usw. Das Wort Jahre habe ich nur wegen der Übersichtlichkeit genommen. In dem Datenbankfeld steht also immer das Wort Jahre. Und verschieden oder gleich eine Zahl davor. Ich möchte nun nur die Zahl eingeben brauchen, damit mir im Grid die entsprechenden Datensätze angezeigt werden. So wie ich es oben in der Anweisung mache, muß ich eingeben 20 Jahre und die Datensätze erscheinen. Gebe ich nur die 20 ein erscheint natürlich nichts, weil ja das Wort Jahre fehlt. Das Wort Jahre möchte ich aber nicht eingeben müssen, weil es ja in jedem Datensatz(feld) vorkommt. Vielen Dank ph

      Comment


      • #4
        Hallo Peter,

        weißt Du wieviel Platz du verschwendest, wenn Du das Wort Jahre jedesmal mit speicherst? Vielleicht kennst du die Zellformatierung in Excel. Dort klickst du auf das Währungssymbol und siehst in einer Zelle sofort einen DM-Betrag. Wenn Du ihn ändern willst und klickst diese Zelle an, siehst Du in der Bearbeitungszeile nur den reinen Wert - ohne DM.
        Genauso muss man es auch beim Programmieren halten. Die reine Zahl zum Rechnen, und eine für den User in dem Format, in dem er eine bessere Übersicht über seine Daten hat.
        Deswegen sollte man als Programmierer immer dafür sorgen, daß in eine Datenbank nur reine Daten eingegeben werden. Für das Sichtbarmachen der Daten gibt es genügend "Format-Befehle". Nun passiert es aber manchmal doch, daß in einem Editfeld mehr als nur die reine Zahl steht. Dann kann man in einer Routine das klären:
        <br>if MyString[i] in ['0'..'9',','] then s := s + MyString[i];<br>
        Hier könntest Du alle Tausendertrennzeichen und das Wort "Jahre" rausschmeißen.
        In deinem speziellen Fall würde ich in dieser Tabelle überall das Wort "Jahre" entfernen und natürlich auch verhindern, daß es eingegeben werden kann. Dann klappt auch dein SQL-String.

        mfg Klaus-Pete

        Comment


        • #5
          Hallo, vielen Dank für eure Anworten. Das ganze was ich da vor hatte klingt zugebenermaßen ziemlich wirr, und eine Speicherplatzverschwendung ist diese Angelegenheit auch. Aber es geht nur um maximal 500 Datensätze, und bei der heutigen Festplattenkapazität ist mir das eigentlich egal. Der Grund Jahre mit zu speichern war, daß ich alles in einem DBGrid ausgeben wollte um mir die Titelleiste des DBGrids zu sparen. Nun lasse ich einfach die Titelleiste des Grids und schreibe Jahre darüber. Speichern tue ich nur noch den Jahreswert. Würde mich trotzdem interressieren, ob das was ich wollte möglich ist. Nochmals Danke für eure Antworten. Gruß ph

          Comment

          Working...
          X