dey: Access + Datum, ASP

Servus

Folgender Code:
 strsql= "update member set name1 = '" & name1(n) & "', "
 strsql=strsql & "email1 = '" & email1(n) & "', "
 strsql=strsql & "telnr1 = '" & telnr1(n) & "', "
 strsql=strsql & "adresse = '" & adresse(n) & "', "
 strsql=strsql & "gdate1 = '" & gdate1(n) & "', "
 strsql=strsql & "vorstand = '" & vorstand(n) & "' "
 strsql=strsql & " WHERE autonr = " & autonr(n) & " ;"
objcmd.CommandText=strsql
objcmd.Execute

bewirkt folgenden Fehler
Microsoft JET Database Engine- Fehler '80040e07'
Datentypen in Kriterienausdruck unverträglich.
/ah2/updatedbmember.asp, line 86

Das Feld "gdate1" ist ein Datumsfeld und hat den Paramater "Eingabe erforderlich" = Nein.
Allerdings tritt oben genannter Fehler genau an dem Datensatz auf, bei dem gdate(n) = '' ist.
Wo liegt der Fehler?

bydey

  1. Hallo,

    Folgender Code:
    strsql= "update member set name1 = '" & name1(n) & "', "
    strsql=strsql & "email1 = '" & email1(n) & "', "
    strsql=strsql & "telnr1 = '" & telnr1(n) & "', "
    strsql=strsql & "adresse = '" & adresse(n) & "', "
    strsql=strsql & "gdate1 = '" & gdate1(n) & "', "
    strsql=strsql & "vorstand = '" & vorstand(n) & "' "
    strsql=strsql & " WHERE autonr = " & autonr(n) & " ;"
    objcmd.CommandText=strsql
    objcmd.Execute

    bewirkt folgenden Fehler
    Microsoft JET Database Engine- Fehler '80040e07'
    Datentypen in Kriterienausdruck unverträglich.
    /ah2/updatedbmember.asp, line 86

    Das Feld "gdate1" ist ein Datumsfeld und hat den Paramater "Eingabe erforderlich" = Nein.
    Allerdings tritt oben genannter Fehler genau an dem Datensatz auf, bei dem gdate(n) = '' ist.
    Wo liegt der Fehler?

    Ein Datumsfeld kann entweder einen Datumswert z.B.:#02.04.03# oder  den Wert NULL, nicht aber einen Leerstring '' enthalten. Du wirst also prüfen müssen, ob dein gdate1(n) einen gültigen Datumswert enthält. Wenn nicht muss das Update
    strsql= "update member set name1 = '" & name1(n) & "', "
    ...
    strsql=strsql & "gdate1 = NULL, "
    ...
    lauten.

    viele Grüße

    Axel

    1. Servus

      Monster... das geht!

      Ein Datumsfeld kann entweder einen Datumswert z.B.:#02.04.03# oder  den Wert NULL, nicht aber einen Leerstring '' enthalten. Du wirst also prüfen müssen, ob dein gdate1(n) einen gültigen Datumswert enthält. Wenn nicht muss das Update
      strsql= "update member set name1 = '" & name1(n) & "', "
      ...
      strsql=strsql & "gdate1 = NULL, "
      ...
      lauten.

      if gdate1(n) = "" then
        strsql=strsql & "gdate1 = NULL, "
       else
        strsql=strsql & "gdate1 = '" & gdate1(n) & "', "
       end if

      Danke

      bydey

      1. Hallo,

        Monster... das geht!
         if gdate1(n) = "" then
          strsql=strsql & "gdate1 = NULL, "
         else
          strsql=strsql & "gdate1 = '" & gdate1(n) & "', "
         end if

        Aber, dass "Otto find ich gut." in gdate1(n) steht, kann nicht vorkommen? Dann wäre nämlich Dein Else-Zweig auch dran und würde wieder einen Fehler verursachen. ;-)

        viele Grüße

        Axel

        1. Servus

          Aber, dass "Otto find ich gut." in gdate1(n) steht, kann nicht vorkommen? Dann wäre nämlich Dein Else-Zweig auch dran und würde wieder einen Fehler verursachen. ;-)

          Da hast du absolut recht. Find ich persönlich aber nicht so schlimm, da ich vorher darauf hinweise, dass die Formate der einzelnen Felder einzuhalten sind.
          Ich habe aber auch keine Ahnung womit ich mir das korrekte Datumsformat bestätigen lassen kann!

          bydey

          1. Hallo,

            Ich habe aber auch keine Ahnung womit ich mir das korrekte Datumsformat bestätigen lassen kann!

            Hm, in VB für ACCESS gibt es die Funktion IsDate(Ausdruck)

            IsDate(Ausdruck)

            Das erforderliche Argument Ausdruck ist ein Wert vom Typ Variant und enthält einen Datumsausdruck oder einen Zeichenfolgenausdruck, der als Datum oder Uhrzeit interpretiert werden kann.

            Bemerkungen

            IsDate gibt den Wert True zurück, wenn der Ausdruck ein Datum ist oder in ein gültiges Datum umgewandelt werden kann. Andernfalls wird False zurückgegeben. In Microsoft Windows liegen gültige Datumswerte im Bereich vom 1. Januar 100 n.Chr bis 31. Dezember 9999 n.Chr. Auf anderen Betriebssystemen können andere Bereiche gelten.

            Eventuell gibts sowas ja auch für ASP-VB?

            viele Grüße

            Axel

  2. Hallo bydey,
    ich hatte mal ein ähnliches Problem, dann habe ich das Datum zwischen zwei '#' gesetzt und in englicher Form mm/dd/yy. Dann hats funktioniert.

    mfg .:thomas:.