Deutsch
Forum

SQL Access Memo-Feld

 
- Seite 1 -



Christof
Neuß
Hallo Leute,
habe eine Access-Datenbank im Zugriff. Klappt prima.
Nur: Das Memofeld wird nicht richtig bzw. verkürzt ausgelesen. Im Memofeld habe ich eine (modifizierte) RTF-Datei gespeichert. Diese ist auch vollständig da. Das kann ich über MS-Access sehen. Der INSERT-INTO-Befehl hat also funktioniert.

Bei
SQLEXEC "Select RTF_Text from RTF_Texte",2
steht in der SQL.Dat nur ein Teil des Feldes.
Auch mit
SQLEXEC "Select RTF_Text from RTF_Texte",1
erhalte ich in der Listbox nur die ersten ??? Zeichen.

Gibt es hier eine Begrenzung? Wie kann ich die umgehen? Ich möchte nicht die ca. 15 RTF-Dateien mit ins Verzeichnis kopieren. Sieht einfach unschön aus und die Verwaltung in der DB finde ich gut.

Danke!
 
Win10 16 GB RAM
03.01.2011  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


RGH
Hallo,
die Länge, die per SQL aus einem Memofeld ausgelesen wird, kann mit @Set("SQLWidth", N) eingestellt werden. Möglicherweise reicht in Deinem Fall die voreingestellte Länge nicht aus.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
03.01.2011  
 



Zunächst: Keine Ahnung.

Wieviele Zeichen werden denn zurückgegeben?

Wenn Du "Sonderzeichen" mitnutzt dann hilft z.B. encode64(.
 
03.01.2011  
 




Christof
Neuß
Tja. Es kommen wohl 1024 Zeichen rüber. Nicht mehr. Ich habe jetzt mal alles weggelassen, was mit RTF zu tun hat. Einfach Über Access Text in das Memo-Feld geschrieben. Die Anzeige in meinem Programm ist auch nicht das Problem. Der SQLEXEC liefert einfach nicht das ganze Memo-Feld zurück.
Ich habe in der XProfan-Hilfe noch unter "Behobene Bugs" gefunden, dass das Lesen von Text-Blobs bisher nicht funktioniert hat. Müsste aber doch dann behoben sein, oder? Oder hängt es damit gar nicht zusammen.

Ich mache das im Moment so:
SQL_Befehl$="Select RTF_Text from RTF_Texte where Aufgabe='"+Re_Position$+"'"
SQLExec SQL_Befehl$,1
Re_Text$=ListBox$("Ergebnis",1)
Re_Text$=Decode64(Re_Text$)
SetText Re_AGK_01&,Re_Text$
SQLExec SQL_Befehl$,2

Das ist natürlich nur ein Ausschnitt und dient auch nur zu Testzwecken, damit ich sowohl die Effekte mit der Listbox als auch mit der Dateiausgabe testen kann. Und in beiden Fällen ist der Text einfach abgeschnitten.
Wenn alle Stricke reißen, werde ich den Text einfachl in Zeilen aufteilen und dann in der Datenbank zerstückelt speichern. Das kriege ich dann ja wieder zusammengesetzt.
Vielleicht weiß ja einer noch was.
 
Win10 16 GB RAM
03.01.2011  
 




Thomas
Freier
Schreibst du das in eine Listbox oder ein Listiew? Frank hatte seine ListView.dll für solche Datenmengen extra mit SetItemTextEx(H,T,S,L,A) erweitert.
Mit Blobs und dbIII hatte "Pascal" sich beschäftigt. Mal hier suchen.
 
Gruß Thomas
Windows XP SP2, XProfan X2
03.01.2011  
 




Christof
Neuß
Hallo Thomas,
es geht nicht um die Anzeige. Ich schreibe das Ergebnis in ein Richedit. Der "Knoten" sitzt schon früher. Ich bekomme aus der Datenbank nicht den ganzen Text raus.
 
Win10 16 GB RAM
03.01.2011  
 




RGH
Hallo,
die Länge, die per SQL aus einem Memofeld ausgelesen wird, kann mit @Set("SQLWidth", N) eingestellt werden. Möglicherweise reicht in Deinem Fall die voreingestellte Länge nicht aus.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
03.01.2011  
 




Christof
Neuß
Hallo Roland.

DANKE!!!!!

Das war der entscheidende Tipp. Jetzt funktioniert es. Wieder was gelernt.

BTW: Wenn ich das Ergebnis in die Listboxliste ausgebe, dann kann der Eintrag max. 32.000 (und ein paar Zerquetschte) Zeichen lang sein, oder? Ich werd's wahrscheinlich nicht brauchen, es interessiert mich nur. Dann würde es ja nix helfen, die SQLWidth auf 65.535 zu setzen. Müsste dann über die SQL.DAT gehen, was?
 
Win10 16 GB RAM
03.01.2011  
 



Bei mir unter XP kann ich sogar deutlich längere Strings als ListBoxEinträge einfügen:
var list&=create("list",0)
addString(list&,mkstr$("A",32768))
addString(list&,mkstr$("A",65536))
addString(list&,mkstr$("A",16777216))
print len(getString$(list&,0))
print len(getString$(list&,1))
print len(getString$(list&,2))
waitInput
end

Gibt beim mir sauber:

32768
65536
16777216

aus.

Eigentlich auch kaum verwunderlich, Speicher können ja (auch) "beliebig" groß sein und solch ListBoxEintrag ist (mittlerweile) intern unter anderem ein Speicherzeiger.
 
04.01.2011  
 




E.T.
RGH (03.01.11)
Hallo,
die Länge, die per SQL aus einem Memofeld ausgelesen wird, kann mit @Set("SQLWidth", N) eingestellt werden. Möglicherweise reicht in Deinem Fall die voreingestellte Länge nicht aus.


Mal so als Zwischenfrage: Wieviel ist denn voreingestellt ?? Konnt's nirgends finden..
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
04.01.2011  
 




Christof
Neuß
@iF: Hatte auch schon damit geliebäugelt, dass die Grenze evlt. schon mit Version 11.X aufgehoben ist. Umso besser. Dann dürfte ich hier ja gar keine Probleme bekommen. Danke für den Test

@Mario: M.E. sind 1.024 Zeichen eingestellt. Ich hatte nichts verändert und es wurden immer Längen von 992 - 1024 gemeldet. Kürzere kamen durch unterschiedliche Encodierungen zustande. Mehr als 1.024 habe ich nie bekommen. Ich gehe jetzt auch hin und setze vor dem Lesen den Wert auf 65.535 und nachher wieder auf 1.024.
 
Win10 16 GB RAM
04.01.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

18.588 Betrachtungen

Unbenanntvor 0 min.
H.Brill22.05.2024
JR04.11.2014
Andre Rohland05.10.2014
KFU24.08.2013
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie