collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 63
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13848
  • stats Beiträge insgesamt: 64887
  • stats Themen insgesamt: 8753
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Neueste Beiträge

Seiten: [1] 2 3 ... 10
1
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Carl am Heute um 18:35:15 »
Bist Du sicher, dass die Frontend.accdb in das Verzeichnis der loader.accdb kopiert werden soll?

Ja, ich möchte es auf z.B. dem Desktop haben. Das Frontend soll jedesmal neu geladen werden. Wenn der user es direkt startet, erkennt es selbst, ob es veraltet ist und schließt sich im Bedarfsfall mit dem Hinweis, mit dem Loader zu starten.

Und warum beim Form_Current-Ereignis? Jedesmal würde die FE-Datei beim Datensatzwechsel (falls ein  solcher überhaupt auftreten kann) neu kopiert.

Das verstehe ich nicht. Welcher Datensatzwechsel?

Was passiert denn nach dem Kopieren?

Nach dem Kopieren möchte ich das Frontend öffnen und den Loader schließen.

Würdest Du es anders machen?

Carl
2
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Carl am Heute um 18:26:26 »
@Carl
Wo hakt es denn in der von mir (#11) gezeigten Lösung?

gruss ekkehard

Ich vermute es ist zu viel auf einmal, ich verstehe es nicht. Ich bin vom Denken her nicht so gut in diesen Gegenständen. Am Besten ist, wenn ich mich mit Beispielen schrittweise heran taste und sie lerne. :-)

Diese "Löffelfütterung" ist in dem Fall besser. Zum Beispiel kriege ich bei mehreren sich kombinierenden Fehlern den Fehler nur noch sehr schlecht über die Kombinatorik raus. Es erscheint mir besser, schrittweise zu bauen und immer von einer funktionierenden Zeile zur nächsten zu hangeln.

Carl
3
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Beaker s.a. am Heute um 13:46:28 »
@Franz
Zitat
Bist Du sicher, dass die Frontend.accdb in das Verzeichnis der loader.accdb kopiert werden soll?
Warum nicht? Bei mir liegen Loader und FE auch im gleichen lokalen
Verzeichnis.

@Carl
Wo hakt es denn in der von mir (#11) gezeigten Lösung?

gruss ekkehard
4
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von DF6GL am Heute um 10:05:38 »
Hallo,



Private Sub Form_Current()
FileCopy "S:\Frontend.accdb",  Application.CurrentProject.Path & "\Frontend.accdb"
End Sub



Bist Du sicher, dass die Frontend.accdb in das Verzeichnis der loader.accdb kopiert werden soll?

Und warum beim Form_Current-Ereignis? Jedesmal würde die FE-Datei beim Datensatzwechsel (falls ein  solcher überhaupt auftreten kann) neu kopiert.

Was passiert denn nach dem Kopieren?


5
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Carl am Heute um 09:40:41 »
Ich versuche, hiermit beim Starten des loader.accdb die Datei frontend.accdb in den Ordner zu kopieren, in dem der loader.accdb liegt. Aber es geht nicht und er öffnet den Debugger. Wie muss der Code richtig heißen?

Private Sub Form_Current()
FileCopy "S:\Frontend.accdb", & Application.CurrentProject.Path & "\Frontend.accdb"
End Sub

Carl
6
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von DF6GL am Heute um 09:18:58 »
Hallo,


wird jetzt schon per Lottoziehung entschieden, welche Datenbank gestartet werden soll?   :) :) ;D ;D


Zitat
Ich muss mit einer DB als Startdatenbank arbeiten. Keine Batch-Datei.

Kannst Du auch erklären, warum?? Und was genau diese "DB" nun machen soll?

Ein Beispiel eines Db-Loaders hast Du doch  letzthin schon bekommen.

Und hier auch noch ein Beispiel eines VB-Scrips, wenn's denn komplizierter als eine bat-Datei sein muss:

Dim strOrigDir, strLocalDir, strFileName, strFileAttr
Dim strOrigFile, strNewFile, strFile
Dim fso

'Hier die richtigen Namen einsetzen
strOrigDir = "Z:\Server_DB_Verzeichnis\"     ' hier der Pfad zu der Original-Datei
strLocalDir = "C:\Lokal_DB_Verzeichnis\"      ' hier der Pfad auf dem lokalen Rechner
strFile = "MeineTolleDB.accdb"                     ' Dateiname der DB

strOrigFile=strOrigDir & strFile
strNewFile=strLocalDir & strFile
Set fso = CreateObject("Scripting.FileSystemObject")

if NOT fso.FileExists(strOrigFile) Then
      ' msgbox "Die Prüfung nach einem Programmupdate für " strFile & " im dafür vorgesehenen Verzeichnis verlief ergebnislos. Ein Update steht momentan nicht zur Verfügung. Starten Sie Ihre DB  wie gewohnt. " & VbCr & strOrigFile
      '   wscript.quit
End if


fso.CopyFile strOrigFile, strNewFile, true

set fso = nothing

DIM WSHShell
DIM rootPath
DIM mdbKey
DIM accessRegKeyString
DIM applicationPath
DIM subKeyString
 
SET WSHShell = CreateObject("WScript.Shell")
 
rootPath = "HKLM\Software\Classes\"
mdbKey = ".accdb\"
subKeyString = "shell\Open\Command\"
 
accessRegKeyString = WshShell.RegRead(rootPath & mdbKey)
 
