Lazarus: DBGrid zeigt "(MEMO)" als Wert des string-Felder in SQLite 3
Ich bin versucht, zu schreiben eine einfache SQLite-3-Anwendung mit Lazarus und den SQLdb Komponenten.
Ich habe es geschafft, die Verbindung zu der Datenbank, und füllen Sie eine TDBGrid
. Problem ist, dass alle Spalten, die text Felder werden angezeigt, der Wert "(MEMO)" eher dann den string in die DB.
ändern von Spaltentypen, die in der Datenbank behebt dieses finden Sie unter meine Antwort
InformationsquelleAutor HandyGandy | 2011-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie gesagt im IRC, müssen Sie wahrscheinlich fügen Sie die Felder der Abfrage an das Formular machen, (so dass der "Feld" - Komponenten erzeugt werden) und implementieren Sie die
TMemoField.GetText
Veranstaltung.Sehen, wenn Sie den "Felder" - Feld im Objekt-Inspektor bringt Sie mit einem editor zu erzeugen, die Komponenten (die es so nicht in Zeos iirc).
InformationsquelleAutor Marco van de Voort
Memo-Felder nicht angezeigt werden können, in der
TDBGrid
. HinzufügenTDBMemo
auf das Formular, und schließen Sie es an der gleichenTDataSource
. Sehen Sie den text in Ihre Mitteilung in diesem Fall.InformationsquelleAutor Paul Ishenin
Ich vergaß die Quelle dieser aber das ist, was ich Tue, mit memo-Feldern in tdbgrid.
bläulich ist zu Recht über die gettext-Ereignis, das ist, wie es zu implementieren in den code:
Erstellen Sie eine Klasse namens MemoDifier:
In den implementation-Abschnitt von code, setzen diese:
Klicken Sie dann auf die tdbgrid-Steuerelement in Ihr Formular und an der Objekt-Inspektor(Lazarus IDE), klicken Sie auf die Registerkarte "Ereignisse", scrollen Sie nach unten zu finden, die OnPrepareCanvas Veranstaltung. Doppelklicken Sie darauf, um den code zu generieren. Dann ändern Sie den code entsprechend an Ihre Bedürfnisse wie z.B. den Namen Ihres tdbgrid-Steuerelement:
Die variable MemoFieldReveal Punkte, um die Klasse MemoDifier. Vergessen Sie nicht, ändern Sie die index (Items[x]), um zu Ihrer index-Nummer des tdbgrid Elemente/Felder, die sich zeigt (MEMO) - text.
InformationsquelleAutor Allan Registos
Ich habe das gleiche in MySQL und Tgrid so ich hoffe die Antwort ist die gleiche, wie es ist ganz einfach 🙂
Sagen, wenn s ist das Feld, in das problem verursacht, dann Statt zu schreiben
schreiben
InformationsquelleAutor
In einem ganz alten thread im forum, ich habe eine Lösung gefunden, die für mich gearbeitet (Deutsch/Englisch):
SqLite Zeos und keine Textanzeige, im DbGrid steht (MEMO) - Zeoslib-Portal
Wenn Sie den Bereich ändern, Typen in der SQLite-Datenbank von
text
invarchar
, der text zeigt sich wie erwartet in derTDBGrid
.ändern SQLite Spalten
Wie Sie vielleicht wissen, SQLite nicht lassen, ändern Sie das Feld Typen der Spalten. Also, wenn Sie bereits über wertvolle Daten in der Datenbank gespeichert sind, verwenden Sie die Schritte in diesem tutorial beschrieben
SQLite ALTER TABLE & Wie man Seine Grenzen Überwinden
Hier ist eine weitere option
sqlite3 your.db .dump >your.sql
)s/\<text\>/varchar/
)sqlite3 your2.db <your.sql
)InformationsquelleAutor Wolf
Dieser Artikel gibt eine Lösung: Anzeigen und Bearbeiten von MEMO-fiels in Delphi TDBGrid.
Ich hier zusammenfassen, was Sie zu tun haben:
OnGetText = MyDataSetMyFieldGetText
zu denTMemoField
(hier benanntMyField
) gehörenden Datensatz (zum Beispiel eineTTable
hier benanntMyDataSet
)in der .pas >
interface
>type
> in Ihrer form-definition, Beurteilungin der .pas >
implementation
> fügen Sie diese MethodeDanke Ken, hast du wahrscheinlich Recht, obwohl ich nicht überprüfen Sie jetzt
InformationsquelleAutor bluish