Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formular in andere DB kopieren

45 views
Skip to first unread message

Herbert Fidesser

unread,
Jan 27, 2010, 8:19:09 AM1/27/10
to
Hallo NG,

der Versuch, unter Acc 2003 ein Formular in eine andere Datenbank zu
kopieren schlägt leider fehl.

Mein Code:

Dim appAcc As Access.Application
Dim pf As String

pf = "Pfad der ZielDB"
appAcc.OpenCurrentDatabase pf & "\ZielDB.mdb"
appAcc.DoCmd.DeleteObject acForm, "frmReports"
DoCmd.CopyObject pf & "\ZielDB.mdb", "frmReports", acForm,
"frmReports"

das in der Ziel-DB bestehende Formular frmReports wird zwar gelöscht,
aber der Kopiervorgang wird mit der Meldung "Die Aktion CopyObject
wurde abgebrochen" beendet.

Was mache ich falsch?
Danke für Tipps.
Gruß
Herbert

Bernd Gilles

unread,
Jan 27, 2010, 8:27:42 AM1/27/10
to
Herbert Fidesser schrieb:

> der Versuch, unter Acc 2003 ein Formular in eine andere Datenbank zu
> kopieren schl�gt leider fehl.

>
> Mein Code:
>
> Dim appAcc As Access.Application
> Dim pf As String
>
> pf = "Pfad der ZielDB"
> appAcc.OpenCurrentDatabase pf & "\ZielDB.mdb"
> appAcc.DoCmd.DeleteObject acForm, "frmReports"
> DoCmd.CopyObject pf & "\ZielDB.mdb", "frmReports", acForm,
> "frmReports"
>
> das in der Ziel-DB bestehende Formular frmReports wird zwar gel�scht,

> aber der Kopiervorgang wird mit der Meldung "Die Aktion CopyObject
> wurde abgebrochen" beendet.

mach's doch mit SaveAsText und LoadFromText.
Ist zwar undokumentiert, funktioniert aber mit allen Versionen ab A2K.

--
Gru�, Bernd
---
Access goes Subversion - http://oasis.dev2dev.de

Herbert Fidesser

unread,
Jan 27, 2010, 8:57:07 AM1/27/10
to
Hallo Bernd,

vorerst danke.

> mach's doch mit SaveAsText und LoadFromText.
> Ist zwar undokumentiert, funktioniert aber mit allen Versionen ab A2K.

Dein Vorschlag hilft mir leider nicht, da Export um Impoert von der
sendenden Instanz bewältigt werden müssen.

Was ist an meinem Code falsch?

Gruß aus Wien
Herbert

Bernd Gilles

unread,
Jan 27, 2010, 9:18:28 AM1/27/10
to
Hallo Herbert,

Herbert Fidesser schrieb:


>> mach's doch mit SaveAsText und LoadFromText.
>> Ist zwar undokumentiert, funktioniert aber mit allen Versionen ab A2K.
>
> Dein Vorschlag hilft mir leider nicht, da Export um Impoert von der

> sendenden Instanz bew�ltigt werden m�ssen.

das macht's nur komplexer, aber nicht unm�glich.
Da die beiden Methoden am Application-Objekt h�ngen, sollte es prinzipiell m�glich sein, das Ganze
mit der von Dir bereits erzeugten Instanz zu regeln.
Es handelt sich dabei doch um eine eigene Access-Instanz, oder?

Luftcode:
Application.SaveAsText acForm, "frmReports", "C:\frmReports.sav"


pf = "Pfad der ZielDB"

'die Instanz appAcc muss vorher erzeugt sein
appAcc.OpenCurrentDatabase pf & "\ZielDB.mdb"
appAcc.LoadFromText acForm, "frmReports", "C:\frmReports.sav"

> Was ist an meinem Code falsch?

m�glicherweise muss die Ziel-DB nach dem DeleteObject wieder geschlossen sein.

Karl Donaubauer

unread,
Jan 27, 2010, 9:48:22 AM1/27/10
to
Herbert Fidesser wrote:
> der Versuch, unter Acc 2003 ein Formular in eine andere Datenbank zu
> kopieren schl�gt leider fehl.

>
> Dim appAcc As Access.Application
> Dim pf As String
>
> pf = "Pfad der ZielDB"
> appAcc.OpenCurrentDatabase pf & "\ZielDB.mdb"
> appAcc.DoCmd.DeleteObject acForm, "frmReports"
> DoCmd.CopyObject pf & "\ZielDB.mdb", "frmReports", acForm,
> "frmReports"
>
> das in der Ziel-DB bestehende Formular frmReports wird zwar gel�scht,