applicationPath = WshShell.RegRead(rootPath & accessRegKeyString & "\" & subKeyString )


applicationPath=left(applicationPath,instr( applicationPath,".EXE")+4)
msgbox applicationPath & " """ & strNewFile &  """"
WSHShell.run applicationPath & " """ & strNewFile &  """"
Set WSHShell = Nothing



Kopiere den Code in eine txt-Datei und benenne sie um in "BlahBlahBlah.vbs"
Ersetze die gekennzeichneten Stellen durch Deine Verzeichnisnamen und den DB-Name.

Bei Doppelklick auf die vbs-Datei passiert genau das, was Du erreichen willst.



7
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Lachtaube am Heute um 00:41:59 »
In das Beispiel haben sich HTML-Artefakte eingeschlichen. Richtig müsste es so formuliert sein:   MsgBox "Die aktuelle Datenbank befindet sich unter " & Application.CurrentProject.Path & "."
Variablen werden deklariert; im Modulkopf (also vor der ersten Sub bzw. Function) in der Regel mit dem vorangestellten Schlüsselwort Public (gleichwertig Global) oder Private (gleichwertig Dim) oder innerhalb einer Sub, Property bzw. Function mit dem Schlüsselwort Dim oder Static. Danach folgt dann der gewählte Variablenname. Ohne Angabe einer Klammerung hinter dem Variablennamen handelt es sich um eine skalare Variable, die genau einen Wert aufnehmen kann. Als letztes folgt dann optional der Datentyp (wie Long, Byte, Date, String, usw.). Fehlt die Angabe des Datentyps, wird die Variable oder das Datenfeld vom Typ Variant sein, der quasi alle Datentypen und auch Null-Werte und Instanzen von Objekten repräsentieren kann.

Will man jedoch mehrere Variablen gleichen Typs anlegen, setzt man hinter die Variable ein Klammerpaar. Jetzt kommt der Begriff Dimensionierung zur Geltung, wobei es unterschiedliche Formen der Dimensionierung gibt. Will man z. Bsp. die Lotto-Zahlen erfassen und weiß, dass 6 Werte (ohne Zusatzzahl) zugewiesen werden, die linear in einer Folge vorliegen, deklariert man also ein eindimensionales Datenfeld dafür und kann die Ober- und Untergrenze seines Datenfelds bereits bei der Deklaration festlegen. Steht die Anzahl der zu speichernden Werte erst später fest, bleibt es bei einem leeren Klammerpaar. Die Dimensionierung wird dann durchgeführt - bleiben wir bei den Lottozahlen -, wenn wenn feststeht, ob die Lottozahlen mit oder ohne Zusatzzahl erfasst werden sollen. Dafür gibt es dann eine weitere Anweisung, die ReDim heißt.

Standardmäßig ist die Untergrenze eines Datenfelds der Index 0, der nicht extra angegeben werden muss. Soll der Index mit einem anderen Wert starten, so muss auch der untere Wert angegeben werden. Beispiel in einem allgemeinen Modul:Option Explicit

Public gLottoZahlen(5) As Byte 'Byte kann Werte zwischen 0..255 speichern
'erster Wert steht in gLottoZahlen(0)
'letzter Wert steht in gLottoZahlen(5)

Private pLottoZahlen(1 To 6) As Long 'Angabe von Unter- und Obergrenze
'erster Wert steht in pLottoZahlen(1)
'letzter Wert steht in gLottoZahlen(6)

Sub Foo()
   Dim LottoZahlen() As Integer 'Größe der Dimension ist noch unbekannt

   'es soll auch die Zusatzzahl erfasst werden
   ReDim LottoZahlen(6) 'schafft Platz für 7 Werte im Array 0..6
End Sub

Will man im Datenfeld mehr als eine Ziehung erfassen, kann die Dimension erhöht werden. Für vier Ziehungen könnte man dann ein zweidimensionales Datenfeld anlegen, bei dem selbst zu definieren ist, ob in der ersten Dimension die Woche oder die Position der Lottozahl steht.Private pLZ(3, 6) As Long 'zuerst die Woche, dann die Zahlen (28 Werte)
So, ich will das jetzt hier nicht weiter vertiefen. Jedes Lehrbuch zu VBA sollte das auch besser und umfangreicher erklären können.

PS: Hatte ich Dir nicht neulich auch einen Link zu einem VBA-Wikibook zukommen lassen - oder täusche ich mich da?
8
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Carl am Februar 17, 2018, 21:01:23 »
Schau Dir bitte die CurrentProject.Path-Eigenschaft in der OL-Hilfe an.

Ist das der Code:
& Application.CurrentProject.Path &

Ich brauche erstmal einen funktionierenden Code als Beispiel, dann kann ich das nach und nach anpassen und auf andere Projekte abwandeln. Mir fehlt irgendwie das Grundverständnis für die Funktionsweise solcher Zeilen. Hast Du nicht irgend wie mal einen größeren Code, wo ich mir das Ganze im Zusammenhang ansehen kann?

Ich verstehe auch nicht die Funktionsweise von "dimensionieren" usw..

Carl
9
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von Carl am Februar 17, 2018, 20:54:31 »
Ich muss mit einer DB als Startdatenbank arbeiten. Keine Batch-Datei.

Carl
10
Access Programmierung / Re: Anzeige: Neue Version existiert
« Letzter Beitrag von bahasu am Februar 17, 2018, 20:13:31 »
Hi,

dass die Batchdatei nicht prüft ob das zentrale FE wirklich neuer ist als das lokale sondern immer kopiert.

Bei einem anderen Lösungsweg kann man in einer Batch-Datei den Befehl verwenden:
xcopy X:\Server\MeineDatenbank.mdb C:\1\*.* /D/C/R/Y

"/D" hat die Eigenschaft, dass nur eine aktuellere Datei in das Zielverzeichnis kopiert wird.
Diese Batch-Datei besteht aus 2 Zeilen:
Der obigen Kopieranweisung und der Zeile mit dem access-Aufruf.
Der Aufwand ist also relativ einfach.

Harald
Seiten: [1] 2 3 ... 10