Access Runtime "Die Ausführung dieser Anwendung[....]"

Moderator: ModerationP

Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon hoffi3d501 » 25. Mai 2022, 15:12

Hallo,

ich habe in einer Access Datenbank (deren einziger Zweck es ist, ein Frontend beim User lokal zu kopieren und auszuführen) folgenden Fehler:

Die Ausführung dieser Anwendung wurde wegen eines Laufzeitfehlers angehalten
Die Anwendung kann nicht weiter ausgeführt werden und wird beendet.


Die eigentliche Anwendung läuft mit der Access Runtime ohne Probleme.

Meine Datei mit dem Fehler sieht wie folgt aus.
- eine Tabelle wo der Quell + Zielpfad und der Dateiname hinterlegt ist
- ein Autoexec Makro

- eine FCT die den Copy Befehl aufruft (könnte man kombinieren)
Code: Alles auswählen
Function FctCopy()
Call copy
End Function


- die Sub Copy
Code: Alles auswählen
Public Sub copy()

On Error GoTo ErrHandl

Dim vQuellPfad, vZielPfad, vQuellDatei, vQuelle As String
Dim objFso As Object

vQuellPfad = DLookup("[QuellPfad]", "[tblPfad]", "[Typ] = 'Frontend'")
vZielPfad = DLookup("[ZielPfad]", "[tblPfad]", "[Typ] = 'Frontend'")
vQuellDatei = DLookup("[QuellDatei]", "[tblPfad]", "[Typ] = 'Frontend'")
vQuelle = vQuellPfad & vQuellDatei
vZiel = vZielPfad & vQuellDatei

If Dir(vZielPfad, vbDirectory) = "" Then
  MkDir (vZielPfad)
End If

    If Dir(vZiel) <> "" Then
        Kill vZiel
    End If

Set objFso = CreateObject("Scripting.FileSystemObject")

objFso.CopyFile vQuelle, vZiel, True

 Dim objShell
    Set objShell = CreateObject("shell.application")
    ' Datei maximized öffnen, Dateiname steht in Textfeld1.Text
    objShell.ShellExecute vZiel, "", "", "open", 3
    ' Shell-Objekt wieder zerstören
    Set objShell = Nothing

Set objFso = Nothing

DoCmd.CloseDatabase

Exit Sub

ErrHandl:
MsgBox Err.Description & " Sub copy()"
Exit Sub

End Sub


Mit einem Access läuft es ohne Fehler durch.
Auch wenn ich die Datei in acddr umbenenne klappt es.
Es klappt auch auf einigen Rechnern, kann da aber keinen Unterschied bei der Runtime feststellen.

Gibt es hier jemanden der Ideen hat?
hoffi3d501
 

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon Bitsqueezer » 25. Mai 2022, 15:37

Hallo,

die Access Runtime reagiert allergisch auf nicht abgefangene Fehler.

Deiner Fehlerbehandlung fehlt ein "Resume" irgendeiner Art (meistens "Resume Sprungmarke", wobei "Sprungmarke" ein Label vor dem ersten Exit Sub ist, wo man dann auch noch "Aufräumcode" durchführen kann - Ziel ist immer, daß eine Prozedur immer nur einen Eingang und einen Ausgang haben soll)
Eine Fehlerbehandlung wird nie mit "Exit Sub" beendet.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8748
Registriert: 21. Jun 2007, 12:17

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon hoffi3d501 » 25. Mai 2022, 18:28

Hallo Christian,

also z.B.

Code: Alles auswählen
DoCmd.CloseDatabase

End:
Exit Sub

ErrHandl:
MsgBox Err.Description & " Sub copy()"
Goto End

End Sub


Geht das?

Wie kann ich das am besten Testen? Offenbar funktioniert es bei Umbenennung in accdr nicht. Also ich bekomme den Fehler nicht.

Grüße
hoffi3d501
 

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon Bitsqueezer » 25. Mai 2022, 19:22

Hallo,

nein, GoTo ist ebenso falsch. Und den Label "End" zu nennen, ist nochmal ungeschickter...

Wie oben geschrieben:
Code: Alles auswählen
Resume Ende ' wenn Dein Label "Ende" heißt, was dann wenigstens kein Schlüsselwort mehr ist.