> aber der Kopiervorgang wird mit der Meldung "Die Aktion CopyObject
> wurde abgebrochen" beendet.
>
> Was mache ich falsch?

Du solltest die andere Instanz schlie�en, bevor du von au�en
wieder was hineinschickst. Ich vermisse auch ein New.
Versuch's mal so:

Dim appAcc As Access.Application
Dim pf As String

Set appAcc = New Access.Application

appAcc.OpenCurrentDatabase pf & "\ZielDB.mdb"
appAcc.DoCmd.DeleteObject acForm, "frmReports"

appAcc.Quit
Set appAcc = Nothing

DoCmd.CopyObject pf & "\ZielDB.mdb", "frmReports", acForm, "frmReports"

--
Servus
Karl
****************
Access-FAQ: http://www.donkarl.com /// http://www.donkarl.com?NEK
.NET-Entwickler-Konferenz f�r Accessler 27./28.2. + 20./21.3.2010


Wolfgang Badura

unread,
Jan 27, 2010, 11:51:20 AM1/27/10
to
Hallo Herbert!
"Herbert Fidesser" <hfid...@gmail.com> wrote in message
news:73a2bfbc-d362-41c2...@a12g2000yqj.googlegroups.com...
Hallo NG,

der Versuch, unter Acc 2003 ein Formular in eine andere Datenbank zu

kopieren schl�gt leider fehl.

Ich mache das aus der Quelldatenbank mittels

DoCmd.TransferDatabase acExport, DBFormat, Datenbank, Objekttyp, Objektname,
Objektname, Art

Wobei gilt:
acExport ' = 1
DBFormat = "Microsoft Access"
Datenbank = "Ziel_DB" ' mit komplettem Pfad
Objekttyp = acForm ' = 2
Objektname = "DeinQuellFormName"
Objektname = "DeinZielFormName"
Art = false ' = 0

Ein in der Zieldatenbank eventuell bestendes Form wird �berschrieben.
Siehe auch in der Hilfe unter TransferDatabase (Methode).

Wolfgang


Herbert Fidesser

unread,
Jan 27, 2010, 1:33:34 PM1/27/10
to
Danke Wolfgang,
danke Karl,
danke Bernd,

mit den Anregungen von Bernd und Karl hat es leider nicht geklaptt.
Wolfgangs Vorschlag werde ich morgen testen und dann berichten.

Beste Grüße
Herbert

Peter Doering

unread,
Jan 27, 2010, 1:56:28 PM1/27/10
to
Hallo,

Herbert Fidesser wrote:

> mit den Anregungen von Bernd und Karl hat es leider nicht geklaptt.
> Wolfgangs Vorschlag werde ich morgen testen und dann berichten.

Definiere "nicht geklappt". Bei mir funktioniert die von Karl
vorgeschlagene Methode schon ewig. Hast du denn den Pfad (Variable pf)
gesetzt?

Gruss - Peter

--
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Herbert Fidesser

unread,
Jan 28, 2010, 4:06:35 PM1/28/10
to
Hallo Peter,

> Definiere "nicht geklappt". Bei mir funktioniert die von Karl
> vorgeschlagene Methode schon ewig. Hast du denn den Pfad (Variable pf)
> gesetzt?

Der Pfad ist korrekt (20 x geprüft). Die Ausführung erfolgt korrekt
bis zur Zeile


DoCmd.CopyObject pf & "\ZielDB.mdb", "frmReports", acForm,
"frmReports"

Hier kommt der Laufzeitfehler 29068: Anwendungsname kann diesen
Vorgang nicht abschließen. . Halten Sie die Ausführung des Codes an
und versuchen Sie es erneut.
(Die beiden Punkte stehen wirklich so in der Meldung).

Es wäre interessant, die Ursache für dieses Verhalten zu kennen,
obwohl ich mein Problem mittlerweile anders gelöst habe.

Gruß
Herbert

Peter Doering

unread,
Jan 28, 2010, 5:54:50 PM1/28/10
to
Hallo Herbert,

Herbert Fidesser wrote:
>> Definiere "nicht geklappt". Bei mir funktioniert die von Karl
>> vorgeschlagene Methode schon ewig. Hast du denn den Pfad (Variable pf)
>> gesetzt?
>

