Thomas: Datentypen in ASP und Scripten

Hallo

erstmal vielen Dank für die bisherigen Antworten!
Habe mal wieder eine Frage:
Im Hintergrund liegt bei mir eine Access2000 DB.
Dort kann man in Tabellen spezielle Datentypen zuweisen. Doch diese Datentypen sind nicht alle in ASP und Scripten verwendbar. Im unten stehenden Code habe ich versucht auf Datumsfelder zuzugreifen aber er kennt das Format nicht. Habe auch Date,Datum versucht keinen Erfolg.

If Request.QueryString(myName) <> "" Then
Select Case myType
Case "DATETIME"
myWhere = myWhere & myName & " = #" & JTMRCreateAmericanDate(Request.QueryString(myName)) & "# AND "  
    Case "BOOLEAN", "BYTE", "LONG", "CURRENCY", "SINGLE", "DOUBLE", "SHORT"
myWhere = myWhere & myName & " = " & Request.QueryString(myName) & " AND "
Case Else
myWhere = myWhere & myName & " = '" & replace(Request.QueryString(myName), "'", "''") & "' AND "
End Select
End If

Kann mir jemand einen Tip geben oder sagen in welchem Dokument alle benutzbaren Datentypen zu finden sind?
Und wo ich dieses Dokument finde?

Und gleich Frage Nummer2:

Wenn ich in der DB (gleiche wie oben) ein Memofeld habe und aus einer ASP darauf zugreifen möchte stellt er nur 255 Zeichen dar und nicht die 64000 Zeichen des Memofeldes. Wo liegt das Problem?

