Zeos und (MEMO bzw. (memo)

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Zeos und (MEMO bzw. (memo)

Beitrag von Aliobaba »

Hallo,

Seit 1 1/2 Tagen versuche ich nun schon, die Zeos-Datenbank in ein neues Projekt einzubauen.
Und schon mehrmals bin ich auch früher schon darüber gestolpert, dass in Datenbank-Feldern das Wort "(Memo)" bzw. "(memo)" ausgegeben wird. Meist funktionierte es dann früher irgendwann irgendwie. Aber diesmal finde ich keine Lösung.
Natürlich habe ich dieses Forum schon genauer durchsucht nach einer Lösung:
https://www.lazarusforum.de/viewtopic.p ... eos#p54984
https://www.lazarusforum.de/viewtopic.php?f=17&t=2223
https://www.lazarusforum.de/viewtopic.p ... eos#p82557
https://www.lazarusforum.de/viewtopic.p ... eos#p91219

Es gibt viele Anfragen zu diesem Thema und vor Jahren habe ich dieses Problem sogar selbst schon mal gepostet:
https://www.lazarusforum.de/viewtopic.php?f=55&t=5987

Aber was ich auch probiere, dieses mal gelingt mir eine Lösung einfach nicht:
Die Felder in der Datenbank habe ich von String schon auf VARCHAR() umgestellt.
Folgende Programmzeile ändert nichts an dem Problem:
ZConnection.Properties.Add('Undefined_Varchar_AsString_Length=255');
Im Objektinspektor für die Datenbank-Spalte lässt sich nur ftMemo oder ftWideMemo und wenige andere einstellen, die Anwahl von ftWideString wird vom Programm nicht akzeptiert, ftMemo wird beibehalten.
Die Datenbank ist aktiv und eingebunden; die die vergebenen Datenbankfelder erscheinen problemlos im "DBGrid".

Hat jemand eine Idee, was ich noch tun könnte, um dieses Problem zu lösen?

Schönes Wochenende
Aliobaba
Dateianhänge
Die Datenbank ist aktiv; alle definierten Felder erscheinen.
Die Datenbank ist aktiv; alle definierten Felder erscheinen.
Felder.png (99.97 KiB) 2011 mal betrachtet
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Zeos und (MEMO bzw. (memo)

Beitrag von Aliobaba »

.... Sorry, das habe ich nun versehentlich zu früh abgeschickt.
Ich reiche noch 2 Screenshots nach....
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Zeos und (MEMO bzw. (memo)

Beitrag von Aliobaba »

Hier noch 2 Screenshots:

Auf VARCHAR habe ich umgestellt,
Browser_SQLite.png
Browser_SQLite.png (26.91 KiB) 2009 mal betrachtet


Dieser Eintrag hält sich hartnäckig
Dieser Eintrag hält sich hartnäckig
ftMemo.png (12.03 KiB) 2009 mal betrachtet
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Zeos und (MEMO bzw. (memo)

Beitrag von Aliobaba »

...vielleicht hat jemand mal kurz Zeit, einen Blick auf das Test-Programm (das die gleichen Probleme macht) zu werfen.

http://www.mymemorydb.n-bay.de/DL/Test_SQL.zip

(Der Link zur Datenbank ("PLDB.myp") müsste natürlich noch angepasst werden)

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: Zeos und (MEMO bzw. (memo)

Beitrag von gladio »

Zeos-Datenbank gibt es nicht.
Du hast eine SQLite-Datenbank, die du über Zeos ansprichst?

Den Datentyp Memo gibt es nach meinem Wissen nicht bei SQLite, eher sowas wie Bolb oder Text (bei mehr als 255 Zeichen).
Im DBGrid wird statt der String-Daten [Memo] angezeigt ?
Alle Datenfelder sind VARCHAR ?
Dann sollte im Objektinspektor bei Eigenschaften BlobType nicht verfügbar sein.
Wenn die Eigenschaft verfügbar ist, müsste dort ftBlob stehen.

Entferne mal: ZConnection.Properties.Add('Undefined_Varchar_AsString_Length=255');
eventuell die ZQuery komplett löschen und neu machen.

Um statt [Memo] den Dateninhalt im Grid anzuzeigen (bei Blob-Feld) gibt es im Objektinspektor für das DBGrid unter Options die Einstellung dgDisplayMemoText (Haken raus)

Da du alle Datenfelder auf normale Strings geändert hast, würde ich die ZQuery ganz neu machen.

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Zeos und (MEMO bzw. (memo)

Beitrag von Aliobaba »

Danke gladio,

jetzt funktioniert es.
Ich habe alles nochmal aufgesetzt. Das habe ich zwar auch gestern und heute schon mehrmals getan und so ganz sicher bin ich mir jetzt nicht, warum es nun funktioniert.
Eine Vermutung habe ich aber schon: Ich arbeite mit dem "DB Browser für SQLite" und dieser bietet das Feld VARCHAR() beim Erstellen einer neuen Datenbank nicht an. Ich habe also zunächst Text-Felder erstellt und diese dann umbenannt.
Jetzt habe ich beim Erstellen der Datenbank die Feldbezeichnung "VARCHAR(100)" bereits vor dem eigentlichen Abspeichern manuell eingetragen. Außerdem habe ich mir mit dem von diesem Browser erstellten SQL-Befehl zur Erstellung der Datenbank NOCHMAL eine ganz neue Datenbank erstellt:
CREATE TABLE "PL_Tab" ( `PLId` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `ATitel` VARCHAR ( 100 ), `APfad` VARCHAR ( 100 ), `AReg` VARCHAR ( 100 ), `AOpen` VARCHAR ( 100 ), `AF1` VARCHAR ( 100 ), `AF2` VARCHAR ( 100 ), `AF3` VARCHAR ( 100 ), `AF4` VARCHAR ( 100 ), `AF5` VARCHAR ( 100 ) )

Und mit dieser Datenbank funktioniert nun alles.

Danke! Und noch ein schönes Wochenende
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Antworten