Ohne Resume ist die Fehlerbehandlung nicht abgeschlossen und der Fehler wird an den Aufrufer hochgereicht. Da die aufrufende Funktion keine eigene Fehlerbehandlung hat, kann die Runtime nichts mehr damit anfangen.
Warum schreibst Du Goto, wenn ich doch oben bereits Resume geschrieben habe?

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8748
Registriert: 21. Jun 2007, 12:17

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon Gast » 30. Mai 2022, 08:14

Hey, weil ich dein Resume verpeilt habe :/

Code: Alles auswählen
DoCmd.CloseDatabase


Ende:
Exit Sub

ErrHandl:
MsgBox Err.Description & " Sub copy()"
Resume Ende

End Sub


Das produziert leider immer noch denselben Fehler.
Habe ich mich da irgendwo wieder vertan?
Gast
 

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon Bitsqueezer » 30. Mai 2022, 08:31

Hallo,

die Frage ist, taucht die Messagebox aus Deinem ErrorHandler überhaupt auf? Wenn nicht, ist es ja kein Fehler, der hier produziert werden würde. Für die Runtime: Am besten in jeder Prozedur eine Fehlerbehandlung einbauen.

Da die Runtime nicht zum Debuggen in den Code springen kann, kann man sich mit entspr. Messageboxen behelfen, um einen Fehler einzugrenzen.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8748
Registriert: 21. Jun 2007, 12:17

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon KlausMz » 30. Mai 2022, 08:35

@hoffi3d501
Bitte unterlasse das zitieren vollständiger Beiträge.
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Benutzeravatar
KlausMz
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 40590
Registriert: 06. Okt 2003, 15:09
Wohnort: Irgendwo in der Pfalz

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon knobbi38 » 30. Mai 2022, 09:09

Hallo,

du solltest zumindest schon in der Messagebox auch die Fehlernummer mit ausgeben und nicht nur die Beschreibung.

Nochmal zurück zu deinem Sourcecode:
Ich gehe jetzt mal davon aus, das du "Option Explicit" verwendest und alle Module Kompiliert wurden. Da du innerhalb einer Runtime nur eingeschränkte Möglichkeiten hast, Fehlermeldungen auszugeben, würde ich dir empfehlen, alle relevanten Daten in ein Logfile ausgeben zu lassen, z.B. die Variablen Inhalte, das Argument für Mkdir und Kill und das Argument für den Shell.Execute Aufruf. Nur so bist du in der Lage, den Programmverlauf zu verfolgen und einzugrenzen, wo dein Problem entsteht.
Professionelle Programm verwenden für solche Ausgaben auch ganz gerne mal die Windows Debug-Schnittstelle oder schreiben in das Eventlog.

Und noch ein paar kleine Anmerkung:
- Wieso verwendest du in diesem kleinen Codeteil einmal native VBA Anweisungen und benutzt zum Kopieren dann das FSO? Du könntest dafür auch gleich alles mit dem FSO erledigen, das wäre dann zumindest stringent.
- du hast daran gedacht, daß du mit mkdir() keinen kompletten Pfad auf einmal anlegen kannst?
- das du sowohl im Zielpfad als auch im Quellpfad die notwendigen Zugriffsrechte besitzt?
- wenn die Messagebox keine Ausgabe macht, du es möglicherweise mit einem nicht abfangbarem Laufzeitfehler zu tun hast? Kann z.B. bei IO Fehlern oder in den Komponenten vorkommen.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4243
Registriert: 02. Jul 2015, 14:23

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon hoffi3d501 » 30. Mai 2022, 09:55

Bitsqueezer hat geschrieben:Hallo,

die Frage ist, taucht die Messagebox aus Deinem ErrorHandler überhaupt auf?


es gibt keinen Fehler. Wenn ich das Ganze mit einem richtigen Access aufrufe läuft es durch.
hoffi3d501
 

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon hoffi3d501 » 30. Mai 2022, 10:01

Hallo,

knobbi38 hat geschrieben:Hallo,
du solltest zumindest schon in der Messagebox auch die Fehlernummer mit ausgeben und nicht nur die Beschreibung.

Ja könnte ich, tatsächlich brauche ich es aktuell nicht

knobbi38 hat geschrieben:Nochmal zurück zu deinem Sourcecode:
Ich gehe jetzt mal davon aus, das du "Option Explicit" verwendest und alle Module Kompiliert wurden.