> Der Pfad ist korrekt (20 x gepr�ft). Die Ausf�hrung erfolgt korrekt


> bis zur Zeile
> DoCmd.CopyObject pf & "\ZielDB.mdb", "frmReports", acForm,
> "frmReports"
> Hier kommt der Laufzeitfehler 29068: Anwendungsname kann diesen

> Vorgang nicht abschlie�en. . Halten Sie die Ausf�hrung des Codes an


> und versuchen Sie es erneut.
> (Die beiden Punkte stehen wirklich so in der Meldung).

Ok, dann probier (evtl. zum 21x ;-)

- Vor der Ausfuehrung: Debug.Print pf & "\ZielDB.mdb"
(kein doppelter Backslash?)
- Hat die DB ein Startformular oder -Makro? Dieses muesste vorher
deaktiviert werden.
- Ist die DB evtl. anderweitig geoeffnet? Sie muesste geschlossen sein.
CopyObject erwartet exklusive Nutzung.

Wolfgang Badura

unread,
Jan 29, 2010, 3:04:14 AM1/29/10
to
Hallo Herbert!
"Herbert Fidesser" <hfid...@gmail.com> wrote in message
news:50e79855-abf9-4692...@c29g2000yqd.googlegroups.com...

> obwohl ich mein Problem mittlerweile anders gel�st habe

Kannst Du uns sagen, wie?
Denn der Sinn von NG�s ist es, auch andere Teilnehmer an L�sungen zu
Fragestellungen teilhaben zu lassen.

Wolfgang


Herbert Fidesser

unread,
Jan 29, 2010, 11:04:30 AM1/29/10
to
Hallo Peter,

> - Hat die DB ein Startformular oder -Makro? Dieses muesste vorher
> deaktiviert werden.

Ja, es gibt ein Startformular, das über eine Befehlsschaltfläche den
Kopiervorgang startet.
Das Formular ist unabhängig.
Wenn das nicht erlaubt ist, bleibt mir wohl nur der Weg über ein
Autexex-Makro oder?

Beste Grüße
Herbert

Herbert Fidesser

unread,
Jan 29, 2010, 11:06:59 AM1/29/10
to
Hallo Worlgang,

> > obwohl ich mein Problem mittlerweile anders gelöst habe


> Kannst Du uns sagen, wie?

> Denn der Sinn von NG´s ist es, auch andere Teilnehmer an Lösungen zu
> Fragestellungen teilhaben zu lassen.

Deine Reklamation ist grunsätzlich berechtigt, aber von meiner Lösung
hat niemand was. Ich habe die Änderungen manuell an jedem Gerät
vorgenommen.
War fad, hat gedauert, aber funktioniert.

Beste Grüße
Herbert

Peter Doering

unread,
Jan 29, 2010, 12:09:00 PM1/29/10
to
Hallo,

Herbert Fidesser wrote:
>
>> - Hat die DB ein Startformular oder -Makro? Dieses muesste vorher
>> deaktiviert werden.
>

> Ja, es gibt ein Startformular, das �ber eine Befehlsschaltfl�che den
> Kopiervorgang startet.
> Das Formular ist unabh�ngig.
> Wenn das nicht erlaubt ist, bleibt mir wohl nur der Weg �ber ein
> Autexex-Makro oder?

Nein, du musst es nur deaktivieren und hinterher wieder einstellen. Hier
ein paar Code-Ergaenzungen(!) dazu:

Dim strStartupForm As String
Dim Ws As DAO.Workspace
Dim Db As DAO.Database
Dim Prp As DAO.Property

Set Ws = DBEngine.Workspaces(0)
Set Db = Ws.OpenDatabase(pf & "\Ziel.mdb")

strStartupForm = Db.Properties("StartupForm")
Db.Properties.Delete "StartupForm"
Set Db = Nothing 'damit sie wieder frei fuer CopyObject ist.

' Hier kommt dein copy, und hinterher:

Set Db = DeinAccessObjekt.CurrentDb
Set Prp = Db.CreateProperty("StartupForm", dbText, strStartupForm)
Db.Properties.Append Prp
Db.Close
'usw.

Alles Luftcode ... sieht man, oder? ;-)

Herbert Fidesser

unread,
Feb 5, 2010, 9:45:08 AM2/5/10
to
Hallo Peter,

spät aber doch habe ichs nochmals versucht.
Jetzt hat es geklappt. …und ich werde es des öfteren brauchen können.

Danke nochmals.

Gruß
Herbert

0 new messages