Hallo zusammen,
bin neu hier und habe mich eigentlich auch schon hier soweit umgeschaut. Dennoch habe ich leider keine Lösung für mein Problem gefunden und bitte um Eure Unterstützung.
Ich möchte in einem aktuell angezeigten Datensatz in einem Formular (Quelle ist eine Tabelle mit rund 9000 Datensätzen) einen Hyperlink aktualsieren. Der Hyperlink verweist auf ein Dokument, dessen Grunddaten in der Tabelle erfasst werden bzw. wurden. Diese Daten werden in unregelmässigen Abständen aktualisiert und damit muss auch der zugehörige Hyperlink angepasst werden.
Ich habe im Internet den folgenden Code gefunden, den ich auf meine Bedürfnisse soweit angepasst habe. Leider wird hier immer nur der erste Datensatz aktualisiert, obwohl ich einen Filter auf den ausgesuchten Datensatz gesetzt habe. :'(
Was muss ich hier ändern zw. ergänzen, dass der Hyperlink auch wirklich nur im gewählten / gefilterten Datensatz aktualisiert wird?
Würde mich freuen, wenn Ihr mir hier helfen könntet!! :)
Private Sub UPDLINK_Click()Me.Filter = "DOC_NO LIKE '*" & Me!DOC_NO & "*'"Me.FilterOn = TrueDim fDialog As Office.FileDialog
Dim i As Long Dim rs As DAO.Recordset Dim db As DAO.Database Set db = CurrentDb Set rs = db.OpenRecordset("DOC_ALL", dbOpenDynaset) Set fDialog = Application.FileDialog(msoFileDialogFilePicker) With fDialog .Filters.Clear .Filters.Add "Documents", "*.doc; *.xls; *.pdf", 1 .Filters.Add "Pic / Drawing", "*.jpg; *.jpeg; *.bmp; *.tif", 2 .Filters.Add "All", "*.*", 3 .AllowMultiSelect = False .TITLE = "Choose File" .InitialFileName = "O:\All...\...Publications" 'Der Ordnerpfad ist fest programmiert .InitialView = msoFileDialogViewDetails .ButtonName = "Set LINK" .Show If .SelectedItems.Count > 0 Then For i = 1 To .SelectedItems.Count rs.Edit rs!LINK = .SelectedItems(i) rs.Update Next i 'Nächster Schleifendurchgang, bis i die Anzahl der vorhandenen Dateien ist. Else MsgBox "kein Pfad ausgewählt." End If End With Me.Requery 'AutoEintrag in FormularDim Anzeigetext As StringDim Hyperlinkadresse As StringDim Anker As StringAnzeigetext = "View Pub"Hyperlinkadresse = LINKAnker = LesezeichenLINK.Value = Anzeigetext & "#" & Hyperlinkadresse & "#" & AnkerMe.Refresh Exit SubEnd Sub
ach so ich hatte noch vergessen...ich verwende Access 2010.
Vielleicht ist das noch wichtig. :-[
Hallo,
Habe mir mal schnell die Mühe gemacht den Code ordentlich zu
formatieren. Dann haben viele nämlich eher die Motivation den zu lesen.
Dabei habe ich meine Einlassungen direkt als Kommentare eingefügt.
Private Sub UPDLINK_Click()
Me.Filter = "DOC_NO LIKE '*" & Me!DOC_NO & "*'"
'eine ID vergleicht man auf Gleichheit
' "DOC_NO = " & Me!DOC_NO
Me.FilterOn = True
Dim fDialog As Office.FileDialog
Dim i As Long
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = CurrentDb
Set rs = db.OpenRecordset("DOC_ALL", dbOpenDynaset)
'HIER musst du auf den ausgewählten DS filtern
' "SELECT DOC_NO, LINK FROM DOC_ALL WHERE DOC_NO = " & Me!DOC_NO
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.Filters.Clear
.Filters.Add "Documents", "*.doc; *.xls; *.pdf", 1
.Filters.Add "Pic / Drawing", "*.jpg; *.jpeg; *.bmp; *.tif", 2
.Filters.Add "All", "*.*", 3
.AllowMultiSelect = False
.Title = "Choose File"
.InitialFileName = "O:\All...\...Publications" 'Der Ordnerpfad ist fest programmiert
.InitialView = msoFileDialogViewDetails
.ButtonName = "Set LINK"
.Show
If .SelectedItems.count > 0 Then
For i = 1 To .SelectedItems.count
rs.Edit
rs!LINK = .SelectedItems(i)
rs.Update
Next i 'Nächster Schleifendurchgang, bis i die Anzahl der vorhandenen Dateien ist.
'die For...Next-Schleife kannst du dir sparen, da du eh nur eine Auswahl zulässt (AllowMultiSelect = False)
Else
MsgBox "kein Pfad ausgewählt."
End If
End With
Me.Requery
'End Sub 'kommt ja wohl zu früh
'wozu soll der nachfolgende Code gut sein?
'AutoEintrag in Formular
Dim Anzeigetext As String
Dim Hyperlinkadresse As String
Dim Anker As String
Anzeigetext = "View Pub"
Hyperlinkadresse = LINK 'sollte doch rs!LINK sein
Anker = Lesezeichen
'was ist Lesezeichen, ist als Variable nicht deklariert
LINK.Value = Anzeigetext & "#" & Hyperlinkadresse & "#" & Anker
'1. warum noch mal überschreiben, der Pfad wird doch oben schon aktualisiert
'2. wenn, dann mit rs.Edit und rs.Update und rs!LINK = ...
Me.Refresh
Exit Sub
End Sub
Was mir ansonsten nicht klar ist; - wie erkennt der User die richtige
Datei im FileDialog?
gruss ekkehard
Hallo und guten Morgen Ekkehard,
erst einmal vielen Dank für Deine Antwort und Deine Bemühungen! :)
Ich hatte den Code eigentlich in Form gepostet, aber irgendwie ist der dann beim Absenden "zusammengerutscht". Habe leider keine Ahnung warum.
Keine Ahnung habe ich ehrlich gesagt auch beim Programmieren mit VBA. Mit knapp 60 ist es auch recht schwierig, sich da noch ohne weiteres hineinzuversetzen.
Das meiste - eigentlich alles - habe ich mir nach und nach aus dem Internet aus verschiedenen Posts zusammengesucht.
Die Datenbank ist im Laufe der Jahre gewachsen und ich habe versucht, sie nach besten Wissen und Gewissen zu programmieren. Das bischen VBA, was ich bis dahin benötigt habe, habe ich mir zwar angeeignet, bin jedoch recht weit davon entfernt, einen vollständigen längeren Code selber fertigzustellen. Daher auch meine Anfrage.
Zu Deinen Fragen vielleicht noch einmal eine paar kurze Ergänzungen / Erklärungen zum Arbeitsablauf bei der Bearbeitung eines Datensatzes:
in einem geteilten Formular (Tabellenansicht oben, Formularansicht unten) gibt der User in einem Suchfeld einen Suchbegriff oder einen Teil eines Suchbegriffs ein. Als Ergebniss werden entsprechend die gefundenen Datensätze angezeigt. Der User klickt auf einen Datensatz, den er bearbeiten möchte.
Mit einem Klick auf einen Button ("Update Link") soll u. a. Code ausgeführt werden. Dabei öffnet sich ein Dialog mit einem fest vorgebenen Ordnerpfad, in dem der User die ihm bekannte Datei für den Hyperlink auswählt. Im Formular soll als Anzeigetext anstatt der langen Hyperlinkadresse eine kurzer Text ("View Pub") erscheinen.
Leider darf ich aus Datenschutzgründen keine Screenshots aus der Datenbank weitergeben; das würde vielleicht die o. a. Ausführung besser verdeutlichen...sorry!
Ich habe mir Deine Antworten und Ergänzungen angesehen und denke, dass ich Dich auch verstanden habe.
Zum Thema DS filtern: Dein Code
"SELECT DOC_NO, LINK FROM DOC_ALL WHERE DOC_NO = " & Me!DOC_NO
ergibt leider eine Fehlermeldung beim Kompilieren. Liegt das eventuell an den "?
Leider komme ich hier dann auch nicht weiter; vielleicht kannst Du mir hier noch einmal auf die Sprünge helfen.
Den Schleifendurchgang hätte ich tatsächlich lassen können. Ich hatte ihn schlichtweg übersehen, als ich AllowMultiSelect von True auf False geändert hatte.
Das "End Sub" hatte ich zwischenzeitlich herausgenommen; da bin ich leider erst nach dem Posten darauf gestossen...sorry.
Der zuletzfolgende Code "Autoeintrag in Formular" soll wie oben schon erwähnt aus der langen Hyperlinkadresse im Anzeigetext nur einen Kurztext ("View Pub") machen.
Ich hoffe, ich konnte Dir das ganze Vorhaben einigermassen verdeutlichen.
Viele Grüße Lutz
Hallo Lutz,
Zitatergibt leider eine Fehlermeldung beim Kompilieren. Liegt das eventuell an den "?
Eine ist gut, weisst du wie viele es gibt? Beim nächsten Mal bitte
den Wortlaut posten (die Nr. alleine reicht auch nicht!).
Hier ist mir dein Fehler allerdings klar; - ist eigentlich mein Fehler
(ungenügende Erklärung). Die Korrektur findest du in anliegendem
Beispiel.
Bezügl. Link-Feld und Kurztext-Feld habe ich es nicht wirklich verstanden.
Im Beispiel gibt es zwei Felder die beim Button-Klick gefüllt werden.
!!Achtung!! Im Code musst du vorm Testen deinen Pfad für ".InitialFileName"
anpassen.
Vielleicht hilft's.
gruss ekkehard
OT
ZitatMit knapp 60 ist es auch recht schwierig
Nicht aufgeben. Hier gibt es einige (mich inkl.) die schon über 60 sind.
Ist halt immer eine Frage des Interesses und der Notwendigkeit.
Hallo,
warum eigentlich so viel Gedöns?
ZitatIch möchte in einem aktuell angezeigten Datensatz in einem Formular (Quelle ist eine Tabelle mit rund 9000 Datensätzen) einen Hyperlink aktualsieren. Der Hyperlink verweist auf ein Dokument, dessen Grunddaten in der Tabelle erfasst werden bzw. wurden. Diese Daten werden in unregelmässigen Abständen aktualisiert und damit muss auch der zugehörige Hyperlink angepasst werden.
Das interpretiere ich so, als dass der Dateiname schon aktuell im Datensatz in einem Feld steht und der Hyperlink nur redundante Erweiterung wäre.
Wenn der vollständige Pfad-Dateiname des Dokuments in einem Tabellenfeld (,bzw. Formular-Textfeld "DokFileName") steht, bzw. mit dem Filedialog ausgewählt wurde, kann mit einem Klick auf eine Schaltfläche (in der Einzel-Ansicht des Forms) das Dokument einfach mit:
Sub btnDokView_Click()
Followhyperlink "file://" & Me!DokFileName 'den Namen an die Gegebenheiten anpassen
End Sub
geöffnet werden.
Hallo Franz,
Im Hinterkopf hatte ich das auch, war mir aber über die Fragestellung
nicht ganz schlüssig, und habe deshalb erstmal nur seinen Code angepasst.
Wenn er das so gemeint hat, also zwei Felder, dann ist das wirklich alles
überflüssig, zumal ein Hyperlink-Feld ja im Form eh nur den Kurztext
anzeigt. Nur beim Editieren zeigt das Feld sein "wahres Gesicht".
gruss ekkehard
Hallo
ja, es gibt halt auch viele Wege nach Rom. Manchmal ist der kürzeste aber auch der unverständlichste, oder andersherum, der längste der am besten vorstellbare. :)
Hallo zusammen,
nochmals vielen Dank für Eure Antworten und regen Bemühungen, mir in meinem Anliegen weiterzuhelfen. Da scheine ich ja wirklich an ein paar ,,alte Hasen" = Experten geraten zu sein, worüber ich echt froh und dankbar bin. Wie gesagt, habe ich von VBA nicht wirklich Ahnung und freue mich über jede Hilfe, die ich bekommen kann.
Zur Verdeutlichung (hoffentlich) habe ich hier mal ein PDF drangehängt, dass Euch noch einmal kurz den Arbeitsablauf darlegen soll.
Ich weiss, Hyperlinks sind nicht wirklich das Non-Plus-Ultra in einer Datenbankprogrammierung. Ich habe die Administration und damit auch die Weiterentwicklung unserer Datenbank aufs Auge gedrückt bekommen und versuche eben jetzt, das Ganze für meine Anwender (die teilweise gerade einmal die Maus vom Bildschirm unterscheiden können...und wollen) ein bisschen komfortabler zu gestalten. Zumindest was ich unter komfortabel verstehe.
Ich habe mir auch die Mühe gemacht und mir Eure Vorschläge angeschaut bzw. in die Datenbank einzubringen. Aber ich denke, dass mangels genügender Information meinerseits Ihr dabei von anderen Voraussetzungen ausgegangenen seid.
Vielleicht sehe ich das ja auch viel zu kompliziert und mache deshalb so ein Gedöns. ;)
Deine Lösung Franz macht so wie Du es hier rüberbringst, vieles einfacher...keine Frage. Sie ist aber so wie unserer Daten hier im Augenblick erfasst und weiterbearbeitet werden, nach meinem Verständnis nicht wirklich umsetzbar. Dazu müsste denke ich mal der gesamte Datenbestand auch neu organisiert werden, was zur Zeit nicht wirklich machbar ist.
Ich hatte auch in einer anderen Datenbank hier bei uns eine einfacherer Lösung gesehen, die ein Aufrufen eines Dokuments aus einem Formular WESENTLICH vereinfachen würde (alle Dokumente in ein einziges Verzeichnis, keine Dateinamensänderung bei einer Aktualisierung und damit keine neue Verlinkung notwendig). Dies ist aber in meinem Fall nicht machbar, da unsere Dokumente nach Lieferanten und Dokumentart getrennt vorliegen und mehrere Personen auf diese Verzeichnisse zugreifen und anhand der Dateinamen die Dokumentation identifizieren müssen.
Also werde ich wohl bei den ,,ungeliebten" Hyperlinks" bleiben und hoffe, dass Ihr mir weiterhelfen könnt.
Ekkehard: Interesse und Notwendigkeit sind durchaus vorhanden. Aber der zeitliche Rahmen ist bei mir schon sehr eng gesetzt, da mich noch viele andere Tätigkeiten in meinem Job in Beschlag nehmen. So bleibt da leide nur sehr wenig Freiraum fürs Lernen.
Wenn ich dann aber mal in Rente bin...ok dann kommt wieder was anderes. ;D
Solltet Ihr noch mehr Informationen benötigen, gebt mir bitte Bescheid.
Viele Grüße Lutz
Hallo,
ich glaube, es ist nicht deutlich rüber gekommen. Das Hyperlinkfeld ist ersatzlos einfach überflüssig. Das Hyperlinkfeld stammt auch bestimmt von einem Entwickler der meinte zum Aufruf eines Dokuments wäre ein Hyperlinkfeld notwendig, was aber nicht der Fall ist., da es ja ein Feld gibt mit Pfad und Dateinamen. Da muss auch kein Datenbestand neu organisiert werden. Es ist auch nicht viel Arbeit das anzupassen.
Hallo Klaus,
Danke für Deine Antwort.
sicherlich hast Du Recht damit, dass man keinen Hyperlink zum Aufrufen eines Dokuments benötigt.
Hier in diesem Fall gibt es jedoch kein Feld mit einem Pfad und Dateinamen, den man mit einem FollowHyperlink ansprechen könnte.
Hier gibt es eben nur das Hyperlinkfeld und das bei rund 9000 Datensätzen. Der Link wird wie ich in meinem Anhang auch beschrieben habe in Reports als PDF und Excellisten an andere Mitarbeiter dieser Firma weitergegeben. So erspart er sich das lange Suchen in der verzweigten Verzeichnisstruktur nach einem bestimmten Dokument.
Viele Grüße Lutz
Hallo,
dann ist aber Deine Beschreibung ziemlich widersprüchlich:
ZitatIch möchte in einem aktuell angezeigten Datensatz in einem Formular (Quelle ist eine Tabelle mit rund 9000 Datensätzen) einen Hyperlink aktualsieren. Der Hyperlink verweist auf ein Dokument, dessen Grunddaten in der Tabelle erfasst werden bzw. wurden. Diese Daten werden in unregelmässigen Abständen aktualisiert und damit muss auch der zugehörige Hyperlink angepasst werden.
Der zugehörige Hyperlink gehört doch dann zu einem Textfeld, oder wie soll man das sonst verstehen ?
Hallo Klaus,
sorry vielleicht habe ich mich da falsch ausgedrückt.
Tatsächlich gibt es nur ein HYPERLINKfeld, in dem bei einem bereits aufgenommenen Dokument eine Verlinkung zum Dokument vorhanden ist.
Es gibt kein weiteres Feld mit einer Pfad und Dateiangabe für dieses Dokument.
Eventuell trägt das PDF, was ich zuvor bereits hier beigefügt habe, zum besseren Verständnis bei.
Bitte entschuldige, wenn ich mich dazu verwirrend ausgedrückt haben sollte.
Viele Grüße Lutz
Hallo Lutz,
O.K., was ich jetzt verstanden habe, ist, dass es
nur das Hyperlink-Feld
gibt, und du die Struktur (DatenTyp) nicht ändern kannst.
Dann musst du in meinem Code das Feld aus der Liste nehmen
sSQL = "SELECT DOC_NO, LINK FROM DOC_ALL WHERE DOC_NO = " & Me!DOC_NO
und diese Zeile löschen
rs!View_Pub = doc
Ansonsten verstehe ich das mit der Anzeige immer noch nicht. Das Feld
LINK im Formular ist doch an das HP-Feld in der Tabelle gebunden, oder
nicht? Dann sieht man doch auch nur den Dokumentennamen.
ZitatDer Link wird wie ich in meinem Anhang auch beschrieben habe in Reports als PDF und Excellisten an andere Mitarbeiter dieser Firma weitergegeben
Kann es sein, dass da das Problem liegt, dass beim Export der ganze Link
übertragen wird, also so: Pfad#file:///Pfad# ?
Dann müsstest du den Pfad beim Export (Abfrage) aus dem Link extrahieren
Left(HP,Instr(1,HP,"#")-1)
(HP = Hyperlink-Feld aus der Tabelle)
gruss ekkehard
Hallo,
wenn die Struktur so bleiben muss und es nur ein Hyperlink-Feld (in der Tabelle und im Form) gibt und in dieses Feld ein ausgewählter PfadDateiName (als Link) eingestellt werden soll, dann etwa so (Luftcode):
Private Sub UPDLINK_Click()
Dim fDialog As Office.FileDialog
Dim strFilename as String
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim strAnzeigetext As String
Dim strHyperlinkadresse As String
Set db = CurrentDb
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.Filters.Clear
.Filters.Add "Documents", "*.doc; *.xls; *.pdf", 1
.Filters.Add "Pic / Drawing", "*.jpg; *.jpeg; *.bmp; *.tif", 2
.Filters.Add "All", "*.*", 3
.AllowMultiSelect = False
.Title = "Choose File"
.InitialFileName = "O:\All...\...Publications" 'Der Ordnerpfad ist fest programmiert
.InitialView = msoFileDialogViewDetails
.ButtonName = "Set LINK"
.Show
If .SelectedItems.Count > 0 Then
strFilename= .SelectedItems(1)
Else
MsgBox "kein Pfad ausgewählt."
End If
End With
Set rs = db.OpenRecordset("SELECT LINK FROM DOC_ALL WHERE DOC_NO = " & Me!DOC_NO, dbOpenDynaset) 'Doc_NO vom Datentyp Zahl, Long
strAnzeigetext = "View Pub"
strHyperlinkadresse = strFilename
rs.Edit
rs!LINK= strAnzeigetext & "#" & strHyperlinkadresse & "#"
rs.Update
Me.Refresh
rs.Close:Set rs = Nothing
End Sub
Hallo Ekkehard und Klaus,
mei hätte nicht gedacht, dass es doch so ein umfangreiches Thema wird. Vielleicht auch, weil meine Ausführungen nicht eindeutig genug sind. Dafür kann ich mich nur entschuldigen.
@Ekkehard:
Du hast Recht...es gibt tatsächlich nur das eine Hyperlinkfeld.
Belasse ich aber die Verlinkung eines Dokuments wie sie ist, also ohne den Anzeigetext zu ändern, wird mir der komplette Hyperlinktext (Pfad und Dateiname) in diesem Feld (Tabelle, Formular) angezeigt. Dies wollte ich vermeiden, indem ich den Anzeigetext in "View Pub" ändere. Also rein wegen der Optik.
Ebenso soll in eventuellen Exporten (PDF, EXCEL...) dann auch der Anzeigetext nur mit "View Pub" erscheinen. Bei diesen Exporten wird der Anzeigetext aus dem Hyperlinkfeld immer mitübernommen.
Dabei würde es sehr unschön aussehen, wenn statt dem "View Pub" die lange Hyperlinkadresse dort mitausgegeben wird. Zumal die Felder gerade bei einem Bericht im PDF Format dann auch noch von der Länge her begrenzt sind und damit nur der Anfang der Hyperlinkadresse abgebildet werden würde:
also anstatt "O:\All...\...Publications\Hersteller\DokArt\Dokument.pdf" würde man dann nur noch"O:\All...\...Publicat" sehen.
So wie man es auch eben von Webseiten her kennt: dort stehen ja meist auch nur irgendwelche kurzen Worte wie "Click here" oder ähnliches. Dahinter sind dann die langen Hyperlinkadressen verborgen.
@Klaus:
ich werde mir morgen Deinen "Luftcode" mal genauer anschauen. Muss leider dann noch auf ein Meeting. Und dann muss für heute auch mal Schluss sein.
Euch allen aber einen ganz lieben Dank für Eure Bemühungen. Ich merk schon, ich bin hier richtig gelandet. #thumbs up :)
Viele Grüße Lutz
Hallo,
Zitat@Klaus:
ich werde mir morgen Deinen "Luftcode" mal genauer anschauen
das war Franz, nicht ich.
Aber Klaus und Franz kann man schon mal verwechseln. :D ;D
Hallo Lutz,
Endlich habe ich verstanden, was du willst.
Mit folgenden Änderung wird das gewünschte Ergebnis erreicht.
Klappt sowohl in meinem Beispiel als auch in Franz' Code.
Private Sub UPDLINK_Click()
Dim fDialog As Object
Dim sPfad As String
Dim sDoc As String
Dim sSQL As String
.
.
If .SelectedItems.count > 0 Then
sPfad = .SelectedItems(1)
sDoc = Mid(sPfad, InStrRev(sPfad, "\") + 1)
rs.Edit
rs!LINK = sDoc & "#file:///" & sPfad & "#"
rs.Update
.
.
Me.Refresh 'muss sein, fehlt in meinem Beispiel
End Sub
gruss ekkehard
Ach ja, für den Export musst du aus dem Hyperlink-Feld dann den
benötigten/gewünschten Teil mit den gezeigten String-Operationen
extrahieren.
Hallo zusammen (damit habe ich dann auch schon einmal das Namenverbuxeln vermieden ;) ),
ich habe mir jetzt mal etwas mehr Zeit nehmen können und es schliesslich zum Laufen gebracht (Code s. Anhang). :)
Ob der Code jetzt auch wirklich so sauber programmiert ist, kann ich nicht beurteilen, aber er funktioniert jedenfalls.
Das meiste habe ich eh von Euch Profis - dankbar und gerne - übernommen.
Ich musste zur eindeutigen Identifizierung eines Dokuments allerdings den bereits eingebauten Zähler (COUNTER mit Felddatentype AutoWert) gegen die DO_NO im Code austauschen.
Begründung:
die Dokumentennummer kommt durch temporäre Änderungen eines Dokuments, die ebenfalls in der DB erfasst werden müssen, mehrfach vor und ist damit nicht eindeutig bei der Zuweisung eines Dokuments (=Hyperlink). Hätte ich auch früher darauf kommen können. ::) Again what learned ::)
@Ekkehard...letztendlich hat mich Deine Beispieldatenbank darauf gebracht. #thumbs up
Damit habe ich es jetzt geschafft, dass der aktuell ausgewählte Datensatz auch wirklich die zugewiesene Verlinkung zum Dokument erhält.
Vielen Dank noch einmal an jeden Einzelnen von Euch...werde Euch weiterempfehlen! ;)
Viele Grüße aus Bayern
Lutz
Hallo Lutz,
Mannomann, mach mal steht man echt auf der Leitung >:(.
Du willst einfach einen festen Text als Link im Form sehen.
Das kannst du aber auch direkt beim Update erledigen, - der Code
am Ende ist überflüssig. Ausserdem hinterlässt er das Form "Dirty".
Also
rs.Edit
rs!LINK = "View Pub#file:///" & doc & "#"
rs.Update
ZitatOb der Code jetzt auch wirklich so sauber programmiert ist,
Verbesserungen sind immer möglich, und sollten auch gemacht werden.
Private Sub UPDLINK_Click()
Dim fDialog As Object
Dim sDoc As String
Dim sSQL As String
Dim rs As DAO.Recordset
Dim db As DAO.Database
'entfernen, ist unnötig, das Feld COUNTER ist nur bei einem neuen, ungespeicherten DS = NULL
'in diesem Fall würde ich den Button abhängig von Me.NewRecord de- bzw. aktivieren, siehe unten
' If Not IsNull(Me!COUNTER) Then
' Me.Filter = "COUNTER = " & Me!COUNTER
' Me.FilterOn = True
' Else
' MsgBox "Kein DS vorhanden!"
' Exit Sub
' End If
'--------------------------------------------
Set db = CurrentDb
sSQL = "SELECT COUNTER, LINK FROM DOC_ALL WHERE COUNTER = " & Me!COUNTER
Set rs = db.OpenRecordset(sSQL, dbOpenDynaset)
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
.Filters.Clear
.Filters.Add "Documents", "*.doc; *.xls; *.pdf", 1
.Filters.Add "Pic / Drawing", "*.jpg; *.jpeg; *.bmp; *.tif", 2
.Filters.Add "All", "*.*", 3
.AllowMultiSelect = False
.Title = "Choose File"
.InitialFileName = "O:\All...\...Publications" 'Der Ordnerpfad ist fest programmiert
.InitialView = msoFileDialogViewDetails
.ButtonName = "Set LINK"
.Show
If .SelectedItems.count > 0 Then
sDoc = .SelectedItems(1)
rs.Edit
rs!LINK = "View Pub#file:///" & sDoc & "#"
rs.Update
Else
MsgBox "kein Pfad ausgewählt."
End If
End With
Me.Refresh '!!!
End Sub
Private Sub Form_Current()
Me.UPDLINK.Enabled = Not Me.NewRecord
End Sub
gruss ekkehard
Hallo Ekkehard,
wenn immer Du mit dem "auf der Leitung stehen" gemeint hast...mir geht es genauso.
Ärgere mich auch immer wieder, dass ich mich nicht genug mit der Materie befasst habe bzw. befasse und dadurch vieles zu "oberflächlich" angehe.
Ich habe auf jeden Fall jetzt Deinen Code so übernommen...und oh Wunder...er funktioniert.
Nee im Ernst hatte auch nichts anderes erwartet. Ich werde in Zukunft an mir arbeiten und Hilfestellungen egal von welcher Seite genauer studieren und umsetzen.
Vielen Dank noch einmal für die Unterstützung!!!
Viele Grüße Lutz
Hallo Lutz,
Da hatte ich schon mich gemeint.
Du solltest dich in einer ruhigen Minute mal mit den Stringoperationen
beschäftigen (Left, Mid, Right usw.).
Ich halte die für essentiell beim Programmieren, und gehören für mich
in Kapitel 1 jedes Handbuchs, was leider nicht der Fall ist.
Mit dem Wissen hättest du meinen ersten Code wahrscheinlich selber auf
die letzte Version ändern können.
Schön, dass es jetzt läuft.
gruss ekkehard