Microsoft Office Access |
|
|
Oštećena bazaNivo:
Veliki broj pitanja koje dobijam od vas odnosi se na popravak oštećene baze. To su zaista nemile situacije, a problem je u tome što postoji mnogo mogućih razloga koji dovode do narušavanja integriteta baze. Prvi problem je da otkrijete i otklonite uzrok oštećenja, a zatim i da spasete šta se spasti može... Svako ko iole duže radi sa Accessovim bazama će se naći u situaciji kada se od njega očekuje da spase što je moguće veći deo podataka i objekata i time ne samo da uštedi vreme, već povrati i podatke koji ne postoje na drugom mestu. Određenim mehanizmima se može uticati na bezbednost, ali se nikada ne mogu predvideti sve moguće situacije. Pogledajmo neke od situacija kada može doći do oštećenja baze i moguće načine spašavanja podataka. Pre nego što bilo šta započnete da radite, napravite kopiju baze i to ne na istom disku gde se nalazi sama baza već najbolje na disku drugog računara ili na CD-u. Pretpostavka je da disk na kome se baza nalazi nije sasvim ispravan, pa se može desiti da u toku rada ostanete i bez same kopije. Druga stvar koju valja imati na umu je da "popravljena" baza ne garantuje ispravnost podataka. Nakon popravke treba da zadate operaciju sažimanja, a najbolje od svega je da prenesete podatke u potpuno novu bazu.
Znakovi raspoznavanja problemaOsim očiglednih znakova da je baza neispravna, postoje i manje očigledni od kojih određeni spadaju u kategoriju upozoravajućih - onih koji alarmiraju da može doći do skorog većeg oštećenja. Različitih simptoma po kome prepoznajete oštećenu bazu ima zaista mnogo, a njihovo opisivanje ne bi bilo lako; bilo bi dobro da raspolažete nekom od biblioteka znaja Microsofta (MSDN ili TechNet) u tu svrhu. Najčešću poruku sa greškom koju ćete videti je ona sa oznakom 2239 - baza se mora popraviti, ili poruku da datoteka nije Microsoft Access baza, ili pak treću sa oznakom 3343 - nepoznat format baze. Greška 3343 se može pojaviti kada pokušate da otvorite bazu novijeg formata u starijoj verziji programa, što ne znači da je baza oštećena. Ponekad Access neće ništa izveštavati: kada ga pokrenete i pokušate da učitate bazu, ne desi se baš ništa. Određena radna stanica može izazvati oštećenje baze. Razlozi mogu biti raznoliki i kreću se od oštećenog softvera do neispravnog hardvera.
Situacije su raznolike: moguće je čak da je napajanje neispravno ili da je korisnik nemaran, pa gasi računar bez regularne procedure ili ga
samovoljno resetuje usred rada programa. Da biste utvrdili koja radna stanica uzrokuje probleme, preuzmite datoteku
Jetutils.exe (za bazu Accessa verzije 97) sa stranice baze znanja KB176670 Šta činitiNakon što ste napravili kopiju oštećene baze, pokušajte da obrišete LDB datoteku ako postoji. Kada postoji, LDB datoteka označava da je baza u upotrebi. Ako je ne možete obrisati, to znači da neko od korisnika trenutno koristi bazu ili je server jednostavno zaključao datoteku zbog nasilnog prekida u radu sa bazom. Pre nego što resetujete server, proverite još jednom da li neko od korisnika zaista koristi bazu, kako biste izbegli još veće oštećenje. Napravite kopije baze, ali sada pod drugim imenom, kako biste osigurali da niko od korisnika ne pokrene FrontEnd deo kojim pristupa bazi i načini još veća oštećenja. Zatim proverite da li ste intalirali poslednje verzije zakrpa za Access i njegove mehanizme.
Čudno ponašanje u radu sa bazom često ima uzrok neažurnih verzija softvera, npr. Access se nenadano zatvara kada dodajete zapis u tabelu pomoću upita samo ako se na računaru nalazi Windows 2000 SP2 i kada je Jet mašina u verziji za instaliran SP5 ili SP6. Uzgred, za SP4 ili SP5 zakrpe Jet mašine je dokumentovano da nisu sasvim sigurne: npr. ako imate jednu od ove dve zakrpe i koristite Access 2000, polje AutoNumber može ponavljati poslednji broj ako ste prethodno popravljali i komprimovali bazu, što zaista može proizvesti vrlo neprijatne posledice. Pokušajte da prenesete objekte baze u novu bazu: ovo često rešava problem. Ako operacija uspe, preuzmite sa adrese
www.trigeminal.com/lang/1033/utility.asp Nad naizgled ispravnom bazom, Access će dozvoliti da se ona otvori, ali ne i da se aplicira operacija popravke i sažimanja. U ovakvoj bazi
najmanje jedan objekat je oštećen, pa bi se prebacivanje objekata u praznu bazu završilo neuspešno. Iako u Accessu postoji mogućnost importovanja
objekata, morali biste jedan po jedan da ih prenosite dok ne utvrdite tačno koji je oštećen. Iz baze znanja preuzmite programe koji će importovati
sve objekte i prijaviti one koji su neispravni sa stranica KB298176
Još neke "čudne" situacijeKonfliktnih situacija ima zaista mnogo, ali je njihov broj ipak konačan i (većinom) dokumentovan. Podaci u tabelama imaju najveću vrednost, jer se oni obično drže samo na jednom mestu (najčešće na serveru), a njima se pristupa pomoću FrontEnd dela baze koji sadrže ostale objekte. FrontEnd delovi se nalaze na radnim stanicama i samim tim oni su redundantni - to su kopije koje treba da budu identične. Objekti na formi ili izveštaju mogu biti oštećeni tako da se greška manifestuje upozorenjem ili nasilnim prekidom u radu aplikacije, bilo tokom operacije prenošenja objekta u drugu bazu bilo tokom upotrebe. Grešku ignorišite, a zatim prenesite objekte forme ili izveštaja u prazan formular. Operacija može biti zamorna jer morate prenositi jedan po jedan objekat iz jednog u drugi formular, a zatim naknadno morate obraditi VBA programe vezane uz predviđene događaje. Nažalost, apliciranjem operacije popravke i sažimanja baze ne možete uvek otkriti objekat koji je neispravan, kako je primetio jedan od učesnika diskusione grupe posvećene Accessu. Iako su i FrontEnd i BackEnd delovi baze zasebno bili potpuno ispravni, a operacije sažimanja i popravke nisu prijavljivale grešku, aplikacija nije radila. Neispravan objekat na formi otkriven je tek naknadnim primenjivanjem operacije popravke i sažimanja baze i to tek nakon što su preneti svi objekti iz stare, "ispravne" baze u novu MDB datoteku! Nedokumentovane funkcije SaveAsText i LoadFromText mogu vam pomoći kada su objekti, kao što su forme ili izveštaji, neispravni ili se čudno ponašaju - npr. predugo se učitavaju ili ih je nemoguće prikazati na ekranu u obliku za štampu. Kada formu ne možete preneti komandom Import, sačuvajte je u tekstualnom obliku tako što ćete u oknu Immediate VBA prozora otkucati sledeću naredbu:
Formu možete naknadno učitati u novu bazu komandom:
Sa Web stranice http://www.datastrat.com/Code/DocDatabase.txt Greške u VBAInteresantna greška se može javiti i u VBA modulu. Access može i dalje izvršavati funkciju koju ste obrisali ili koju ste zamenili novom! Od verzije Accessa 2002, forma ili izveštaj ne dobijaju odmah po kreiranju pridruženi modul, već im se on dodeljuje naknadno kada otvorite ekran modula (dugme Code na traci alatki) ili kada vrednost HasModule postavite na vrednost True. Problem sa izvršavanjem fantomske funkcije možete razrešiti tako što module procedure eksplicitno kompajlirate odmah nakon kreiranja ili izmene. Naime, Access prilikom učitavanja modula za izvršavanje proverava da li je on već kompajliran. Ukoliko nije, modul se prvo kompajlira, a tek nakon toga izvršava. U neodređenim situacijama ovo pravilo ne važi - Access će izvršiti ranije kompajlirani modul i zapravo izvršiti funkciju koju ste ranije izbrisali! Osim što potencijalno izbegavate ovakvo čudno ponašanje, eksplicitnim kompajliranjem ubrzaćete i rad same aplikacije. Tabelu sa podacima ponekada možete otvoriti iako ste utvrdili da je oštećena, što ukazuje na neki defektan zapis unutar same tabele (najčešće je to sadržaj polja tipa Memo ili OLE). Jednostavan način da locirate oštećeni zapis je da otvorite tabelu u režimu izmene sadržaja i da pregledate sadržaj pomeranjem vertikalnog klizača. U momentu kada neispravni zapis treba da se prikaže na ekranu, Access će prijaviti grešku. Iskopirajte ispravne zapise u novu tabelu, a zatim pokušajte da rekonstruišete sadržaj neispravnog zapisa - ukoliko nemate kopiju baze.
Ukoliko ipak ne uspevate da ovim načinom eliminišete oštećene zapise, kreirajte novu bazu. Proširite izgled dijaloga File / Import pritiskom na dugme Options i unesite samo definiciju neispravne tabele odabirom opcije Definition Only u novu bazu. Neispravnu tabelu pridružite novoj bazi i kreirajte upit tipa Append, kojim ćete sadržaj tabele sa neispravnim zapisom preneti u tabelu nove baze. Uporedite broj zapisa obe tabele i utvrdite koliko zapisa nedostaje, a zatim utvrdite neispravne zapise na osnovu ID broja slogova. U pronalaženju grešaka polja tipa Memo, pomoći će vam sledeća funkcija:
Funkciju pokrenite u oknu Immediate, a kao rezultat ćete dobiti ID brojeve neispravnih zapisa. Poslednji korakNajzad, kada ništa od navedenog ne pomogne, preostaje vam da svoju bazu predate nekoj kompaniji specijalizovanoj za oporavak podataka.
Jedna od najboljih se nalazi na adresi www.pksolutions.com
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana. |