Option Explicit hatte ich bisher nicht jetzt schon. Ergebnis ist dasselbe
Kompiliert ja

knobbi38 hat geschrieben: Da du innerhalb einer Runtime nur eingeschränkte Möglichkeiten hast, Fehlermeldungen auszugeben, würde ich dir empfehlen, alle relevanten Daten in ein Logfile ausgeben zu lassen, z.B. die Variablen Inhalte, das Argument für Mkdir und Kill und das Argument für den Shell.Execute Aufruf. Nur so bist du in der Lage, den Programmverlauf zu verfolgen und einzugrenzen, wo dein Problem entsteht.

Wie mache ich das?

knobbi38 hat geschrieben:Und noch ein paar kleine Anmerkung:
- Wieso verwendest du in diesem kleinen Codeteil einmal native VBA Anweisungen und benutzt zum Kopieren dann das FSO? Du könntest dafür auch gleich alles mit dem FSO erledigen, das wäre dann zumindest stringent.
- du hast daran gedacht, daß du mit mkdir() keinen kompletten Pfad auf einmal anlegen kannst?
- das du sowohl im Zielpfad als auch im Quellpfad die notwendigen Zugriffsrechte besitzt?
- wenn die Messagebox keine Ausgabe macht, du es möglicherweise mit einem nicht abfangbarem Laufzeitfehler zu tun hast? Kann z.B. bei IO Fehlern oder in den Komponenten vorkommen.


- ich hangel mich an dem lang was ich kann und kenne :)
- ja es wird auf c:\temp geschrieben also kein Akt
- habe ich, wenn ich es mit meinem User und Access starte, wenn es mit meinem User und Access Runtime gestartet wird leider nicht
- keine Ahnung, ich verstehe nur nicht, dass das die DB das tut was sie soll wenn ich es mit Access starte
hoffi3d501
 

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon Bitsqueezer » 30. Mai 2022, 10:04

Hallo,

Du mußt das natürlich auf der Access Runtime testen, denn das Problem passiert ja da. Und da nicht beides auf einem Rechner installiert sein kann, auch auf dem betreffenden Rechner, bei dem wohl irgendetwas anders ist (z.B. Zugriffsrechte auf einen Ordner etc.).

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8748
Registriert: 21. Jun 2007, 12:17

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon hoffi3d501 » 30. Mai 2022, 10:19

Drücken wir es so aus, der Unterschied ist immer die Runtime.
Am selben Rechner mit derselben Berechtigung geht es mit Access nur mit Runtime nicht.
Es geht generell bei Personen mit Runtime nicht.
hoffi3d501
 

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon knobbi38 » 30. Mai 2022, 10:23

Hallo,

du suchst doch nach einem Fehler, dann solltest du die Vorschläge schon annehmen. Solche Aussagen wie
Ja könnte ich, tatsächlich brauche ich es aktuell nicht
ermuntern die Helfer nicht gerade, mit dir an dem Problem zu weiter zu arbeiten und wie Christian auch schon erwähnt hat, sind die Rahmenbedingungen bei der Ausführung innerhalb einer Runtime-Umgebung schon speziell.

Wird nun eine Meldung mit der Messagebox ausgegeben oder nur eine Laufzeitfehlermeldung angezeigt?

Wie mache ich das?

Nun, du machst einen Textdatei auf, schreibst die Informationen dort hinein und schließt am Ende die Datei. Das kannst du sowohl mit VBA selber oder aber mit dem FSO machen:
https://docs.microsoft.com/de-de/office/vba/language/concepts/getting-started/writing-data-to-files
https://riptutorial.com/vba/example/3223/writing-to-an-existing-file-with-filesystemobject
oder mit der Funktion von fhentzsc: http://www.office-loesung.de/ftopic406773_0_0_asc.php

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4243
Registriert: 02. Jul 2015, 14:23

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon knobbi38 » 30. Mai 2022, 10:25

Du hast auf ein und demselben Rechner Access und Access-Runtime installiert?
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4243
Registriert: 02. Jul 2015, 14:23

Re: Access Runtime "Die Ausführung dieser Anwendung[....]"

Beitragvon hoffi3d501 » 30. Mai 2022, 11:08

auf einer VM Access deinstalliert und Runtime installiert
hoffi3d501
 

Nächste

Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste