|
Microsoft Office Access |
|
|
CSV formatNivo:
Postoji nekoliko scenarija kada će vam zatrebati konverzija podataka iz tekstualnih datoteka, obično u CSV formatu ili u obliku Excelovih radnih listova. Recimo, korisnici često dobijaju razne izveštaje u nekom vremenskom periodu u jednom od ova dva formata koji možda već predstavljaju univerzalan standard za razmenu podataka jer ih, praktično, može uvesti bilo koji program za rad sa bazama podataka. CSV datoteku možete pogledati i u Excelu: dovoljno je da je pokrenete. Učitava se Excel koji odmah zatim konvertuje i učitava datoteku u prvi radni list. U ovom slučaju, "ali" se odnosi na format znakova za razdvajanje polja. Kada se znak za radvajanje polja ne slaže sa onim u regionalnim podešavanjima vašeg sistema, Excel će učitati sve podatke u kolonu A. Obično se za delimiter koristi zarez (,), dok se u našem regionu koristi tačka-zarez (;). Da li ćete menjati privremeno region ili izmeniti sve zareze u CSV datoteci, zavisi od sadržaja CSV datoteke. Kada se u bilo gde u CSV datoteci nađe zarez, uključujući i u samom tekstu, on će biti zamenjen tačka-zarezom. Kako želite da izmenite samo zareze koji odvajaju polja, ali ne i zareze u samom sadržaju informacija, morate dobro proveriti celu CSV datoteku. Dakle, preostaje privremena promena regiona. Drugi korisnici, čiji je Windows na engleskim regionalnim podešavanjima neće imati tih problema, osim kada dobiju CSV datoteku kreiranu na računaru sa našim regionalnim podešavanjima... Ukratko, ovakva konverzija će uvek biti neizvesna i zahtevaće dosta manuelnih podešavanja i provera. Najbolje je reći ovako: nema ništa od automatizacije procesa. Kada ste utvrdili da Excel ispravno prikazuje CSV datoteku, velika je verovatnoća da će i Access moći da je učita u tabelu. Na određenim računarima, iako se podešavanja delimitera u regionalnim podešavanjima i CSV datoteci slažu (zarez u oba slučaja), ispravno učitavanje datoteke neće se desiti - Excel će sve podatke strpati u prvu kolonu, što će reći da uvoz podataka u Access bazu ne vredi ni pokušavati. Ne pomaže ni izmena delimitera na jednom, drugom ili oba mesta u tačka-zarez, dva računara sa naizgled istim operativnim sistemom (iz različitih izvora) će se uvek različito ponašati. Jedan će uvek ispravno učitati datoteku, drugi neće nikada. Na žalost, do sada nisam uspeo da saznam uzrok ovakvog ponašanja. Što je još gore, ista funkcija će raditi na jednom računaru u Porto Riku, dok drugi korisnik iz Londona javlja da ne uspeva da prenese sadržaj CSV datoteke u tabelu. Kako su UK i USA regionalna podešavanja ista, zaista ostaje otvorena mogućnost da dva ista operativna sistema proizvedena za različita tržišta ne rade uvek sasvim jednako. Napomena urednika: Bane, UK i USA regionalna podešavanja nisu ista. Ako u sadržaju CSV datoteke postoje datumi, moguće je da uvoz ne uspeva zbog kolizije sa formatom polja Accessove tabele koje treba da primi datum. Uvozom podataka iz tekstualne datoteke možete uticati na format znakova za razdvajanje polja tako da možete odabrati bilo koji znak. Znakovi ponuđeni na izbor su tabulator, tačka-zareza, zarez, razmak ili proizvoljni znak. Access, dakle, može da zaobiđe regionalna podešavanja u čarobnjaku za uvoz podataka. VBA funkcija za automatizaciju prenosa podataka iz CSV datoteke u tabelu je TransferText. Ako pogledate sintaksu funkcije, videćete da ne možete da navedete znak za razdvajanje polja, već je potrebno da definišete sve parametre unosa podataka (SpecificationName). Specifikacija unosa se nalazi u datoteci pod nazivom Schema.ini i nju morate sami da napravite u editoru teksta. Primer sadržaja ove datoteke izgleda ovako: [CSVUvoz] ColNameHeader=True CharacterSet=1252 Format=Delimited(,) Col1=Naziv Char Width 255 Col2=NekiBroj ORDER_DISCOUNT Integer Col3=Datum Date Datoteku Schema.ini postavite u folder u kome se nalazi baza podataka i navedite naziv specifikacije po nazivu u prvom redu datoteke Schema.ini (u ovom slučaju CSVUvoz). Uvoznu specifikaciju nije lako kreirati: potrebno je dosta vremena i pažnje, jer ako navedete ijedan pogrešan parametar, transfer podataka neće raditi.
Srećom, postoji zaobilazni način da naterate Access da sam generiše ovu datoteku. Krenite od uvoza podataka koristeći čarobnjak i navedite potrebne parametre: znak za odvajanje polja, da li je sadržaj svakog polja ograđen navodnikom i naziv postojeće tabele u koju uvozite podatke. Kada utvrdite da je Access uspešno preneo podatke, izbrišite sadržaj table i ponovite poslednji uspešan postupak, ali pre nego što kliknete dugme za uvoz podataka, kliknite na Advanced. U oknu uvozne specifikacije videćete sve parametre uvoza. Sačuvajte uvoznu specifikaciju klikom na dugme Save As i zadajte joj neko ime (u ovom slučaju CSVUvoz). Dovršite uvoz podataka. Za sada još nemate datoteku Schema.ini, ali je Access sačuvao parametre uvoza u jednoj od sistemskih tabela. Sada ćete upotrebom malog trika naterati Access da sam kreira datoteku Schema.ini. Napišite upit sa sledećom strukturom, koristeći SQL prikaz upita: SELECT * INTO [text;database=C:\].[CSVIzvoz#txt] FROM tblNazivTabele; Ovaj upit će kreirati tekstualnu datoteku C:\CSVIzvoz.txt i izvesti podatke iz tabele (u koju ste maločas uvezli podatke). Osim datoteke CSVIzvoz.txt, u folderu C:\ ćete pronaći i traženu datoteku Schema.ini! Sada možete izbrisati tekstualnu datoteku, a prebaciti INI datoteku u folder u kome se nalazi vaša baza. U liniji komande TransferText navedite naziv uvozne specifikacije CSVUvoz, čime konačno zaobilazite nezgodne probleme uvoza tekstualnih datoteka u Access, kakav god da im je uzrok.
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana. |