PDA

Vollständige Version anzeigen : Problem mit FE auf runtime


wsd70
19.10.2011, 11:51
Hallo,
ich habe meine DB aufgeteilt in FE und BE. Wenn ich die Pakete auf den Rechner mit der runtime lade wird das FE nicht ausgeführt. (Programm startet, aber beendet sich nach "Sicherheitshinweis... -> Öffnen").
An der 'vertauenswürdigen Quelle' kann es nicht liegen, da die kombinierte (nicht aufgeteilte) Version im gleichen Pfad liegt und auf der runtime einwandfrei läuft.
Ich habe schon 2 Pack-Wege versucht :
FE und BE getrennt und FE und BE gemeinsam gepackt (Seite 2 des Assit. zum Packen : Weitere Dateien).
Beide Versionen negativ. Was mache ich falsch?

Gruß Werner

Fred_BS
19.10.2011, 11:57
Hallo Werner,

woher weiss das FE, wo das BE zu finden ist? Stimmt der Pfad zu den verlinkten Tabellen? Bau doch mal eine Fehlerbehandlung ein, die Dir Aufschluss darüber gibt, woher das Beenden kommt.

HTH
Fred

wsd70
19.10.2011, 12:05
Hallo Fred,
bitte erkläre mir doch noch, wie ich eine "Fehlerbehandlung" einbaue.
Sorry bin Anfänger.
FE und BE liegen im gleichen Pfad. Sie laufen unter der Vollversion einwandfrei.
Wie prüfe ich ob der "Pfad zu den verlinkten Tabellen" stimmt?

Gruß Werner

CptChaos
19.10.2011, 12:50
Und der Pfad zu den Dateien ist identisch wie auf dem Rechner mit der Vollversion?

Also z.B. C:\Program Files\DeineAnwendung ?

wsd70
19.10.2011, 13:46
Hallo Benny
nein, der Pfad auf der Vollversion und auf der runtime sind nicht identisch.
Bei der Aufteilung in FE und BE haben sich beide Teile in der Vollversion automatisch in user\public\documents instaliiert. (ich glaube die FE/BE Version läuft nur in diesem Pfad ??).
Für die runtime kann ich im Packing Assistenten keinen Pfad einstellen. Ich habe nur die Auswahl aus 5 Stamminstallationsordnern. public\documents ist nicht darunter. Ich habe es mit Desktop\aktueller Benutzer probiert und FE und BE in diesen Zweig gelegt.

Gruß Werner

CptChaos
19.10.2011, 14:50
Und woher soll das FE nun wissen wo sein BE liegt?
Da wirst Du nicht umhin kommen, eine entsprechende Lösung zum neuverbinden des BackEnds zu implementieren.

Such mal hier im Forum nach "neu verknüpfen" oder "ReLink"

Lanz Rudolf
19.10.2011, 15:04
Hallo
lies einmal hier in #23
ich finde AutoLink von HansChristian einfach und Gut
http://ms-office-forum.net/forum/showthread.php?t=275972&page=2&highlight=AutoLink
und lade Dir die Test MDB runter ;)

Thomas Möller
19.10.2011, 18:33
Hallo Werner,

Da wirst Du nicht umhin kommen, eine entsprechende Lösung zum neuverbinden des BackEnds zu implementieren.

wie das geht kannst Du hierrnachlesen:
www.donkarl.com?FAQ3.1

CU

wsd70
20.10.2011, 15:58
Hallo Ruedi und Thomas
Danke für eure Hilfe. Ich hatte das VBA Programm schon in den "Begleitunterlagen" gefunden. Aber ich weis nicht wie ich es einsetzen muss.
Müssen noch irgendwelche Dateinamen ausgetauscht werden oder kann ich das Modul einfach nur kopieren?
Wohin kopiere ich es dann?
Die gleichen Fragen habe ich zu dem Autolink. Wie wende ich das an?
Sorry für meine Anfängerfragen
Gruß Werner

Lanz Rudolf
20.10.2011, 16:19
Hallo
Hast Du die Zip-datei Runtergeladen?
und Entzipt ( Extrahiert) zb. in C:\Temp
und die MDE "AutoLinkFE2003" geöffnet/Gestartet
wird da nicht automatich gefragt wo die BE-datei ist
wähle sie aus
z.B. in c:\Temp die Datei "AutoLinked_BE_01" odr. AutoLinked_BE_02

Was Du in der FE brauchst ist
•Tabelle sys aus meiner MDB
•Modul MdlAutoLlink / MdlFileDialog
die anderen nach belieben/bedarf
•Makro AutoExec das beim öffnen wenn die verknüfung nicht mehr OK ist automatisch gefragt (auswahl angezeigt) wird ;)
natürlich das öffnen des Formular FrmBeNeuVerk ist nicht nötig.

ein Formular wie mein Form "FrmBeNeuVerk" kanst Du ja auch ein bauen dann kann man immer die Verknüpfung anpasssen :)
ist aber nicht umbedingt erforderlich!

Lanz Rudolf
20.10.2011, 16:37
Hallo noch einmal
was ich Dir auch empfelen kann ist die sache mit der Tabelle
"TblVerknüpfung" in der BE und dann in der FE verknüpfen
und das Modul "MdlPerVerk"
für weitere Fragen dazu gebe ich Dir gerne weitere Auskunft ;)

z.B. das:
Permanente Verknüpfung mit der Daten–MDB zur Performance Verbesserung
Man kannen die Leistung beim Öffnen der
Hauptdatenbank und der Tabellen und
Formulare deutlich verbessern, wenn man
festlegen, dass die verknüpfte Datenbank
geöffnet bleiben soll.
Dazu erstellen man in der verknüpften
Datenbank (BE) eine leere Tabelle
(TblVerknüpfung) mit nur einem Textfeld
länge 1 ohne einen Inhalt also keine
Eingabe (NULL) kein Index und verknüpfen
diese in der Hauptdatenbank (FE)
In der Hauptdatenbank (FE) Verknüpft man diese Tabelle ganz normal und fügt folgende Befehle irgendwo beim
Offnen (Autoexec, Start-Formular etc.) der DB ein.
Beim Schlissen kann man auf
RsVerk wieder ein Close
machen ist aber nicht
notwendig da die MDB ja
geschlossen wird.
Auf diese Weise wird Verhindert,
dass die Microsoft Jet-Datenbank-Engine
die verknüpfte Tabelle wiederholt öffnet und schliesst
und jedesmal die zugeordnete LDB-Datei erstellt und löscht.

sihe auch im Modul "MdlPerVerk"

wsd70
20.10.2011, 18:01
Hallo Ruedi
besten Dank für Deine ausführliche Hilfe. Werde mich am Wochenende damit beschäftigen.
Gruß Werner

wsd70
21.10.2011, 17:34
Hallo Ruedi,
es funktioniert soweit, aber die ausgewählte BE Datei wird nicht in sys eingetragen. Ich habe schon an 2 Stellen die .mdb geändert in .accdb :
1 x in neuVerK_Click und 2x in MdlFileDialog.
Wo kann der Fehler liegen?
Gruß Werner

Lanz Rudolf
21.10.2011, 19:04
Hallo
so ganz ohne Deinen Code zu sehen währe hier das Antworten ein Ratespiel ;)
Zeige den Code oder Besser Lade eine gezipte Version hoch
Wenn Möglich als ACEESS 2003 MDB
du könntest sie mir auch Per E-Mail sened.
E-Mali adresse gebe ich Dir gerne per PN

wsd70
21.10.2011, 20:25
Hallo Ruedi,
ich habe mich jetzt doch für den VBA Code aus Deinen "Begleitunterlagen" entschieden. (Ich will dem Benutzer nicht die Auswahl der BE zumuten. Ausserdem stehen FE und BE immer im gleichen Pfad).
Ich bekomme aber auch mit dieser Lösung die Fehlermeldung "Bei der Installation.." Ich habe statt "DeineDaten" den Namen meiner BE Datei eingetragen und rufe den Code im Autoexe mit 'AusführenCode' 'TabEinbinden() auf.

Function TabEinbinden()
Dim db As DAO.Database
Dim Daten As String
Dim i As Integer
On Error GoTo FehlerMeldung
Set db = CurrentDb()
Daten = Left$(db.Name, Len(db.Name) - Len(Dir(db.Name))) & "Test_V12_be.accdb"
For i = 0 To db.TableDefs.count - 1
If db.TableDefs(i).Connect <> "" Then
If Mid$(db.TableDefs(i).Connect, 11) <> Daten Then
db.TableDefs(i).Connect = ";database=" & Daten
db.TableDefs(i).RefreshLink
End If
End If
Next i
If Not db Is Nothing Then db.Close: Set db = Nothing
Exit Function
FehlerMeldung:
MsgBox "Bei der Installation ist ein Fehler aufgetreten. ", 16, "FEHLER !"
Exit Function
End Function

Was ist falsch?
Gruß Werner

Anne Berg
21.10.2011, 23:06
Hi,

lass dir doch mal die tatsächliche Fehlermeldung ausgeben, dann siehst du was los ist.

wsd70
22.10.2011, 12:34
Hallo Ruedi,
noch eine Frage: funktioniert diese Lösung auch, wenn FE und BE unter einer runtime auf einen anderen Rechner installiert werden - und dort in einen anderen Pfad als in der Vollversion gelegt werden müssen. FE und BE bleiben aber beide im gleichen Pfad.
Gruß Werner

wsd70
22.10.2011, 12:39
Hallo Anne,
sorry ich bin Anfänger. Bitte sage mir, wie ich die "tatsächliche Fehlermeldung" ausgebe.
Gruß Werner

Steffen0815
22.10.2011, 12:56
Hallo,
mit diesem Code bekommst du leider keine "tatsächliche Fehlermeldung".

Ändere den Code wie folgt:Function TabEinbinden()
Dim db As DAO.Database
Dim Daten As String
Dim i As Integer
On Error GoTo FehlerMeldung
Set db = CurrentDb()
Daten = Left$(db.Name, Len(db.Name) - Len(Dir(db.Name))) & "Test_V12_be.accdb"
For i = 0 To db.TableDefs.Count - 1
If db.TableDefs(i).Connect <> "" Then
If Mid$(db.TableDefs(i).Connect, 11) <> Daten Then
db.TableDefs(i).Connect = ";database=" & Daten
db.TableDefs(i).RefreshLink
End If
End If
Next i
If Not db Is Nothing Then db.Close: Set db = Nothing
Exit Function
FehlerMeldung:
MsgBox Err.Number & ": " & Err.Description, 16, "FEHLER !"
Exit Function
End Function

funktioniert diese Lösung auch, wenn FE und BE unter einer runtime auf einen anderen Rechner installiert werdenJa, das ist der Sinn dieses Codes.

wsd70
22.10.2011, 13:46
Hallo Steffen,
erst mal Danke für Deine Hilfe.
Auf dem Rechner mit der ACC Vollversion läuft alles einwandfrei.
Wenn ich die FE und BE auf dem runtime Rechner installiere läuft das FE nicht :Programm wird nach dem ok für Sicherheitshinweis beendet - ohne Fehlermeldung.
Kann es daran liegen : Vollversion läuft unter Win 7 , runtime läuft unter XP ?

Gruß Werner

Steffen0815
22.10.2011, 15:08
Hallo,
Programm wird nach dem ok für Sicherheitshinweis beendet - ohne Fehlermeldung.Na ich denke wir kommen jetzt langsam zu deinem eigentlichen Problem ;).
Hast du ein Startformular eingestellt.
Knubbel->Access Optionen -> Aktuelle datenbank -> Formular anzeigen
Das ist nämlich Voraussetzung für die Arbeit mit der Runtime.

Btw:
Rätselhaft bleibt allerdings wieso du jetzt plötzlich keine Fehlermeldung mehr bekommts, aber betrachten wir es derweil als gutes Zeichen ;).

wsd70
22.10.2011, 17:36
Hallo Steffen,
ich habe ein Startformular. Die kombinierte Form (dh. nicht aufgeteilt in FE + BE) läuft auf der runtime problemlos, d.h. beim Starten der DB kommt das Formularverzeichnis.
Bei der FE+BE Version wird das Programm vorher beendet.
Gruß Werner

PS: ich stelle fest: wenn ich die DB erstmals in FE + BE aufgeteilt habe läuft sie einwandfrei (unter der Vollversion). Wenn ich aber Access beendet habe, neu starte und die aufgeteilte DB wieder aufrufe stürzt Access ab.

Steffen0815
22.10.2011, 18:25
Hallo,
stürzt Access abWas heißt das genau? Fehlermeldung!!

Das klingt alles ziemlich komisch. Vielleicht kannst du die DB's mal hochladen.

Lanz Rudolf
22.10.2011, 18:46
Hallo
@Steffen
Knubbel->Access Optionen -> Aktuelle datenbank -> Formular anzeigen
Das ist nämlich Voraussetzung für die Arbeit mit der Runtime.
von wo hast Du das bei (ab ) welcher Access Version sol das den so sein ?

@Werner

welche Vollversion von Access hast Du ?
und welche Runtime Version hast Du ?
jeweills mit welchem Betriebssystem ?
Letzte Frage wurde schon erwänt ! (Sorry für die Frage)
Vollversion läuft unter Win 7 , runtime läuft unter XP ?

Steffen0815
22.10.2011, 19:15
Hallo,
von wo hast Du das bei (ab ) welcher Access Version sol das den so seinNa seit wann gibt's denn diesen bl... Knubbel :(. AC2007 ;).

wsd70
23.10.2011, 17:54
Hallo Ruedi,
Vollversion und runtime sind Access 2010.
Die nicht aufgeteilte Version der DB läuft problemlos in der Vollversion und unter der runtime.
Die in FE und BE aufgeteilte Version läuft unter Vollversion problemlos, solange ich nicht das VBA Modul in die Autoexe einbinden. Dann stürzt ACC ab, sobald ich ACC neu starten will.
Gruß Werner

PS: ich glaube das Programm beendet sich nicht richtig, im Verzeichnis bleibt die .laccdb stehen mit einem Schloss am A Symbol

Lanz Rudolf
23.10.2011, 18:13
Hallo
was meinst Du damit :
solange ich nicht das VBA Modul in die Autoexe einbinden
welches VBA Modul ? wo in die Autoexe ? zeige doch wie und wo Du das machst

wsd70
24.10.2011, 10:02
Hallo Ruedi,
ich muss jetzt 2 Wochen verreisen. Bis dahin ist Sendepause.
Besten Dank erst mal für Deine Hilfe und Geduld. Ich hoffe Du hilfst mir weiter wenn ich wieder zurück bin.

Gruß Werner

wb_3001
27.10.2011, 13:53
Hallo Rudolf
Betrifft Deinen Beitrag #7:

Zu Deinem Vorschlag als Muster die DB
AutoLink von HansChristian zu verwenden habe ich eine Frage:

Die dort verwendete Variante der Einbindung von Tabellen durch Drop (=Löschung) und DoCmd.TransferDatabase (=neue Tabelle einbinden) bedeutet doch, daß dann vorhandene Beziehungen zu der neuen Tabelle auch neu angelegt werden müssen. Oder stimmt das so nicht?

Bei der Variante mit db.TableDefs(i).Connect bleiben doch die Beziehungen dieser Tabelle erhalten?

Wolfgang

Thomas Möller
27.10.2011, 14:45
Hallo Wolfgang,

Die dort verwendete Variante der Einbindung von Tabellen durch Drop (=Löschung) und DoCmd.TransferDatabase (=neue Tabelle einbinden) bedeutet doch, daß dann vorhandene Beziehungen zu der neuen Tabelle auch neu angelegt werden müssen. Oder stimmt das so nicht?

bevor Du hier lange auf eine Antwort wartest möchte ich Dir folgenden Hinweis geben: Versuch macht klug. ;)

Du verknüpfst einfach zwei Tabellen, dann "erneuerst" Du die Verknüpfungen auf dem genannten Weg und schaust Dir im Beziehungsfenster an, was passiert ist.

CU

Anne Berg
27.10.2011, 14:52
Hallo,

Beziehungen gehören ins Backend, ändern sich also nicht durch Neueinbindung der Tabellen ins Frontend.

Wenn die Beziehungen im Frontend angelegt würden, könntest du u.U. die Tabellen gar nicht entfernen bzw. nur in einer bestimmten Reihenfolge.

wb_3001
27.10.2011, 16:13
Hallo Anne, Hallo Thomas!

Natürlich gehören Beziehungen ins Backend.

Die Frage war etwas unüberlegt:

Ist eine lokale Tabelle an einer Beziehung beteiligt kann ich keine der beteiligten Tabellen löschen. Dann muß ich die FE-Beziehung vorher löschen und natürlich neu herstellen.

In diesem "besonderen" Fall ist die Änderung der Verknüpfung die sinnvollste Variante, weil sie die Beziehung nicht beeinflußt. Die Löschungsvariante der Beispiels-DB ist daher nicht verwendbar oder würde sich wesentlich verkomplizieren.

Ich habe deshalb immer die Änderung der Verküpfung benützt, da es bei einer meiner Anwendungen im FE die Tabelle lokaleEinstellungen gibt, die zu einer Tabelle im BE eine Beziehung hat. In dieser Anwendung übrigens die einzige dieser Art.

Auf die Idee, die zum BE verknüpfte Tabelle zu löschen und eine neue Tabelle mit demselben Namen zu verknüpfen bin ich gar nicht gekommen. Schließlich ist der Code zur Änderung der Verknüpfung nicht wirklich komplex.

Wolfgang