Vielen Dank
Thomas

  1. http://falz.de/aspdatabase/

  2. Hallo Thomas,

    Habe mal wieder eine Frage:
    Im Hintergrund liegt bei mir eine Access2000 DB.
    Dort kann man in Tabellen spezielle Datentypen zuweisen. Doch diese Datentypen sind nicht alle in ASP und Scripten verwendbar. Im unten stehenden Code habe ich versucht auf Datumsfelder zuzugreifen aber er kennt das Format nicht. Habe auch Date,Datum versucht keinen Erfolg.

    ASP kennt sicherlich das Datumsformat. Die Frage ist nur, welche Probleme hast Du denn damit?

    Und gleich Frage Nummer2:

    Wenn ich in der DB (gleiche wie oben) ein Memofeld habe und aus einer ASP darauf zugreifen möchte stellt er nur 255 Zeichen dar und nicht die 64000 Zeichen des Memofeldes. Wo liegt das Problem?

    Vielen Dank
    Thomas

    Memofelder werden z.B.: in UNION-Abfragen abgeschnitten.
    Bei einem direkten Zugriff auf die Tabelle gibt es hingegen keinerlei
    Probleme.
    Wie greifst Du denn auf das Feld zu?

    Tschau, Stefan

    1. Hallo Stefan

      Zuerst zu Frage2:

      Das mit dem Direktzugriff auf die Tabelle funktioniert.
      Vielen Dank. Aber gibt es denn auch eine Möglichkeit diese Memo Felder über Abfragen zu selektieren.
      BSP:
      Feld:Beschreibung einer Veranstaltung 2000 Zeichen
      Datum:eingetragen am (heute)
      damit ist dieser Eintrag aktuell und wird dargestellt.
      Wenn jetzt ein Tag vergeht verfällt diese Veranstaltung. Und anhand des Datums wollte ich mir immer den aktuellsten Eintrag anzeigen lassen.

      Zu Frage1:

      Ich habe mir ein Redaktionssystem runtergeladen(Freeware) und angepasst. Dabei habe ich folgenden Code(speziell der in der Schleife)
      response.buffer = true
      myFieldCount = Request.QueryString.Count-2
      myWhere = ""
      For i = 1 to myFieldCount
      myName = Request.QueryString.Key(i)
      myValue =  Request.QueryString.Item(myName)
      myType = Request.QueryString.Item(myName & "_JTMRType")
      If Request.QueryString(myName) = "" Then
      myWhere = myWhere & myName & " IS NULL AND "
      Else
      Select Case myType
      Case "DATETIME"
      myWhere = myWhere & myName & " = #" & Request.QueryString(myName) & "# AND "   Case "BOOLEAN", "BYTE", "LONG", "CURRENCY", "SINGLE", "DOUBLE", "SHORT"
      myWhere = myWhere & myName & " = " & Request.QueryString(myName) & " AND "
      Case Else
      myWhere = myWhere & myName & " = '" & Request.QueryString(myName) & "' AND "
      End Select
      End If
      i = i + 1    Next
      myWhere = Left(myWhere, Len(myWhere)-4)
      mySQLQueryString = "Delete * FROM " & myTable & " WHERE " & myWhere & " ;"
      'response.write mySQLQueryString
      gObjDC.execute mySQLQueryString
      Call CloseConnection
      Response.Redirect "tablecontent.asp?" & Request.ServerVariables("QUERY_STRING")

      An der Stelle "Case DATETIME" wird das Datumsformat speziell behandelt. Um später eine SQL-Query Anweisung auszuführen. Dort muss das Datum zwischen zwei Routen stehen sonst gibt es eine fehlermedlung.
      Speziell geht es um Onlinezugriff auf eine Datenbank nach registrierung. Der Nutzer soll Daten eintragen und in der DB abspeichern können (auch ändern aber nicht löschen)

      Gruß Thomas

      1. Hallo Stefan

        Zuerst zu Frage2:

        Das mit dem Direktzugriff auf die Tabelle funktioniert.
        Vielen Dank. Aber gibt es denn auch eine Möglichkeit diese Memo Felder über Abfragen zu selektieren.
        BSP:
        Feld:Beschreibung einer Veranstaltung 2000 Zeichen
        Datum:eingetragen am (heute)
        damit ist dieser Eintrag aktuell und wird dargestellt.
        Wenn jetzt ein Tag vergeht verfällt diese Veranstaltung. Und anhand des Datums wollte ich mir immer den aktuellsten Eintrag anzeigen lassen.

        Zu Frage1:

        Ich habe mir ein Redaktionssystem runtergeladen(Freeware) und angepasst. Dabei habe ich folgenden Code(speziell der in der Schleife)
        response.buffer = true
        myFieldCount = Request.QueryString.Count-2
        myWhere = ""
        For i = 1 to myFieldCount

        »»  myName = Request.QueryString.Key(i)
        »»  myValue =  Request.QueryString.Item(myName)
        »»  myType = Request.QueryString.Item(myName & "_JTMRType")
        »»  If Request.QueryString(myName) = "" Then
        »»  myWhere = myWhere & myName & " IS NULL AND "
        »»  Else
        »»  Select Case myType
        »»  Case "DATETIME"
        »»  myWhere = myWhere & myName & " = #" & Request.QueryString(myName) & "# AND "   Case "BOOLEAN", "BYTE", "LONG", "CURRENCY", "SINGLE", "DOUBLE", "SHORT"
        »»  myWhere = myWhere & myName & " = " & Request.QueryString(myName) & " AND "
        »»  Case Else
        »»  myWhere = myWhere & myName & " = '" & Request.QueryString(myName) & "' AND "
        »»  End Select
        »»  End If
        »»  i = i + 1    Next
        »»  myWhere = Left(myWhere, Len(myWhere)-4)
        »»  mySQLQueryString = "Delete * FROM " & myTable & " WHERE " & myWhere & " ;"
        »»  'response.write mySQLQueryString
        »»  gObjDC.execute mySQLQueryString
        »»  Call CloseConnection
        »»  Response.Redirect "tablecontent.asp?" & Request.ServerVariables("QUERY_STRING")

        An der Stelle "Case DATETIME" wird das Datumsformat speziell behandelt. Um später eine SQL-Query Anweisung auszuführen. Dort muss das Datum zwischen zwei Routen stehen sonst gibt es eine fehlermedlung.
        Speziell geht es um Onlinezugriff auf eine Datenbank nach registrierung. Der Nutzer soll Daten eintragen und in der DB abspeichern können (auch ändern aber nicht löschen)

        Gruß Thomas

        Hallo Thomas,

        durch die Zuweisung »»  myType = Request.QueryString.Item(myName & "_JTMRType")
        wirst Du in der Select case-Anweisung immer in den Case Else-Zweig laufen,
        da immer der String "_JTMLType" angehangen wird und somit keiner der
        Vergleiche ziehen kann.

        Ansonsten würd ich es vorziehen, mit folgender Syntax zu arbeiten
        <%
        If IsDate(myValue) Then
            ' -- zusammenbasteln der SQL-Datumsabfrage
        End if
        ...
        %>

        Tschau, Stefan