[ chips @ 13.05.2010. 20:55 ] @
MSSQL2005, tabela u njemu, polje u njemu nvarchar.

experiment: U njega upisujem iz dva polja iz programa, DBEdit i DBMemo polja.

NAŠA slova se upšu iz DBedita bez problema, a iz DBMemo polja se upišu kao ccds a ne kao ćčšđ.

Kada pogledam upis u tabelu sa SQLManagerom posle upisa iz DBEdita sve je OK, a iz DBMemo pre ovih slova stoje neke dve kockice i stoje slova ccds.

Setup fonta je i u DBMemo polju i u DBeditu isti sve sto može da bude isto isto je.

SASAZ2008 mi je napisao
To je standardni problem sa sistemom koji Delphi koristi - ANSI karakteri i OEM konverzija. Zavisi od toga kako je lokalizovan OS. Nadji negde TntWare komponente (besplatno, sa sorsom) i umesto D7 ADO korsiti Troy-ev LX i ostale njegove DB komponente, u QR koristi isto zamene. Ta kombinacija radi savršeno, ja upravo tako radim godinama.

Zahvaljujem mu se na ovom odgovoru ali problem je u tome što bi morao mnogo toga da menjam, i bojim se da bih nesto prevideo, program ima preko 20 memo polja, a u QReportu i da nespominjem.

Da li postoji neko jednbostavnije rešenje ili neka poboljšana komponenta umesto DBMemo, a koja se jednosatvno kači i dalje na ADO.

[ sasaz2008 @ 13.05.2010. 21:27 ] @
Uzgred, te dve kockice su verovatno oznake BOM signature. Ukoliko sam te dobro razumeo, nije ti potreban unicode, pokušaj da ne koristiš nvarchar, već samo varchar za DBEdit, a memo tip polja za DBMemo. Sve zavisi od toga kakav je Character set postavljen za bazu... Napiši još i CREATE te tabele. Ukoliko ti je potreban unicode, bez unicode komponenti sa D7 teško da ćeš uspeti.
[ savkic @ 14.05.2010. 00:47 ] @
> experiment: U njega upisujem iz dva polja iz programa, DBEdit i DBMemo polja.
> NAŠA slova se upšu iz DBedita bez problema, a iz DBMemo polja se upišu kao ccds a ne kao ćčšđ.

Dakle, za jedno polje u bazi su vezane dve DB kontrole? Da li su te dve kontrole vezane za isti dataset i isto polje u njemu?

> Kada pogledam upis u tabelu sa SQLManagerom posle upisa iz DBEdita sve je OK, a iz DBMemo pre ovih slova stoje neke dve kockice i stoje slova ccds.

A šta se dešava kada tako jednom upisane vrednosti iz DBMemo kontrole, ponovo prikažeš u njoj, da li se vide sva slova?

> Setup fonta je i u DBMemo polju i u DBeditu isti sve sto može da bude isto isto je.

Koji tačno font koristiš i koji charset?

Posle upisa u DBMemo proveri koja je vrednost povezanog dataset polja (AsString koristi). U krajnjem slučaju, ako postoji neki bug u DBMemo kontroli, koristi običan Memo i ručno upisuj vrednosti u polje.


[ chips @ 14.05.2010. 11:10 ] @
@sasaz2008

U MSSQLu ne postoji polje definisano kao MEMO. Ili možda i posoji pa ja ne kontam da je to to, ali kao MEMO ne postoji.

@savkic

1. Da obe su vezane za isti dataset i isto polje, ali i nemora da bude tako. Isto se ponaša.
2.Dokle god ne zatvorim program u DBMemo polju će se videti naša slova đšćč,i to sa čekiranim potvrdjenim unosom u bazi, znači ne EDIT mod ili tako nešto. Mogu da prelazim i na sledece slogove u te "stare" slogove se već NE VIDE đšćč i kada se vratim na ovaj sve će biti uredu. Onog trenutka kada ugasim program i ponovo ga pokrenem slova će biti dscc.
3.Arial, EASTEUROPE_CHARSET.
4. Probaću ovo čim stignem, a što se tiče ručnog upisivanja iz MEMO polja...zbogom godišnji odmore :-(
[ sasaz2008 @ 14.05.2010. 11:51 ] @
Pokušaj umesto toga TEXT/NTEXT, to je isto. Ili pak BLOB SUB_TYPE TEXT, CLOB/NCLOB ili sl.

Ovo u vezi slova je upravo ono što sam napisao - OEM konverzija. T.j. zavisno od toga kako je OS lokalizovan kao i main Character Set baze imaćeš i takvu on-the-fly konverziju.

Uopšte nije problem preimenovati DB komponente direkto u .FRM da imaju prefix TTnt, promeni TADODataset u TTntADODataset i sl. i IDE će sam modifikovati u sorsu... Main Character Set baze obavezno postavi da bude Unicode i to bi trebalo da radi bez problema - tada će VARCHAR zapravo biti tretirani kao NVARCHAR i sl., pošto će snimati sadržaj po unicode.
[ savkic @ 14.05.2010. 12:56 ] @
> 2.Dokle god ne zatvorim program u DBMemo polju će se videti naša slova đšćč,i to sa čekiranim potvrdjenim unosom u bazi, znači ne EDIT mod ili tako nešto. Mogu da prelazim i na
> sledece slogove u te "stare" slogove se već NE VIDE đšćč i kada se vratim na ovaj sve će biti uredu. Onog trenutka kada ugasim program i ponovo ga pokrenem slova će biti dscc.

Da li se naša slova upisana u edit vide i u memo komponenti i obratno, pokušaj da i u edit i u memo upišeš identičan tekst i pogledaj kako će se smestiti u povezani TField, ako su identični (na nivou bajtova) onda moraš imati neki dodatni kod koji kvari upis, ako nisu onda dbmemo nešto radi što kvari utisak. Nađi razliku i postaraj se da tekst unet u memo bude snimljen u field kao da je unet u edit kontroli.

> 4. Probaću ovo čim stignem, a što se tiče ručnog upisivanja iz MEMO polja...zbogom godišnji odmore :-(

Ne verujem da ti tu treba nešto mnogo vremena, dan posla, naravno kada utvrdiš gde je rešenje. I svakako se postaraj da sve servis pakove instalirane za Delphi i komponente koje koristiš.
[ chips @ 14.05.2010. 21:13 ] @
Citat:
sasaz2008: Pokušaj umesto toga TEXT/NTEXT, to je isto. Ili pak BLOB SUB_TYPE TEXT, CLOB/NCLOB ili sl.


Ovo je ipak pomoglo, postavio sam NTEXT gde god je trebalo da DBMemo upisuje u tabelu i još sam skontao da sve nove DBMEmo koje sam postavio na formi su posle toga radile kako treba, a stare nisu, tako da sam stare pobrisao i ponovo postavio. Što je to tako, nepitajte me, možda zatoi što je source koji sam dobio bio radjen na D6, a ja radim na D7, a možda i nije???

Sada radi sve OK,

Hvala Vam na trudu i pomoći.