[ djmrky @ 14.09.2006. 14:22 ] @
kako uvuci clipper tabelu sa kodnom stranom 852 npr, u DataSet (pri koriscenju OleDbConnection, izgube se nasa slova)
(hocu da "prevedem" dbf fajl u sql server ili access tabelu)

ako ne moze ovo, onda bi bilo korisno i kad bih mogao da prebacim dbf u txt (ono sto radi utility dbu.exe) ali sve iz c#-a


Hvala unapred!
[ mmix @ 14.09.2006. 16:13 ] @
Zar ne mozes da navedes codepage u connection stringu?


Alternativno, ako import unisti nasa slova znaci da je radio CP1252->Unicode konverziju, mozda da probas da kroz kod uradis Unicode->CP1252 byte array i onda taj byte array da uradis CP852->Unicode, npr:

Code:

polje = System.Text.Encoding.GetEncoding(852).GetString(System.Text.Encoding.GetEncoding(1252).GetBytes(polje));


Ovo pod uslovom da inicijalno ucitavanje nije bilo po ASCII, ako ti je odseko 8-mi bit onda nema leba mora da se natera konekcija da ispostuje codepage.

[ djmrky @ 15.09.2006. 09:17 ] @
Citat:
mmix: Zar ne mozes da navedes codepage u connection stringu?




e pa to upravo i ne znam, a izgleda ne mogu da nadjem nigde po net-u, kako da definisem codepage u connection string-u
[ mmix @ 15.09.2006. 13:07 ] @
Hmm, izgleda da odbc driver za foxpro/dbase/clipper stvarno ne podrzava codepage. Verovatno zato sto ionako ne vraca unicode stringove, konverziju vrsi oledb for odbc.

Jel ti ovo pravis once-off ili ti aplikacija konstantno importuje nove clipper fileove? Ako je smao jednom, probaj da je importujes direktno kroz SQL Server.
[ djmrky @ 15.09.2006. 14:22 ] @
Prvo, mislim da ne mogu da importujem fajlove u sql server jer koristim sql server Express (2005), a on, cini mi se ne obuhvata Integration services u kojima valjda to moze

Ali ionako nije jednokratna situacija, aplikacija povremeno treba da uvuce neke dbf-ove.

Konkretno kad uvucem jedan string iz dbf-a i rasturim ga na char[], dobijam sledece "kodove"
Š = 0x00b5
Đ = 0x2564
Č = 0x00bc
Ć = 0x00c5
Ž = 0x00aa
...
(i za mala slova isto tako nesto)

Hteo bih da radim tu konverziju automatski (pomocu Encoding klase), ali ovde nikako ne mogu da prepoznam (pronadjem) koja bi ovo bila kodna strana, tako da sam za sada nasao neko privremeno resenje (koje ni ne radi tako lose), pa radim 10 Replace-ova za 10 slova u svakom stringu i namestam nasilno Unicode kodove za ta nasa slova i to tako radi ok
[ mmix @ 15.09.2006. 15:14 ] @
Gledas sa pogresne strane, to sto ti vidis su vec Unicode znakovi dobijeni konverzijom. Ono sto tebi treba da bi prepoznao encoding je originalni byte[] stream od kojeg je nacinjen string, a to je tesko dobiti.

Svi znakovi koje si dobio (sem Dj koje mi je skroz sumnjivo) podpadaju pod Latin-1 (CP 1252) opseg Unicode-a. Jesi probao gornji kod? Gornji kod definitivno nece raditi u slucaju da nasa slova nisu u dbf-u po CP852 (ali mislim da nisu budjavi YUSCII , sto je dobra vest).

Ako uspes da izvuces originalni niz nasih slova i njiihovih 8-bitnih kodova (mozda kroz aplikaciju koja je napravila dbf, ili ako otvoris dbf kroz foxpro/dbase/clipper), ja ti mogu reci koji je encoding u dbf-u.

PS. ako imas edit kontrolu nad dbf-om mozes da ubacis "ABCABC<nasa slova>" u neko polje i onda da pogledas dbf kroz neki HexViewer i nadjes ABCABC i posle zapises hex kodove slova

[ negyxo @ 15.09.2006. 17:56 ] @
Citat:
djmrky: Prvo, mislim da ne mogu da importujem fajlove u sql server jer koristim sql server Express (2005), a on, cini mi se ne obuhvata Integration services u kojima valjda to moze

Ali ionako nije jednokratna situacija, aplikacija povremeno treba da uvuce neke dbf-ove.


Mozes sa SQL expresom komotno to da uradis. I express verzija ima opciju za dodavanje linked servera i posle mozes da radis sta hoces. Cak mislim da bi mogao da uradis sve bez i trunke koda u .NET-u. Znaci povezi se sa tvojim data source-om i toje to. Pogledaj i MS SQL mislim da su neki vec tamo pitali nesto u vezi ovoga.
[ Taranto @ 29.11.2007. 14:22 ] @
Pozdrav drustvo!
Da li mi neko moze pomoci kako da iz neke svoje tabele u C#, napunjenu iz nekog txt fajla, kreiram i napunim .dbf fajl?

Pozdrav?
[ MarkoBalkan @ 29.11.2007. 14:50 ] @
dbf možeš prebaciti u access bez problema.