[ zliki @ 06.04.2010. 08:51 ] @
Ko sto sam naslov rece, problem je kako konvertovati rekorde iz latinice u cirilicu. Imam bazu sa oko 200000 rekorda pisanih latinicom. Neophodno mi je da ih prikazujem cirilicno. |
[ zliki @ 06.04.2010. 08:51 ] @
[ smal @ 06.04.2010. 09:07 ] @
Postoji alat za to, na Ac_Yucc171 - Konvertor kodnih rasporeda za Access 2000-2003.
Autor Banem. [ Zoran.Eremija @ 06.04.2010. 09:21 ] @
Ovo fantasticno radi samo na Windows 2000 i XP
http://www.microsoft.com/downl...45C37CE947C&displaylang=en [ Take 5 @ 06.04.2010. 09:42 ] @
Citat: smal: Postoji alat za to, na Ac_Yucc171 - Konvertor kodnih rasporeda za Access 2000-2003. Autor Banem. Na Office Praktikum sajtu je uz pomenutu verziju alata za konverziju kodnih rasporeda, dodat i još jedan zanimljiv alat Citat: Istovremeno sam, radeći jedan drugi posao, naišao na zanimljiv problem. Trebalo je da napravim dodatne izveštaje koji se moraju štampati isključivo ćiriličnim pismom. Jedini problem je taj što su svi podaci u bazi podataka zapisani latiničnim pismom, program radi u mrežnom okruženju, korisnici su tokom godina korišćenja programa navikli na latinicu, itd. Za ovu priliku sam doradio gore pomenuti konvertor, ali se ispostavilo da bi promena pisma bila preliki "šok" za korisnike, a iskreno rečeno većina je bila za latinicu iz različitih razloga, najčešće iz navike. Jedino rešenje je bilo to da se podaci tokom generisanja izveštaja konvertuju "u letu" iz pisma u pismo, a da sve ostane po starom. Tako je nastala funkcija koja konvertuje karaktere u letu i u osnovi je derivat prvobitne funkcije konvertora za Word koja omogućava oba smera konverzije. Da bi upotreba bilo jednostavna, predvideo sam da funkcija, osim teksta koji se konvertuje, uzima parametar True ili False. Upotreba je krajnje jednostavna - bazirajte izveštaj na upitu i pozovite funkciju: Code: Lat2Cir([NazivPolja], True) za svako od polja koje želite da štampate ćirilicom i - eto podataka na ćirilici. Ili, ako su podaci u bazi zapisani ćiriličnim pismom upotrebite, istu sintaksu sa parametrom False za konverziju ćirilice u latinicu. Ovu funkciju, kao i gornji dodatak, možete pronaći kao neveliku arhivu Ac_modKonvertor.zip u Download zoni Office Praktikuma. Pre upotrebe raspakujte arhivu, zatim pokrenite Access i učitajte bazu podataka, pređite na VBA prozor (prečica CTRL+G) i uvezite program upotrebom menija File / Import. Praktičnije je da napravite, ako već niste, bazu funkcija u kojoj ćete sakupljati korisne funkcije i zatim, kad vam zatreba, uvezete neku od njih koristeći Access meni File / Get External Data / Import. Konvertor i funkcija za konverziju pisama u letu čine dve obavezne alatke u arsenalu Access programera i verovatno stavljaju tačku na priču o konvertoru za ovaj program... Osim kada je potrebna konverzija u YUSCII "standard"... [ zliki @ 06.04.2010. 10:46 ] @
Zahvaljujem na brzim odgovorima.
Probacu sve navedene varijante. [ ilekicika @ 21.08.2010. 02:22 ] @
Više puta sam pokušao da primenim ovu funkciju Lat2Cir([NazivPolja],True) ali bez uspeha. Sve sam uradio kako je gore opisano ali jednostavno kod mene ne radi. Verovatno negde sam napravio grešku, inače koristim Access 2003. Zato bi vas zamolio da mi okačite primer da vidim gde to grešim. Unapred hvala.
[ banem @ 21.08.2010. 03:20 ] @
Ako je funkcija ovakva:
Function Lat2Cir(strTekst As String, bolSmer As Boolean) On Error GoTo Err_Handler Dim x As Integer If Len(strTekst) = 0 Then Exit Function TriSlovaLat(0) = "LJ": TriSlovaLat(1) = "NJ": TriSlovaLat(2) = "D" + ChrW$(381) TriSlovaCir(0) = ChrW$(1033): TriSlovaCir(1) = ChrW$(1034): TriSlovaCir(2) = ChrW$(1039) Lat(0) = ChrW$(76) + ChrW$(106): Lat(1) = ChrW$(78) + ChrW$(106): _ Lat(2) = ChrW$(68) + ChrW$(382): Lat(3) = ChrW$(108) + ChrW$(106): _ Lat(4) = ChrW$(110) + ChrW$(106): Lat(5) = ChrW$(100) + ChrW$(382): _ Lat(6) = ChrW$(65): Lat(7) = ChrW$(66): Lat(8) = ChrW$(86): Lat(9) = ChrW$(71) _ : Lat(10) = ChrW$(68): Lat(11) = ChrW$(272): Lat(12) = ChrW$(69): Lat(13) = ChrW$(381) _ : Lat(14) = ChrW$(90): Lat(15) = ChrW$(73): Lat(16) = ChrW$(74): Lat(17) = ChrW$(75) _ : Lat(18) = ChrW$(76): Lat(19) = ChrW$(77): Lat(20) = ChrW$(78): Lat(21) = ChrW$(79) _ : Lat(22) = ChrW$(80): Lat(23) = ChrW$(82): Lat(24) = ChrW$(83): Lat(25) = ChrW$(84) _ : Lat(26) = ChrW$(262): Lat(27) = ChrW$(85): Lat(28) = ChrW$(70): Lat(29) = ChrW$(72) _ : Lat(30) = ChrW$(67): Lat(31) = ChrW$(268): Lat(32) = ChrW$(352): Lat(33) = ChrW$(97) _ : Lat(34) = ChrW$(98): Lat(35) = ChrW$(118): Lat(36) = ChrW$(103): Lat(37) = ChrW$(100) _ : Lat(38) = ChrW$(273): Lat(39) = ChrW$(101): Lat(40) = ChrW$(382): Lat(41) = ChrW$(122) _ : Lat(42) = ChrW$(105): Lat(43) = ChrW$(106): Lat(44) = ChrW$(107): Lat(45) = ChrW$(108) _ : Lat(46) = ChrW$(109): Lat(47) = ChrW$(110): Lat(48) = ChrW$(111): Lat(49) = ChrW$(112) _ : Lat(50) = ChrW$(114): Lat(51) = ChrW$(115): Lat(52) = ChrW$(116): Lat(53) = ChrW$(263) _ : Lat(54) = ChrW$(117): Lat(55) = ChrW$(102): Lat(56) = ChrW$(104): Lat(57) = ChrW$(99) _ : Lat(58) = ChrW$(269): Lat(59) = ChrW$(353) Cir(0) = ChrW$(1033): Cir(1) = ChrW$(1034): Cir(2) = ChrW$(1039): Cir(3) = ChrW$(1113) _ : Cir(4) = ChrW$(1114): Cir(5) = ChrW$(1119): Cir(6) = ChrW$(1040): Cir(7) = ChrW$(1041) _ : Cir(8) = ChrW$(1042): Cir(9) = ChrW$(1043): Cir(10) = ChrW$(1044): Cir(11) = ChrW$(1026) _ : Cir(12) = ChrW$(1045): Cir(13) = ChrW$(1046): Cir(14) = ChrW$(1047): Cir(15) = ChrW$(1048): Cir(16) = ChrW$(1032): Cir(17) = ChrW$(1050): Cir(18) = ChrW$(1051): Cir(19) = ChrW$(1052) _ : Cir(20) = ChrW$(1053): Cir(21) = ChrW$(1054): Cir(22) = ChrW$(1055): Cir(23) = ChrW$(1056) _ : Cir(24) = ChrW$(1057): Cir(25) = ChrW$(1058): Cir(26) = ChrW$(1035): Cir(27) = ChrW$(1059) _ : Cir(28) = ChrW$(1060): Cir(29) = ChrW$(1061): Cir(30) = ChrW$(1062): Cir(31) = ChrW$(1063) _ : Cir(32) = ChrW$(1064): Cir(33) = ChrW$(1072): Cir(34) = ChrW$(1073): Cir(35) = ChrW$(1074) _ : Cir(36) = ChrW$(1075): Cir(37) = ChrW$(1076): Cir(38) = ChrW$(1106): Cir(39) = ChrW$(1077) _ : Cir(40) = ChrW$(1078): Cir(41) = ChrW$(1079): Cir(42) = ChrW$(1080): Cir(43) = ChrW$(1112) _ : Cir(44) = ChrW$(1082): Cir(45) = ChrW$(1083): Cir(46) = ChrW$(1084): Cir(47) = ChrW$(1085) _ : Cir(48) = ChrW$(1086): Cir(49) = ChrW$(1087): Cir(50) = ChrW$(1088): Cir(51) = ChrW$(1089) _ : Cir(52) = ChrW$(1090): Cir(53) = ChrW$(1115): Cir(54) = ChrW$(1091): Cir(55) = ChrW$(1092) _ : Cir(56) = ChrW$(1093): Cir(57) = ChrW$(1094): Cir(58) = ChrW$(1095): Cir(59) = ChrW$(1096) If bolSmer = True Then For x = 0 To 2 strTekst = Replace(strTekst, TriSlovaLat(x), TriSlovaCir(x), 1, , vbBinaryCompare) Next For x = 0 To 59 strTekst = Replace(strTekst, Lat(x), Cir(x), 1, , vbBinaryCompare) Next Else For x = 0 To 2 strTekst = Replace(strTekst, TriSlovaCir(x), TriSlovaLat(x), 1, , vbBinaryCompare) Next For x = 0 To 59 strTekst = Replace(strTekst, Cir(x), Lat(x), 1, , vbBinaryCompare) Next End If Lat2Cir = strTekst Exit Function Err_Handler: MsgBox Err.Description, vbCritical, "Greška" End Function Mora biti da javi neku grešku (Err_Handler). Ako da, javi mi koja je greška. Onaj Acc_Yucc bi trebalo da radi na svakoj instalaciji Accessa 2003, barem do sada niko nije prijavio problem. Dakle, u čemu je problem kod konverzije sa gornjom funkcijom? "bez uspeha" nam ne kaže mnogo. [ Gjoreski 001 @ 21.08.2010. 13:56 ] @
eve edne funkcija od mene pa probaj ja , jas ja koristam kaj mene
'-------------------------------------------------------------- ' Funkcija za pretvorajne na latinicni bukvi vo Kirilicni ' Gjoreski Aleksandar -------- Januari.2008 '-------------------------------------------------------------- Function Kirilica(Zbor As String) Dim i As Integer Dim Str As String If Len(Zbor) = 0 Then Zbor = " " For i = 1 To Len(Zbor) Select Case Asc(Mid(Zbor, i, 1)) Case 65 Str = Str + Chr(192) Case 66 Str = Str + Chr(193) Case 86 Str = Str + Chr(194) Case 71 Str = Str + Chr(195) Case 68 Str = Str + Chr(196) Case 124 Str = Str + Chr(129) Case 69 Str = Str + Chr(197) Case 64 Str = Str + Chr(198) Case 90 Str = Str + Chr(199) Case 89 Str = Str + Chr(189) Case 73 Str = Str + Chr(200) Case 74 Str = Str + Chr(163) Case 75 Str = Str + Chr(202) Case 76 Str = Str + Chr(203) Case 81 Str = Str + Chr(138) Case 77 Str = Str + Chr(204) Case 78 Str = Str + Chr(205) Case 87 Str = Str + Chr(140) Case 79 Str = Str + Chr(206) Case 80 Str = Str + Chr(207) Case 82 Str = Str + Chr(208) Case 83 Str = Str + Chr(209) Case 84 Str = Str + Chr(210) Case 125 Str = Str + Chr(141) Case 85 Str = Str + Chr(211) Case 70 Str = Str + Chr(212) Case 72 Str = Str + Chr(213) Case 67 Str = Str + Chr(214) Case 94 Str = Str + Chr(215) Case 88 Str = Str + Chr(143) Case 123 Str = Str + Chr(216) ' mali bukvi Case 97 Str = Str + Chr(224) Case 98 Str = Str + Chr(225) Case 118 Str = Str + Chr(226) Case 103 Str = Str + Chr(227) Case 100 Str = Str + Chr(228) Case 92 Str = Str + Chr(131) Case 101 Str = Str + Chr(229) Case 96 Str = Str + Chr(230) Case 122 Str = Str + Chr(231) Case 121 Str = Str + Chr(190) Case 105 Str = Str + Chr(232) Case 106 Str = Str + Chr(188) Case 107 Str = Str + Chr(234) Case 108 Str = Str + Chr(235) Case 113 Str = Str + Chr(154) Case 109 Str = Str + Chr(236) Case 110 Str = Str + Chr(237) Case 119 Str = Str + Chr(156) Case 111 Str = Str + Chr(238) Case 112 Str = Str + Chr(239) Case 114 Str = Str + Chr(240) Case 115 Str = Str + Chr(241) Case 116 Str = Str + Chr(242) Case 93 Str = Str + Chr(157) Case 117 Str = Str + Chr(243) Case 102 Str = Str + Chr(244) Case 104 Str = Str + Chr(245) Case 99 Str = Str + Chr(246) Case 126 Str = Str + Chr(247) Case 120 Str = Str + Chr(159) Case 91 Str = Str + Chr(248) Case Else Str = Str + Mid(Zbor, i, 1) End Select Next Kirilica = Str End Function [ ilekicika @ 06.09.2010. 14:06 ] @
Hvala na ažurnom odgovoru. Nije bilo greške u kodnom rasporedu funkcije, već u mojoj primeni iste. Naime ja sam funkciju koju je dao Banem pokušavao da pozovem iz događaja On Click tasterana na formi postavljajući nekakav programski kod ali to mi nije polazilo za rukom. Ideja mi je bila da sa dva tastera na formi mogu da dobijem izveštaj u ćirilici ili latinici. Sad sam ukapirao, naravno ako ne grešim, da moram imati dva izveštaja i dva upita sa istim izvorm podataka gde u jednom pozivam funkciju sa ..."False" a u drugom sa ..."True" u zavisnosti šta mi treba. Kada izveštaj postavim na upitu pa recimo jedno polje upita na pr ImePrezime:Lat2Cir([tblImenik.ImePrezime],False)ili True radi besprekorno. Ne znam pa pitam, da li postoji način da sve bude na jednom izveštaju i jednom upitu? Pozdrav.
[ SLOJ.1973 @ 06.09.2010. 19:30 ] @
Da ne otvaram novu temu:Kako konvertovati imena labela,komandnih dugmadi itd... na formama koje su pisane ćirilicom,a sada mi je HITNO potebno da budu na latinici.Da napomenem da je mnogo formi u programu i odgovor tipa :"ručno,jednu po jednu ne dolazi u obzir".Unapred hvala.
[ banem @ 06.09.2010. 20:06 ] @
Pošto je hitno, da probamo ovako (iz glave, verovatno će raditi odmah ili uz manje izmene):
Sub sConvert() Dim ctl As Control For Each ctl In Me.Form If ctl.ControlType = 104 Or ctl.ControlType = 100 Then ctl.Caption = Cir2Lat(ctl.Caption, True) End If Next End Sub 104 je taster, 100 je labela. Iskoristi onu funkciju za promenu latinice/ćirilice. Kad sve izmenja lupi CTRL+S da sačuva izmene. [ SLOJ.1973 @ 06.09.2010. 21:22 ] @
Poštovani banem,gornju funkciju (Lat2Cir) sam stavio u novi modul koji sam nazvao modTranslacija.Kad pokušam da odradim debag baze prijavi mi grešku:Sub or function not defined i selektuje mi red :"TriSlovaLat(0),tako da ne mogu da isprobam kod koji ste mi dali.Gde grešim?
[ banem @ 06.09.2010. 21:41 ] @
Nije kompletna funkcija - promenljiva nije definisana.
Uklonite Option Explicit iz VBA modula ili definišite promenljivu. [ ilekicika @ 07.09.2010. 08:27 ] @
I ja sam u prvom navratu dobio istu poruku ali sam ukapirao da nedostaju definicije promenljivih koje se su naravno bilie u verziji funkcije koju sam imao. Ako ih niste našli evo ih pri ruci:
Dim TriSlovaLat(3) As String Dim TriSlovaCir(3) As String Dim Lat(60) As String Dim Cir(60) As String Isprobaću nov predlog [ banem @ 07.09.2010. 08:52 ] @
Ono što sam slao nije bilo kompletno već je bilo pitanje da ta funkcija ne radi, pa sam dao njen deo da kolega što je postavio pitanje proveri da li govorimo o istom.
Posle sam probao ono što sam poslao - to zaista izmeni Caption na tasterima i labelama, ali se na taj način ne može sačuvati promena dizajna već samo šta piše na objektima (Caption). Može da posluži i kao zaobilazno rešenje, po otvaranju svake forme pokrenuti taj mali program koji sve Caption promeni iz latinice u ćirilicu ili obratno. Ako ima bolji način javite, deluje zanimljivo. :) [ ilekicika @ 07.09.2010. 09:45 ] @
Radi. Interesantno rešenje, praktično služi svsi ne mora da menja dizajn. Može se postaviti na bilo kom događaju. Pitam se kako to isto uraditi sa pismom u samom polju forme, jer složićete se da ako su labele i kontrole latinične da i sama sadržina polja bude u latinici i obratno. Da li je to moguće?
[ SLOJ.1973 @ 08.09.2010. 06:56 ] @
Hvala svima na brzim odgovorima.Nisam stigao da Vam se zahvalim odmah,pa evo sada to činim.Sve radi kako treba.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|