Announcement

Collapse
No announcement yet.

Vergleich Kalenderwochen/Jahr

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

  • Vergleich Kalenderwochen/Jahr

    Hallo, ich muss beim Speichern abfangen, dass nur Kalenderwochen in der Zukunft oder die gleichen, wie beim Laden des Formulars vorgegeben gespeichert werden dürfen. Das habe ich versucht, wie folgt abzufangen:

    Code:
    if ((edt_MOD_valid_Ind_cw.Text <  edt_MOD_valid_Ind_cw_vorgabe.Text)  and (edt_MOD_valid_Ind_year.Text < edt_MOD_valid_Ind_year_vorgabe.Text)) or
       ((edt_MOD_valid_Ind_cw.Text <  edt_MOD_valid_Ind_cw_vorgabe.Text)  and (edt_MOD_valid_Ind_year.Text = edt_MOD_valid_Ind_year_vorgabe.Text))
        then
       Showmessage('You can only save later date!')
       else
       if ((edt_MOD_valid_Ind_cw.Text >  edt_MOD_valid_Ind_cw_vorgabe.Text)  and (edt_MOD_valid_Ind_year.Text > edt_MOD_valid_Ind_year_vorgabe.Text))
       or
        ((edt_MOD_valid_Ind_cw.Text = edt_MOD_valid_Ind_cw_vorgabe.Text)  and (edt_MOD_valid_Ind_year.Text = edt_MOD_valid_Ind_year_vorgabe.Text)) then
       begin
        cSQL := cSQL + '[MOD_target_date_planning_cw] = ' + f_Save_Integer(Trim(edt_MOD_valid_Ind_cw.Text)) + ', ' + #13;
       end;
    nur dass das leider nicht funktioniert

    Hat jemand einen Rat?

    Dankeschön

  • #2
    Funktioniert nicht ist kein Fehler.

    Was für ein Fehler kommt? Compiler-, Linker-, Laufzeit-, logischer Fehler?

    Da ich nicht weiss, wie dein Formular aussieht, bzw. wo was für Eingaben stehen, kann man auch nix genaues sagen. Wo ist das aktuelle Datum? Wo die Eingaben.....


    - aktuelle Woche ermitteln
    - aktuelles Jahr ermitteln
    - "Gleiche Woche" ermitteln
    - "Gleiches Jahr" ermitteln
    dazu
    - Eingabewoche
    - Eingabejahr

    Mal auf die schnelle:

    Wenn Eingabejahr>aktuellemJahr && Eingabejahr>GleichemJahr
    -> Eingaben sind ok
    Wenn (Eingabewoche>aktuellerWoche && Eingabejahr>=aktuellesJahr)||(Eingabewoche>Gleiche rWoche && Eingabejahr>=GleichesJahr)
    -> Eingaben sind ok
    sonst
    Fehler
    Christian

    Comment


    • #3
      Hallo Christian,
      es gibt eine Woche in einem Editfeld, die aus der Datenbank kommt (edt_MOD_valid_Ind_cw_vorgabe). Dies gilt auch für ein Jahr (edt_MOD_valid_Ind_year_vorgabe). Nun gibt der User eine Woche in ein anderes Editfeld (edt_MOD_valid_Ind_cw) und ein Jahr (edt_MOD_valid_Ind_year) ein. Die Usereingabe darf beim Speichern nur gleich oder höher als die Vorgabe aus der DB sein. Es gibt keinen Fehler. Es kommt immer die Message ('You can only save later date!')
      - siehe Quellcode. Die Vorgabewerte aus der DB sind Integer-Werte- also doch eigentlich auch vergleichbar mit < oder > oder =.
      VG Claudia

      Comment


      • #4
        Hallo Claudia,

        in deinem Quellcode vergleichst du Strings miteinander und keine Interwerte "(edt_MOD_valid_Ind_cw.Text < edt_MOD_valid_Ind_cw_vorgabe.Text)". Deine Integerwerte aus der DB sind zu diesem Zeitpunkt Strings!
        Vergleiche doch einfach die DB-Felder z.B. If MyTable.FieldByName('Kalenderwoche').asInteger < StringToInt(edt_MOD_valid_Ind_cw_vorgabe.Text) then Showmessage('Meldungstext');
        Aber achtung, vor dem Vergleich solltest du prüfen ob schon eine Wochenangabe vorhanden ist, sonst wird eine Fehlermeldung ausgelöst.

        Gruß
        Hans

        Comment

        Working...
        X