Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Umwandeln alter XP Datenbank auf 2016

Begonnen von Herbert40, Dezember 04, 2022, 19:58:08

⏪ vorheriges - nächstes ⏩

Herbert40

Guten Abend an alle,

wollte letztens meine Alte Datenbank wieder mal benutzen und stellte fest das diese nicht mehr auf 2016 läuft.

die "Declare PtrSafe Function" habe ich umgestellt.

nun ist aber noch das Problem mit "Dim db As DAO.Database"
die DAO360.dll wird ja nicht mehr geladen von 2016 wie ich gelesen habe.
was ich aber nicht gefunden habe ich,!!!Wie mache ich es denn jetzt !!!
z.b.

Private Sub Befehl11_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim var
 
    Set db = CurrentDb                  ' Datenbank definieren
    strSQL = "SELECT * FROM tblBem"     ' beliebigen SQL definieren
    Set rs = db.OpenRecordset(strSQL)   ' Recordset öffnen
 
    If Not rs.EOF Then rs.MoveLast      ' Zum letzten Datensatz
        rs.Edit                         ' Wenn Daten im Datensatz geändert werden sollen
        rs.Fields("pre_id_f") = Me.pre_id
        rs.Update
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    If Me.OpenArgs = "for_BemRG_e" Then
        Forms!for_BemRG.Requery
    End If
    DoCmd.Close acForm, "for_pre_lis"
End Sub

wenn mir da jemand weiterhelfen könnte ?


PhilS

Zitat von: Herbert40 am Dezember 04, 2022, 19:58:08nun ist aber noch das Problem mit "Dim db As DAO.Database"
die DAO360.dll wird ja nicht mehr geladen von 2016 wie ich gelesen habe.
Das ist kein großes Problem. Du musst anstelle der klassischen DAO360.dll jetzt die neuere "Microsoft Office 16.0 Access database engine Objectlibrary" bei den Verweisen einbinden.
Der VBA-Code bleibt unverändert, die o.g. Bibliothek ist DAO nur mit anderem Etikett außen dran.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Herbert40

Supi das hat soweit erstmal geklappt.
das Meiste funktioniert wieder. Jetzt kann ich mir dort sachen rauskopieren die ich für ne neue DB brauche :-)
ich danke Dir

Herbert40

