Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   wie geht man mit dem datatyp=ftMemo um (https://www.delphipraxis.net/154691-wie-geht-man-mit-dem-datatyp%3Dftmemo-um.html)

p80286 21. Sep 2010 15:59

Datenbank: oracle • Version: 9 • Zugriff über: ado

wie geht man mit dem datatyp=ftMemo um
 
Hallo zusammen,

ich habe eine Query, die als DataType eines Feldes ftMemo liefert. Wie kann ich die enthaltenen Daten in einen String übertragen?
Delphi-Quellcode:
Fields[i].asString
Fields[i].Value
FieldValues[namedesfeldes]
liefern immer nur einen leeren String zurück.

Gruß
K-H

Bummi 21. Sep 2010 16:09

AW: wie geht man mit dem datatyp=ftMemo um
 
mal geraten ...

Fields[i].SavetoStream(M);

SetString(Result, M.Memory, M.Size div SizeOf(Char));
oder (ANSI)
SetString(Result, M.Memory, M.Size);

p80286 21. Sep 2010 16:20

AW: wie geht man mit dem datatyp=ftMemo um
 
Danke muß ich mal ausprobieren!

Ich habe allerdings noch eine Zusatzinfo.
Wenn ich einen DB-Treiber von MS verwende, tritt das Problem nicht auf, nur wenn es ein "original" Oracle Treiber ist.

Gruß
K-H

Bummi 21. Sep 2010 16:22

AW: wie geht man mit dem datatyp=ftMemo um
 
deshalb habe ich geschrieben, mal geraten, ich habe keine Erfahrungen mit Oracletreibern und habe obiges bisher auch nur für Blobfelder gebraucht.

Bernhard Geyer 21. Sep 2010 16:24

AW: wie geht man mit dem datatyp=ftMemo um
 
Zitat:

Zitat von p80286 (Beitrag 1051002)
Wenn ich einen DB-Treiber von MS verwende, tritt das Problem nicht auf,

Dieser wird aber von MS nicht mehr gepflegt und fliegt über kurz oder lang aus Windows raus.

Zitat:

Zitat von p80286 (Beitrag 1051002)
nur wenn es ein "original" Oracle Treiber ist.

Welche Version? Auf welcher Codepage läuft Oracle? Evtl. passt Treiber mit Oracle-Version nicht zusammen. Da vermasselt Oracle des öfteren was. Ich würde eh eine native Zugriffskompo wie von DevArt empfehlen.

p80286 21. Sep 2010 17:32

AW: wie geht man mit dem datatyp=ftMemo um
 
@Bernhard

Da ich mich im Augenblick auf der "Kundenseite" bewege, muß ich nehmen was da ist.
ggf. könnte ich an der Oracle-Seite etwas drehen.

wenn die Codepage nicht in Ordnung ist, erwarte ich "Chinesisch" aber gleich garnichts?
Die üblichen Char/Varchar funktionieren übrigens problemlos.

Gruß
K-H

Bernhard Geyer 21. Sep 2010 18:26

AW: wie geht man mit dem datatyp=ftMemo um
 
Zitat:

Zitat von p80286 (Beitrag 1051022)
Da ich mich im Augenblick auf der "Kundenseite" bewege, muß ich nehmen was da ist.

Musst du nicht. Wenn das was auf Kundenseite nicht ausreicht solltest du passendes Installieren können (oder am besten selbst mitliefern). Alternativ wäre hier z.B. der instant-Client zu nennen welcher auch ohne installation (nur mit Umgebungsvariable) funktioniert.

Zitat:

Zitat von p80286 (Beitrag 1051022)
wenn die Codepage nicht in Ordnung ist, erwarte ich "Chinesisch" aber gleich garnichts? Die üblichen Char/Varchar funktionieren übrigens problemlos.

Da du als Feldtyp = ftMemo hast vermute ich das auf Oracle-Seite ein CLOB vorliegt. Und dieser "funktioniert" unter Oracle 8/9(/10?) nur bei bestimmten Kombinationen von Codegage auf Server und Clientseite. Falls keine passende Kombination vorliegt kracht es i.d.R.. Du hast halt den Fall das die Inkompatiblität als leerer Text zürück kommt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz