[Delphi] Database Desktop - chybne zobrazenie diakritiky...
Zdravim,
mam taky maly problem... urobil som jeden program v Delphi s databazou urobenou v Database Desktop (tabulka Paradox 7), no len nedavno som si vsimol, ze v Database Desktope mi zle zobrazuje diakritiku... miesto "ľ" sa mi zobrazuje "%" atd... skusal som nastavit aj iny jazyk tabulky (Restructure -> Table Language -> Modify) na "Borland ENG Latin-1", ten isty jazyk som nastavil aj v BDE Administratore ako "LANGDRIVER" pre tabulku Paradox a tiez aj v System -> INIT -> LANGDRIVER... no nepomohlo... co by som mohol este urobit, resp. co urobit, aby sa mi v Database Desktope zobrazovali texty so spravnym kodovanim...
V tom mojom programe pouzivam SQL jazyk a ked pouzijem vyhladavanie "select * from data where name like 'píštaľka'" tak samozrejme to nenajde... aj ked v programe to zobrazi spravne s diakritikou... ale v tabulke je miesto "ľ" -> "%".
OS: WinXP SP2
Database Desktop: v7.0
Delphi 6
Vdaka...
Pokud používáš Paradox, tak jeho tabulky v sobě obsahují identifikaci jazyka, která byla nastavena v době jejich vytvoření. Pak můžeš dělat s nastavením BDE co chceš, ale nebude to mít na ty tabulky vliv.
Řešením je správne nastavit langdriver v BDE před vytvářením abulek nebo použít BDE API funkce, tuším dbiDoRestructure() by mohlo pomoct. Podorbnosti najdeš v helpu v adresáři s BDE.
Nastav si "Langdriver" všade na Paradox Czech 852 !!!
Funguje - odskúšané...
toto som skusal... nepomohlo... nastavil som to v Database Desktope, aj v BDE Configuration (Drivers -> Native -> Paradox a System -> INIT)...
Musis to nastavit pred vytvorenim tabulek.
A pokud pracujes v prostredi Windows, tak nastav Pdox ANSI Czech, coz dpovida Windows-1250
Urobil si restart PC ?
Restart PC nie... len som pozatvaral configuraciu BDE, Database Desktop a Delphi... ale PC som nerestartol...
No tak to urob...
Skusim... ak to nepomoze, urobim to ako pisal JAFI... zmenim konfiguraciu v BDE a na novo urobim tabulku Paradox... da sa nejak urobit export z povodnej tabulky a importovat to do novo vytvorenej tabulky? Je tam uz vela udajov, ktore by sa nedali zadavat rucne...
1.) Ten reštart som myslel preto, aby sa Ti konfigurácia načítala do budúcna pre všetky novozaložené tabuľky....
2.) Samozrejme, že to platí pre novovytvorené tabuľky tak ako písal JaFi.
3.) Skús použiť Datapump.exe /je súčasťou Delphi...
Tak som skusil, co ste mi tu poradili, no nic z toho mi nefunguje... nastavil som kodovanie v configu BDE a vytvoril som nanovo novu Paradox 7 tabulku... no diakritika nefungovala ani tak... v com este robim chybu?
Keď si dáš zobraziť v komponente DBGrid tú Tvoju tabuľku, tak čo... ?
Diakritika sa nezobrazí správne ? Alebo to stále trápiš zobraziť v Database Desktope ?
Zobrazenie v gride som neskusal... mne ide o zobrazenie v Database Desktop... V programe mi to funguje spravne s diakritikou... ale ked si to vyhladam cez SQL select tak mi to proste nevyhlada... ak dam miesto "ľ" "%" tak mi to najde, aj napriek tomu ze sa to zobrazi spravne...
v databaze: ko%ajnice
v programe: koľajnice
ak si to dam vyhladat: select * from data where name like "koľajnice" tak mi nenajde nic
ak si to dam vyhladat: select * from data where name like "ko%ajnice" tak mi najde presne ten zaznam, ktory potrebujem, ale ako zobrazene slovo je: "koľajnice"...
edit: este poznamka... vyhladavanie je realizovane v programe, nie v database desktop... ak si dam zobrazit vsetky polozky, zobrazi ich spravne s diakritikou, ale hladanie s diakritikou uz nefunguje... aj ked je to zobrazene spravne...
Aha, tak potom tento problém možno budem mať aj ja.
Nastav si ještě písmo "s češtinou" v Database desktopu výběrem z nabídky: Edit-->Preferences, vybrat ucho General, klik na tlačítko [Change].
Urobil som aj toto, no nepomohlo... nastavil som tam "Arial"... stale sa mi tam zobrazuje % misto ľ. Vsade mam nastavene "Pdox ANSI Czech"... aj v konfiguracii BDE, aj v Database Desktope... robi to aj vtedy, ked vytvorim novu tabulku Paradox 7... v com este moze byt problem?
Skús upraviť registre:
HKEY_CURRENT_USER\Software\Borland\DBD\ 7.0\Preferences\Properties
zmeň hodnotu SystemFont na FixedSys
Ak už toto nepomôže, tak sa vzdávam....
Problem je dokonca v niecom inom... a tomu uz vobec nechapem... teraz sa o tom nechcem rozpisovat, zajtra to podrobne rozpisem... ale v Database Desktop problem nie je... dokonca ani v LANGDRIVER-i...
Dobre, rozpisem cely sposob ako to funguje:
V tabulke paradox 7 mam nejake stlpce, v ktorych su udaje... jeden udaj je: "píšťalka". Vyhladavanie je ralizovane v Delphi takymto sposobom:
a teraz popis: zadany text si skonvertujem na velke pismena a vyhladam v tabulke, tak ze vsetko skonvertujem na velke pismena...
Hladane slovo: píšťalka
Vysledok v "SearchText" je: PÍŠŤALKA
Ak zadam SQL prikaz: select upper(Mark) from data a vypis si hodim do dbgridu, tak sa mi zobrazi "PÍŠŤALKA" - cize podla spravnosti by hladanie fungovat malo... ale nefunguje...
Ak odstranim "%" v SearchText, ani tak to nefunguje... jedno, aj druhe skonvertuje spravne na velke pismena... zistil som, ze problem robia dve pismena: "ľ" a "ť".
ExecSQL je len moja funkcia, ktora vrati vysledok selectu do nejakeho query... Ide mi o hladanie, kde by sa nerozlisovali male a velke pismena, cize nie hladanie case-sensitive...
Ked som to urobil na sposob case-sensitive, tak to funguje spravne... ale nechapem, jednu vec... ked to prevedie v jednom, aj v druhom pripade spravne, preco to potom nefunguje??? Teda s malymi pismenami to funguje a s velkymi nie... je to normalne???
Kde je problem hadam len nie vo mne...
edit: skonvertovat to na male pismena som este neskusal...
Pozeram, ze vela ste mi neporadili... hmmm...
Takový zoufalý pokus: Zkus použít místo AnsiUpperCase SQL funkci UPPER i na hledaný vzor a dej vědět.
Problém je aj vo Windows, máš anglický. Ja som sa s tým nestretol. Mám český, ale zaujímavé vlákno, človek netuší na akých systémoch budú jeho programy bežať, takže si to tu popozerám.
Ja mám v tej hodnote BDA Admina 'ascii' ANSI.