Ich musste leider feststellen das einige Funktionen auch nicht mehr so laufen wie sie sollen :-(,
Wie gesagt ich bin Anfänger und nicht unbedigt ständig am Programmieren.
Ich habe hier eine Verschachtelung von Befehlen die auf Funktionen zurück greift. Ich weiß auch nicht wo ich die damals her hatte. Vieleicht kann mir ja jemand helfen die wieder zum laufen zu bekommen.

Aufruf:
Private Sub but_scan_prog_Click()
    Dim ProgVerzeichnis As String
    Dim FilterTxt As String
    Dim Filter As String
    FilterTxt = "Programme"
    Filter = "*.exe"
        If Nz(Me.scan_prog, "") = "" Then
            ProgVerzeichnis = "C:\Programme\"
        Else
            ProgVerzeichnis = Me.scan_prog
        End If
    ProgVerzeichnis = Scan_Prog_Open(ProgVerzeichnis, , FilterTxt, Filter)
            If Not Nz(ProgVerzeichnis, "") = "" Then
                Me.scan_prog = ProgVerzeichnis
            End If
                Exit Sub
End Sub

Funktion Scan_Prog_Open:

Function Scan_Prog_Open(Optional ByVal StartDir As String = "ProgVerzeichnis", _
                        Optional ByVal StBeschriftung As String = "Datei öffnen", _
                        Optional ByVal FilterTxt As String = "FilterTxt", _
                        Optional ByVal Filter As String = "Filter") As String

Dim fd As New fileDialog
 
Const OFN_FILEMUSTEXIST = &H1000
Const OFN_PATHMUSTEXIST = &H800
Const OFN_HIDEREADONLY = &H4
Const OFN_READONLY = &H1
Const OFN_OVERWRITEPROMPT = &H2
 
   With fd  ' CommonDialog aufrufen
    ' Erläuterungen im Code des KlassenModuls FileDialog

      .DialogTitle = StBeschriftung
      .InitDir = StartDir
     
'      .DefaultExt = "PDF"             'Standard-Endung wenn vom Benutzer nix anderes angegeben
'                                      ' Ansonsten wird Filter1 verwendet
'      .Flags = OFN_FILEMUSTEXIST Or OFN_PATHMUSTEXIST Or OFN_READONLY
'      .Flags = OFN_FILEMUSTEXIST Or OFN_PATHMUSTEXIST
      .flags = OFN_PATHMUSTEXIST
                     
' Hier können bis max. 5 Filter für Datei-Endungen definiert werden
      .Filter1Text = FilterTxt & "  " & Filter
      .Filter1Suffix = Filter
      .Filter2Text = "Programme (*.exe)"
      .Filter2Suffix = "*.exe"
      .Filter3Text = "Alle Dateien (*.*)"
      .Filter3Suffix = "*.*"

'      ... bis max. Filter5Text/Suffix ...
'
      .ShowOpen                          ' oder .ShowSave
   End With
   
Scan_Prog_Open = fd.FileName

End Function

Bein klick auf dem Butten passiert nix :-(
Normalerweise sollte nun in windows ein scanner angezeigt werden und nach auswahl der Programmpfaht in der tabelle abgespeichert werden.

Ich habe leider keine Ahnung warum es Hängt.

PhilS

Zitat von: Herbert40 am Dezember 06, 2022, 11:49:24Normalerweise sollte nun in windows ein scanner angezeigt werden und nach auswahl der Programmpfaht in der tabelle abgespeichert werden.
Soweit ich aus den Programmcode nachvollziehen kann, sollte dort ein Dateiauswahldialog angezeigt werden.
Wenn ich richtig rate, hast du dazu das FileDialog Klassenmodul von Karsten Pries verwendet. Bitte lade dazu dochmal die aktuelle Version dieses Klassenmoduls herunter und importiere es in deine DB (das als Klassenmodul "FileDialog" vorher löschen oder umbenennen). Wahrscheinlich funktioniert deine Anwendung dann schon wieder.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

steffen0815

Hallo,
ZitatBein klick auf dem Butten passiert nix :-(
Hier wäre mein allererster Ansatz zur kontrollieren ober der Code überhaupt aufgerufen wird.
Arbeite mit Haltepunkten und Einzelschritt oder baue eine MsgBox() ein.
Gruß Steffen

Herbert40

das war spitze :-)

genau da hatte ich wohl das fileDialog her.

hab nun die neue version drin und es klappt.

Dankeeee :-)

Herbert40

Ich muß an dieser Stelle noch einmal weiter machen.
Ich habe mich ein bissel zu früh gefreut.
Ich kann zwar jetzt den Pfad der ausführenden Programme in die Tabelle laden und ansprechen musste aber feststellen das Win11 nicht wirklich mit den alten treibern arbeiten möchte :-(
Meine Frage nun;
gibt es eine möglichkeit aus Access heraus App's anzusprechen?
Wo finde ich die auf windows und sind es auch .exe dateien? ich bin da gerade mal voll überfordert.
Meine HP Smart App läuft flüssig und schnell. Wenn ich den alten Treiber des HP Scan.exe anspreche braucht er fast 5 min bis die geöffnet wird.   

PhilS

Zitat von: Herbert40 am Dezember 09, 2022, 21:34:49gibt es eine möglichkeit aus Access heraus App's anzusprechen?

Wo finde ich die auf windows und sind es auch .exe dateien? ich bin da gerade mal voll überfordert.
Gute Fragen, die ich nicht aus erster Hand beantworten kann.
Das sinnvollste Google-Ergebnis ist: Starting Windows 10 "Store App" from the command line
Auf der Basis könnte man evtl. einen automatisierten Prozess erstellen, aber da sind noch einige Details unklar, die man erforschen müsste...
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Herbert40

Ich danke erstmal für die Antwort, werde aber da wohl über eine andere Alternative nachdenken.