Duomenų prieigos objektai (DAO) Lastatnaujinta ypatybė pateikia neteisingas datas/laiką Microsoft Access duomenų bazėje

Išplėstinė: reikalauja ekspertų kodavimo, sąveikumo ir kelių vartotojų įgūdžius.Šis straipsnis taikomas tik Microsoft Access duomenų bazės (. mdb).

Simptomai

Duomenų prieigos objektai (DAO) Lastatnaujinta ypatybė pateikia neteisingą Microsoft Access formų, ataskaitų, makrokomandų ir modulių datas/laikus.

Priežastis

Microsoft Access nepraneša Microsoft Jet duomenų bazės varikliui apie specifinių prieigos objektų (formų, ataskaitų, makrokomandų ir modulių) keitimą; Todėl, Dateupdate stulpelį msysobjects lentelėje niekada atnaujinamas į teisingą datą ir laiką. Tas pats pasakytina Microsoft Access 2007, kuris naudoja Microsoft Access duomenų bazės variklis.

Būsena

"Microsoft" patvirtino, kad tai yra problema, Microsoft produktų, išvardytų šio straipsnio pradžioje.

Daugiau informacijos

DAO pateiktas Lastatnaujinta ypatybė pateikia teisingą duomenų bazės modulio objektų (lentelių, užklausų ir ryšių) datą/laiką, bet pateikia tik sukūrimo datą, bet ne paskutinę Microsoft Access konkrečių objektų (formų, ataskaitų, makrokomandų ir modulių) modifikavimo datą. Prieš "Microsoft Access 2000", "Microsoft Access" naudojo Jet duomenų bazės (. mdb) failą, skirtą saugoti duomenų bazės objektus (lenteles, užklausas ir ryšius) bei Microsoft Access specifinius objektus (formas, ataskaitas, makrokomandas ir modulius). Microsoft Access išsaugojo savo konkrečius objektus Jet sistemos lentelėse, ypač MSysObjects ir MSysModules (arba MSysModules2) lentelėse. Lentelės MSysObjects stulpelis Dateupdate yra atsakingas už objekto paskutinės Modifikacijos datos saugojimą ir yra stulpelis, kurį ypatybės Dao lastatnaujinta naudoja grąžinant objekto paskutinę modifikavimo datą. Kai vartotojas modifikuoti ir įrašyti objektą ankstesnėse versijose, Microsoft Access pranešė Jet duomenų bazės variklis, kad objektas buvo modifikuotas, ir Jet atnaujino Dateupdate stulpelį į dabartinę datą ir laiką. Microsoft Access 2000 pristatė Access projekto (. adp) failus, kurie turi galimybę tiesiogiai prisijungti prie Microsoft SQL serverio duomenų bazių nenaudojant Jet duomenų bazės modulis. Nes ADP failus nenaudoja Jet duomenų bazės modulis (arba Access duomenų bazės modulis), Access negalėjo naudoti tą patį saugojimo formatas anksčiau naudojamas Jet duomenų bazių prieigos konkrečių objektų. Jis turėjo saugoti juos į naują OLE doc saugojimo formatas, kuris pasiekiamas tiek Jet duomenų bazių ir Access projektus. Kai vartotojas iš pradžių sukuria naują Microsoft Access konkretų objektą, pvz., formą), duomenų bazės modulis vis dar įveda dabartinę datą ir laiką į lentelės MSysObjects stulpelius Datecreate ir Dateupdate . Tačiau, kai vartotojas modifikuoja ir įrašo objektą, Microsoft Access nepraneša duomenų bazės varikliui; Todėl stulpelyje Dateupdate visada lieka tas pats. Be to, galbūt pastebėjote, kad duomenų bazės lange (versijose iki Access 2007) ir naršymo srityje Access 2007 arba Access 2010 rodo teisingą datą ir laiką objekto paskutinio pakeitimo. Taip yra todėl, kad "Microsoft Access" naudoja savo vidinį mechanizmą sukurtai datai ir modifikavimo datai saugoti nepriklausomai nuo duomenų bazės modulis. Deja, "Microsoft Access" neperduoda šios informacijos savo objekto modelyje; Todėl nėra programinis būdas gauti šią informaciją į Microsoft Access.

Veiksmai, kaip atkurti elgesį

  1. Paleiskite Microsoft Access, ir tada sukurti naują, tuščią duomenų bazę.

  2. Kurti naują, tuščią formą dizaino rodinyje.

  3. Įtraukite teksto laukelį į formą.

  4. Įrašykite formą kaip Frmlastatnaujinta, ir tada uždarykite jį.

  5. Programoje Access 2003 ir ankstesnėse programos Access versijose pasirinkite meniu rodymas ir spustelėkite išsami informacija. Programoje Access 2007 arba Access 2010 dešiniuoju pelės mygtuku spustelėkite kategorijos antraštę naršymo srityje kairėje ir spustelėkite Peržiūrėti pagal detales. Čia rodomos kiekvieno objekto modifikuotos ir sukurtos datos. Atkreipkite dėmesį, kad modifikuoti ir sukurti stulpeliai frmlastatnaujinta forma yra nustatyta į tą pačią datą ir laiką.

  6. Paspauskite CTRL + G, kad atidarytumėte langą tiesioginis Visual Basic doroklis. (Access 2007 arba Access 2010, pirmiausia turite įgalinti turinį arba duomenų bazė turi būti patikimoje vietoje.)

  7. Įveskite šią eilutę į langą Immediate, ir tada paspauskite ENTER:

    ?CurrentDb.Containers("Forms").Documents("frmLastUpdated").LastUpdated

    Įsidėmėkite, kad grąžinta data ir laikas atitinka pakeistus ir sukurtus stulpelius duomenų bazės lange.

  8. Paspauskite ALT + F11, kad grįžtumėte į Microsoft Access.

  9. Atidaryti Frmlastatnaujinta forma dizaino rodinyje.

  10. Į formą įtraukite antrą teksto laukelį, tada jį įrašykite ir uždarykite. Atkreipkite dėmesį, kad modifikuota stulpelyje duomenų bazės lange yra atnaujinta formos data ir laikas.

  11. Pakartokite 7 ir 8 veiksmus.

PastabojeLastatnaujinta ypatybė vis tiek pateikia pradinę datą ir laiką, o ne naują datą ir laiką, rodomą duomenų bazės lange modifikuota stulpelyje.

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Dėkojame už jūsų atsiliepimus!

Dėkojame už jūsų atsiliepimą! Panašu, kad gali būti naudinga jus sujungti su vienu iš mūsų „Office“ palaikymo agentų.

×