15. oktober 2004 - 14:43Der er
19 kommentarer og 1 løsning
Fejl ved DoCmd.CopyObject
Hejsa
I Access97 har jeg oprettet en mulighed for at brugeren ved tryk paa en knap kan eksportere dele af databasen + bagvedliggende data til en ny isoleret DB som folk kan arbejde med paa laptops etc. Problemet er at knappen ligger paa formen "Splash" og ved klik paa knappen i denne formular giver jeg flg: Docmd.Close acForm, "Splash", acSaveNo CloneDB
Hvor CloneDB er en sub som loeber igennem en tabel der indeholder en liste over hvilke tabeller, queries, forms etc der skal kopieres over. Denne fungerer fint. Problemet opstaar naar jeg vil kopiere "Spash" over i den nye DB. Dette forgaar som en del af CloneDB med udtrykket:
DoCmd.CopyObject, db2.Name, , acForm, "Spash"
Naar denne koeres faar jeg Run-time error '2007' You already have an open database object named "Splash"
Hvis jeg lukker formen ned manuelt og koerer CloneDB fra modulet virker det hele fint nok - saa det lader til at "Splash" ikke bliver lukket ordentligt ned naar jeg bruger DoCmd.Close Nogle forslag til hvad jeg ellers kan goere?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
IsLoaded lader til at fungere fint nok, faar ingen fejl paa det, men hvis jeg smider et breakpoint ved For I = 0 To Forms.Count - 1 kan jeg se at Forms.Count = 0, saa formularen skulle vaere lukket - men faar stadig samme fejl ved CopyObject...
Der er jo selvfølgelig også noget paradokselt ved at den skal eksekvere den sidste del af koden på formularen - efter at den er lukket. Derfor lukker den nok ikke formularen "rigtigt" før hele koden er eksekveret.
Du kan ikke konstruere applikationen anderledes? F.eks. lægge knappen på en formular, som ikke skal kopieres med? Eller lægge knappen på værktøjslinien?
Ikke rigtigt :-( Problemet er at denne knap er en del af hoved-navigationspanelet for hele db'en. Alternativet kunne maaske vaere at lave en lille status-box som ikke skal kopieres med over hvor modulet koeres fra.... det vil jeg da lige afproeve!
Utroligt! Foerst flyttede jeg CloneDB action over til load eventen paa en ny formular som aabnes naar Splash lukkes - samme fejl
Nu har jeg flyttet det saa man rent faktisk skal trykke paa en commandbutton foer clone-db koeres. eg har stadig lagt testen fra 15/10-2004 15:00:21 ind paa den nye formular's load-event og knappen er sat til foerst at blive enabled efter at denne er loopet igennem. Men jeg faar stadig sammen fejl.... Nu er al eksport kode med 100% sikkerhed ikke koblet med noget der skal overfoeres.
Ja alle andre formularer (37 stk) kopieres fint sammen med alle andre tabeller, queries osv - det er kun Splash den giver fejl paa... Hvis jeg aabner den nye "midterform" efter af jeg manuelt hyar klikket paa luk knappen for Splash koerer det hele ogsaa fint.... :-S
Kan du ikke ved opstart (vha Autoexec-makro) spørge brugeren om han ønsker at tage kopi af databasen og derefter køre CloneDB inden nogen formularer overhovedet har været åbne?
En anden mulighed (som selvfølgelig heller ikke er optimal) er at kopiere Splash til lokal (og uberørt) kopi:
Jeg kna ikke goere det ved opstart idet der foerst koeres et check paa bruger-rettigheder - og det er ikke alle brugere der har rettigheder til at lave kopier.
Men den med lokal kopi vil jeg lige afproeve ---efter en kaffepuse :-)
Ja - det er selvf rigtigt nok, men det vil nu vaere at firetraekke at brugeren frit kan oprette en kopi efter at de har arbejdet med data. Det virker "naesten" med at lave en temp version og kopiere over. Problemet er bare at jeg stadig ikke kan give den det nye avn Splash i db2. Hvis jeg koerer det som
faar jeg stadig den samme fejl. Men hvis jeg koerer:
DoCmd.CopyObject db2.Name, , acForm, "Splash_temp" Virker det. Problemet er at Splash er den formular der ligger som startup, hvorfor den jo gerne skulle bibeholde sit navn...... Heh det skulle have vaeret saa nemt, men....
Jeps men hvis jeg goer det faa jeg den saevanlige fejl! Jeg kan kopiere den til db2 under "temp" - navnet, men hvis jeg proever at kopiere den som "Splash" faar jeg samme fejl som tidligere....
ok thomas - hvis du kan give mig en pointer om hvordan jeg faar omdoebt formularen Splash_temp naar den ligger i db2, hvor db2 ikke er currentdb - saa kan jeg faa givet dig dine point ;-)
Men jeg tror heller ikke, at det er muligt, da det virker som om, at den åbner Splash-formularen i db2 når du forsøger at eksporterer til den. Så når du ikke får lov at oveskrive den, så får du næppe heller lov at omdøbe den :o(
hehe ja jeg fik lavet en loesning hvor jeg overfoerer den som splash_temp og efterfoelgende saetter splash_temp som startupform fromfor den originale splash. Det goer ikke den store forskel for brugeren - blot en irriterende lille detalje at man ikke kunne kode det "ordentligt" :-) Anyway tak for hjaelpen - du faar point for forslaget som foerste til loesningen ;-)
ok, tak for det....selvom jeg er ked af, at det ikke lykkedes 100%
og du har ret i, at det da er for irriterende :o(
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.