Datentyp 'Memo' bei Abfrage festlegen?!
Mathias
- datenbank
Hallo,
ich habe eine Access-Datenbank und speichere diese als mittels ASP und ADODB im XML-Format in einer Datei. Die Funktionalität ist in einem ASPHeute-Artikel (siehe URL) beschrieben.
Das Speichern von Tabellen ist unproblematisch. Schwierigkeiten habe ich mit Memo-Feldern in Abfragen. Packe ich EIN Memofeld in die Abfrage ist alles noch kein Problem - fasse ich nun die Inhalte mehrere Memo-Felder in einem Feld in der Abfrage zusammen("neuesMemo: Tabelle.Memo1 & " " & Tabelle.Memo2"), dann werden die Daten nicht korrekt in der XML-Datei abgelegt. Das liegt daran, dass ASP statt dem richtigen Memo-Datentyp (ID 203) den normalen String-Datentyp (ID 202) mit max. 255 Zeichen für das Feld angibt. In der XML-Datei steht nun eine Maximallänge von 255 Zeichen - es sind aber mehr eingetragen. Zudem häufen Sich wirre Zeichen in der Datei.
Das ganze ließe sich wohl lösen, wenn man Felddatentypen in den Abfragen bestimmen könnte - ich habe aber nichts dergleichen gefunden. Hat jemand eine Idee.
Die Umwandlung mit CStr() habe ich versucht, da kommt grundsätzlich der normale String-Datentyp raus. :-(
Für jegliche Hinweise bin ich euch dankbar
MfG Mathias
Hallo Matthias,
Das Speichern von Tabellen ist unproblematisch. Schwierigkeiten habe ich mit Memo-Feldern in Abfragen. Packe ich EIN Memofeld in die Abfrage ist alles noch kein Problem - fasse ich nun die Inhalte mehrere Memo-Felder in einem Feld in der Abfrage zusammen("neuesMemo: Tabelle.Memo1 & " " & Tabelle.Memo2"), dann werden die Daten nicht korrekt in der XML-Datei abgelegt. Das liegt daran, dass ASP statt dem richtigen Memo-Datentyp (ID 203) den normalen String-Datentyp (ID 202) mit max. 255 Zeichen für das Feld angibt. In der XML-Datei steht nun eine Maximallänge von 255 Zeichen - es sind aber mehr eingetragen. Zudem häufen Sich wirre Zeichen in der Datei.
Du kanns das Problem hier schon vermeiden, indem Du die einzelnen Memofelder beim Lesen der Datensätze jeweils in ein Datenfeld stellst, also nicht ("neuesMemo: Tabelle.Memo1 & " " & Tabelle.Memo2"), sondern ("neuesMemo: meinMemo1 & " " & meinMemo2") schreibst.
Das ganze ließe sich wohl lösen, wenn man Felddatentypen in den Abfragen bestimmen könnte - ich habe aber nichts dergleichen gefunden. Hat jemand eine Idee.
Die Felddatentypen kanns Du auch bestimmen, bei Stefan Falz http://www.aspfaq.de steht wie man die Tabellen ausliest, die Felddatentypen stehen in adovbs.inc
z.B:
'---- DataTypeEnum Values ----
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
Gruss
Christian
Die Umwandlung mit CStr() habe ich versucht, da kommt grundsätzlich der normale String-Datentyp raus. :-(
Für jegliche Hinweise bin ich euch dankbar
MfG Mathias