Leere Zellen bei DBGrid

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Leere Zellen bei DBGrid

Beitrag von EugenE »

Hey Leute,

ich habe zB eine Connection ( ODBC, Oracle oder Zeos ) mit dieser Connecte ich zb auf Oracle oder MS Access, so spreche eine Tabelle mit "SELECT * FROM" an, da manche Felder in der Tabelle öäü enthalten werden diese Felder im DBGrid erst garnicht angezeigt. Und wenn ich zb mit Zeos die Metadata ( hier Tabellen-Namen ) auslesen wollte und diese in eine ComboBox einfügen wollte wurden auch manche nicht angezeigt, weil diese Namen auch öäü enthielten, also habe ich einfach bevor ich die Namen zur ComboBox hinzufüge diese mit AnsiToUTF8 Convertiert, nur leider habe ich keine Ahnung wie ich das bei DBGrid machen soll / muss, hoffe ihr könnt mir helfen , als lösung wurde mir lazarus-ide channel vorgeschlagen ich solle meine Datenbanken auf UTF8 umstellen, klar und dann soll ich wohl auch meinen Nutzern meines Editors dies auch vorgeschlagen?! ^^

Das brachte mich auch nicht weiter: http://www.mail-archive.com/lazarus@laz ... 03383.html" onclick="window.open(this.href);return false; :(

Und ich denke mal nen Report würde eh nicht ernst genommen werden.

Vllt hab ich ja was übersehen, und ihr könnt mir helfen? =)

Mfg,
Eugen

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Leere Zellen bei DBGrid

Beitrag von piper62 »

Hallo,

Du kannst in der ZConnection bei "Properties" z.B. codepage="utf8" oder die passende Codepage einfügen.
Grundsätzlich ist es sicher gut UTF8 zu nutzen, musst Du aber wissen wenn es schon DB's gibt bei denen die Nutzer mit anderen Codepages gearbeitet haben gibt es natürlich Probleme.
Die Clients sollten selbstverständlich immer mit der Codepageeinstellung des DB-Servers arbeiten.

Gruss

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Leere Zellen bei DBGrid

Beitrag von Christian »

TField hat ein OnGetText ereignis. Darin kannst du z.b. deine Umwandlungen vornehmen bevor irgend eine Datensensitive Komponente die Daten zu gesicht bekommt...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Re: Leere Zellen bei DBGrid

Beitrag von EugenE »

Das mit dem Codepage bei Zeos hat leider nicht funktioniert

Ich erstelle keine Statischen TFields, die werden ja automatisch erstellt wie kann ich denn auf diese dynamischen zugreifen?

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Leere Zellen bei DBGrid

Beitrag von piper62 »

was hast Du denn in der codepage eingestellt?
Das sollte natürlich auch von der DB verstanden werden.

Grundsätzlich sollte eine Lösung über die Connection zu finden sein.

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Re: Leere Zellen bei DBGrid

Beitrag von EugenE »

Code: Alles auswählen

FZeosConnection.Properties.Add('codepage="utf8"');
und mit Zeos verbunden zu einer OracleXE DB, welche ÖÄÜ enthält.

Hier mal nen Screenshot von Zeos und von Oracle selbst
zeos-oraclexe-umlaute.JPG
oracle-umlaute.JPG
Und das wäre nur Zeos mit Oracle. Achja OracleConnection von SQLDB sieht dann genauso aus^^ sowie ODBC mit Oracle und MS Access.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Leere Zellen bei DBGrid

Beitrag von Christian »

Ich erstelle keine Statischen TFields, die werden ja automatisch erstellt wie kann ich denn auf diese dynamischen zugreifen?

Wie auf jede andere Klasse auch.
DataSet.FieldByName('MEINFELDNAME').OnGetText := @MeinGetTextEreignis; ??!!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Leere Zellen bei DBGrid

Beitrag von piper62 »

Also das sieht ganz typisch aus!
Wie ist denn die DB befüllt worden? Ev. über einen Windows Client? Oder einen anderen Rechner der gar nicht UTF8 in der Clientkonfiguration hatte?
Du musst die gleiche Codepage für Deine Verbindung wählen welche Du bei Nutzen der DB vorher hattest sonst kann es nicht funktionieren.
Ev. mal als Codepage "latin1" ausprobieren oder "cp1252" als Parameter in den Properties.

Gruss

EugenE
Beiträge: 440
Registriert: So 10. Dez 2006, 14:59
OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
CPU-Target: 64Bit
Kontaktdaten:

Re: Leere Zellen bei DBGrid

Beitrag von EugenE »

Habe nen Workaround dank 2 Leuten erstellt.

Wer es sehen will : http://bugs.freepascal.org/view.php?id=12206" onclick="window.open(this.href);return false;

Antworten