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 ?
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.
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
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.
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 (https://www.kpries.de/index.htm?Entwicklertools/filedialog.htm) 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.
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.
das war spitze :-)
genau da hatte ich wohl das fileDialog her.
hab nun die neue version drin und es klappt.
Dankeeee :-)
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.
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 (https://answers.microsoft.com/en-us/windows/forum/all/starting-windows-10-store-app-from-the-command/836354c5-b5af-4d6c-b414-80e40ed14675)
Auf der Basis könnte man evtl. einen automatisierten Prozess erstellen, aber da sind noch einige Details unklar, die man erforschen müsste...
Ich danke erstmal für die Antwort, werde aber da wohl über eine andere Alternative nachdenken.