DevTrain

Autor: Hannes Preishuber

Memofelder

Immer wieder gibt es Probleme mit Memofelder in Access. Was sind Memofelder eigentlich.

Immer wenn man eine Text in der Tabelle Speichern will, der länger als 255 Zeichen ist, wird ein Memofeld genommen.
Beim Auslesen der Memofelder kommt es aber oft zu einem Fehler. Der harmloseste Fall ist, das man nichts sieht.
Response.Write RS.Fields("memofeld") & "<br>"
Response.Write RS.Fields("memofeld") & "<br>"
Response.Write RS.Fields("memofeld") & "<br>"

In diesem Beispiel wird der text nur 1 mal ausgegeben.

Das liegt an der Art und Weise wie memofelder gespeichert werden. Da diese bis zu 2 GB gross werden können, werden sie nicht einfach in die Tabelle abgelegt, sonderen eine Referenz darauf. Dadurch kann pro Record das Feld nur einmal ausgelsen werden.

Workaround:

Das Feld einfach gleich in eine Variable speichern und mit dieser Variablen weiter arbeiten.

SELECT * FROM tEvents
WHERE Start_Date <= #01/25/2001# AND End_Date >= #01/25/2001# ORDER BY Event_ID

Microsoft OLE DB Provider for ODBC Drivers-Fehler '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntaxfehler in Zahl in
Abfrageausdruck 'Start_Date <= 25.01.01 AND End_Date >= 25.01.01'.

<%@import namespace="system.data.SQL"%>
<script language="vb" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)

Dim sqlText as String = "select * from authors"
Dim cnString as string = "server=sql.myserver.com;uid=pubs;pwd=pubs;database=pubs;"
Dim dbRead AS SQLDataReader
Dim sqlCmd AS SQLCommand

sqlCmd = New SQLCommand(sqlText,cnString)
sqlCmd.ActiveConnection.Open()

sqlCmd.execute(dbread)

while dbRead.Read()

response.write("<br>" & dbRead.Item("au_lname"))

End while

End Sub
</script>



Erfasst am: 05.01.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=246
© Copyright 2003 ppedv AG - http://www.ppedv.de