Hallo zusammen!
Ich habe in einem Formular einen Hyperlink, einen pro Datensatz.
Die Hyperlinks führen zu einer Datei auf Laufwerk D:, also D:/Audios/Audio001.wav.
Ich würde gerne den Laufwerksbuchstaben ändern auf H:.
Gibt es da eine einfache Möglichkeit oder eine Prozedur, die mir die Tipparbeit bei rund 1000 Datensätzen ersparen könnte?
Besten Dank und Grüße!
Abnah
Hallo,
einfach mit einer Aktualisierungsabfrage
Gruß Oma
Besten Dank schonmal!
Aber wie behalte ich dann den Rest des Pfades bei?
Mit
UPDATE Daten SET Daten.Dokumentlink = [Dokumentlink]="H:";
würde ich doch dann den Link nur auf H:\ setzen, oder?
Hallo,
natürlich nicht nur mit H aktualisieren, den Rest des alten Links zu den neuen Buchstaben zufügen:
UPDATE tblTabelle SET tblTabelle.link = "H" & Right([link],Len([link])-1)
WHERE tblTabelle.EinTextfeld Like "*";
Gruß Oma
Hallo nochmal!
Die Abfrage sieht bei mir jetzt so aus:
UPDATE Daten SET Daten.Dokumentlink = "H" & Right([Dokumentlink],Len([Dokumentlink])-1)
WHERE (((Daten.Dokumentlink) Like "*"));
Jetzt stehen zwar in der Tabelle die richtigen Pfade, aber die Verweise haben trotzdem noch ihre alten Pfade (Werte?), also wenn man sie anklickt oder mit der Maus darüber geht.
Was mache ich noch falsch?
Hallo,
wenn die Verweise richtig in der Tabelle stehen, wo sind dann noch "alte Pfade" ?
Gruß Oma
Hallo,
da es sich um ein Hyperlink-FORMAT handelt, denke ich, wäre sowas besser:
UPDATE Daten SET Daten.Dokumentlink = Replace([Dokumentlink],"D:","H:")
Der angezeigte Text in der Tabelle und im Formular ist richtig.
Es ändert sich also der Text unter "Hyperlink bearbeiten" -> "Text anzeigen als",
aber unter "Hyperlink bearbeiten" -> "Adresse" steht nach wie vor der alte Pfad.
Den Vorschlag von DF6GL, der grade beim Schreiben eingegangen ist, werde ich aber auf jeden Fall auch probieren, Danke!
Hallo,
ich glaube, Franz hat recht (wie fast immer), mein Zusammenfügen ergibt wohl einen String u. kein Hyperlink.
Sorry, hatte das nicht probiert.
Gruß Oma
"wie fast immer" will ich jetzt mal überlesen haben ;) ;) :D :D ;D ;D 8)
:D
Franz hatte Recht ;)
Allerbesten Dank Euch beiden!
muss ich dann wohl zugeben; da ich das schon gesehen habe, konnte ich mir wenigstens nicht den kleinen Zusatz mit fast verkneifen ;D
Aber irgendwie muss es ja Unterschiede zwischen Götter und Gurus geben :o
Gruß Oma
Hi Access profis!
ich habe das gleiche Problem wie Abnah666. In meiner Datenbank habe ich zu jedem Datensatz einen Hyperlink zu einem PDF-Dokument. Der Pfad der PDF-Dokumente hat sich nun geändert.
Alle PDF-Dokumente liegen nun unter folgendem Pfad:
K:\Users\Tom\Documents\privates\Bücher\xxx.pdf
Vorher waren alle PDF-Dokumente unter dem Pfad:
C:\Users\Documents\privates\Bücher\xxx.pdf
Mit einer Aktualisierungsabfrage möchte ich nun für alle Hyperlinks C:\Users in K:\Users\Tom ändern. Es soll also nur ein Teil des Links geändert werden. Im Feld "Aktualisieren" in der Aktualisierungsabfrage habe ich folgenden Code eingegeben:
UPDATE Daten SET Daten.Dokumentlink = Replace([Dokumentlink],''C:\User'',''K:\Userse\Tom'')
Leider erhalten ich dann die Fehlermeldung "Der von Ihnen eingegebene Ausddruck ist syntaktisch falsch"
Was mache ich falsch?
Wäre euch sehr dankbar für jeden Tipp zur Fehlerbeseitigung.
Grüße
WHEELER700
Hallo,
von Hyperlinkfeldern die keine wirklichen Hyperlinks sind (also nicht zu einer Internetadresse führen) halte ich gar nichts. Mache eine Textfeld aus dem Hyperlinkfeld. dann genügt es mit Replace nur den Buchstaben zu tauschen.
Mit dem VBA Befehl
FollowHyperlink Feldname
wird das PDF dann genau so problemlos geöffnet.
Die ganze Handhabung ist deutlich einfacher.
Der Vorschlag gilt auch für den Beitragsersteller.
hi MzKiMu,
zunäcfhst danke für deine Hilfe. Kannst du mir trotzdem sagen was ich falsch germacht habe, auch wenn du nichts von unechten Hyperlinks hältst. Ich würde gern bei meinen Hyperlinks bleiben.
Zu deinem Vorschlag:
Wenn ich deinen Vorschlag umsetzen will, wie kann ich dann im Textfeld nur einen Teil des Textes ändern. Darüber hinaus ist mir noch nicht klar, wie ich das Dokument aus der Datenbank dann öffnen kann. Wo muss ich den Code FollowHyperlink Feldname denn eingeben?
Sorry für meine dummen Fragen, bin noch Anfänger in Access.
Gruß
Wheeler700
Hallo,
ZitatKannst du mir trotzdem sagen was ich falsch germacht habe
UPDATE Daten SET Daten.Dokumentlink = Replace([Dokumentlink],'C:\Users','K:\Users\Tom')
Suchzeichenfolge und Ersetzungszeichenfolge werden in 1 einfaches Hochkomma eingeschlossen nicht in 2.
HTHPeter
Hi database,
deinen Vorschlag habe ich verseucht umzusetzen, statt 2 habe ich 1 Hochkomma verwendet.
Leider erhalte ich auch hier die Fehlermeldung "Der von Ihnen eingegebene Ausdruck ist syntaktisch falsch"
Was mach ich denn falsch?
Gruß
Wheeler700
Hallo,
ich gehe davon aus, dass du diesae SQL-Syntax in einer Ereignisprozedur verwenden willst.
wenn du in diese Prozedur folgendes schreibst:
DoCmd.RunSQL "UPDATE Daten SET Daten.Dokumentlink = Replace([Dokumentlink],'C:\Users','K:\Users\Tom')"
...MUSS das laufen - ich hab's bei mir simuliert!
Vorsussetzung: Die Tabelle heißt Daten und das Feld heißt Dokumentenlink
Zeig mal her, wo du wie den SQL-String in Verwendung hast.
Greets
hi Database;
meine Tabelle heißt Bücherbestand und das Feld Inhaltsbeschreibung.
Über Afragen habe ich eine Aktualisierungabfrage erstellt und in der Entwurfsansicht im Feld "Aktualisieren" folgeden Code eingegeben
UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung],'C:\Users','K:\Users\Tom)
Wieder kommt dann die Meldung falsche Syntax.
Wo muss ich den CFode eingeben?
Was ist eine Ereignisprozedur? Wie kann ich diese aufrufen?
Danke für die schnelle Antwort und bisherige Hilfe.
Hoffe du entdeckst den Fehler bei meinem Vorgehen. Vielleicht geb ich den code einfach an der falschen Stelle ein.
Hallo,
naja, von einer Abfrage als solche war bislang ja noch nicht de Rede, ich war der Meinung du würdest das Statement per VBA auf die Tablle loslassen - offensichtlich hab' ich das in deiner Frage überlesen gehabt. :-\
In der Aktualisierungsbfrage im Abfrageentwurf schreibst du ins Feld Aktualisieren unter 'Inhaltsbeschreibung'
UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung];"C:\Users";"K:\Users\Tom")Suchzeichenfolge und Ersetzungstext sind hierbei mit Gänsefüßen (Shift + 2) einzuschließen, Trennzeichen zwischen den Funktionsparametern ist ein Semikolon ( ; )!
Der Fehler in der SQL deiner Anfrage war demnach der, dass du statt Semikolons Kommata geschrieben hast und statt Gänsefüße zwei aufeinanderfolgende einfache Hochkomma!
Am Besten wird sein du gehst in den Abfrageentwurf und wechselst von da in die SQL-Ansicht und KOPIERST einfach den SQL-Text von meiner Antwort in deine Abfrage. 8)
Versuch das mal, ich bin sicher das klappt so ;)
ZitatWo muss ich den CFode eingeben?
Was ist eine Ereignisprozedur? Wie kann ich diese aufrufen?
Fällt in dem Fall flach, VBA - Unterricht ist hierzu nicht notwendig. ;D
Grüße
Peter
hi database,
ich habe den code eingefügt.
Wenn ich auf ausführen klicke kommt ein Feld Parameterwert eingeben. Wenn ich dann auf ok klicke (ohne was einzugeben) kommt die Fehlermeldung "Access kann nicht alle Datensätze aktualisieren. Access hat 250 Felder wegen Typumwandlungsfehlern, 0 Datensätze wegen Schlüsselverletzungen, 0 Datensätze wegen Sperrverletzungen und null Datensätze wegen Gültigkeitsverletzungen nicht aktualisiert. Möchten Sie trotzdem, dass die Aktionsabfrage weiter ausgeführt wird?
Wenn ich dann auf ja klicke sind alle Hyperlinks weg und die Felder unter Inhaltsbeschreibung komplett leer.
Was mache ich bloß falsch?
Hast DU noch eine Idee, ich bin langsam am Verzweifeln?
Grüße
Wheeler700
Guten Morgen,
Parameterwert eingeben ... bedeutet, dass die Abfrage ein Feld der Spaltendefinition nicht finden kann.
Das bedeutet in dem Fall, dass das Feld NICHT Inhaltsbeschreibung heissen KANN - die Abfrage enthält nur ein Feld.
Da der Feldname (Inhaltsbeschreibung) in eckigen Klammern steht, behandelt Access das wie eine Parameterabfrage und stellt bei der
Ausführung die Frage nach dem Wert, der in diesem unbekannten Feld stehen soll - so wäre mal meine Interpretation
Kontrolliere noch mal die GENAUE Schreibweise des Feldnamens!
Wenn das nicht hilft dann exportiere die Tabelle in eine neue Datenbank und lade sie hier hoch, ich schau mir das an einer KOPIE des Originals mal an.
Grüße
Peter
hi Databae,
hier ist meine Datenbank.
Im Feld Inhaltsbeschreibung möchte ich in den Hyperlinks 2004 durch PDF ersetzen, da alle Dokumente jetzt in eiem anderen Ordner sind.
Folgenden Code habe ich eingegeben:
UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung];"2004";"PDF")
Dann kommt die beschriebene Fehlermeldung und alle Links sind nach ausführen der Abfrage weg.
Gruß
WHEELER70
[Anhang gelöscht durch Administrator]
Hallo,
UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung] , "2004" , "PDF")
(in der SQL-Ansicht im Abfrageentwurf)
PS:
im Abfrageentwurf:
[Anhang gelöscht durch Administrator]
Hi,
im Anhang die DB mit der Abfrage, die deine Einträge ändert.
Ich habe in meiner Antwort leider einen Fehler gemacht -
UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung];"C:\Users";"K:\Users\Tom")
im Abfrageentwurf (graphisch) unter das Feld Inhaltsbeschreibung sollte NUR der Teil ab Replace. :'(
Grüße
Peter
[Anhang gelöscht durch Administrator]
hi database und DF6GL,
vielen Dank für eure Antwort. Mit dem Code Ersetzen([Inhaltsbeschreibung];"2004";"PDF") hat es gelappt. Hyperlinks haben einen neuen Namen und lassen sich öffnen.
Komisch ist nur das immer noch die Fehlermeldung
"Access kann nicht alle Datensätze aktualisieren. Access hat 250 Felder wegen Typumwandlungsfehlern, 0 Datensätze wegen Schlüsselverletzungen, 0 Datensätze wegen Sperrverletzungen und null Datensätze wegen Gültigkeitsverletzungen nicht aktualisiert. Möchten Sie trotzdem, dass die Aktionsabfrage weiter ausgeführt wird?"
kommt. Aber egal, Hauptsache jetzt klappts.
Nur aus Interesse noch eine Frage: Was war dem Code UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung];"2004";"PDF") falsch?
Schonmal vielen, vielen, vielen Dank an Euch für die schnelle Hilfe und Eure Mühen. ;) ;) ;) Ihr seit echte Access Götter.
Grüße
Wheeler700
Hallo,
falsch ist nur die Unklarheit, WO der "Code" nun steht.
Die Semikola dürfen NUR im Abfrageentwurf stehen, und auch nur dann, wenn das Semikolon als Trennzeichen in den Windows-Regionseinstellungen festgelegt ist.
Die Fehlermeldung habe ich mit Deinem DB-Beispiel nicht erhalten...
hi DF6GL;
wo kann man denn die Regioeinstellungen nachschauen.
Zu der Fehlermeldung: In der Beispiel DB titt der Fehler bei mir auch nicht auf. Aber in meiner richtigen DB schon. Ich glaube, weil nicht in allen Datensätzen im Feld Inhaltsbheschreibung auch Hyperlinks abgelegt sind. Maschne Felder sind leer und der Befehl fragt aber glaub ich alle Felder ab.
Grüße
Wheeler700
Hallo,
naja, dann wird das ja wohl der Fehler sein. Replace kann kein NULL-Feld behandeln...
Schreib mal so (auch wenn es im Endeffekt keine andere Wirkung hat):
UPDATE Bücherbestand SET Bücherbestand.Inhaltsbeschreibung = Replace([Inhaltsbeschreibung] ,"2004","PDF") where Inhaltsbeschreibung is not null
"Regioeinstellungen" ---> Windows (XP) /Systemsteuerung/Regions- und Sprachoptionen
Hallo,
na also ...
@DF6GL
Zitatnaja, dann wird das ja wohl der Fehler sein
So ist es auch, denn in der Beispiel-DB waren keine leeren Felder.
@Wheeler700
ZitatIn der Beispiel DB titt der Fehler bei mir auch nicht auf
Somit brauchst du auch in den Regionaleinstellungen nichts verändern ... bloß nicht ;)
Grüße
HI Access Profis,
der Code Ersetzen([Inhaltsbeschreibung] ;"2004";"PDF") where Inhaltsbeschreibung is not null klappt nicht, kommt wieder die Melung falsche Syntax.
Aber das Problem ist ja gelöst.
Nochmal vielen Dank
Gruß
Wheeler700
Hallo,
der SQL-String gehört auch in die SQL-ANSICHT im Abfrageentwurf kopiert....
wobei das dann im Abfrageentwurf so aussieht:
[Anhang gelöscht durch Administrator]
hi DF6GL;
hast recht, jetzt kommt keine Fehlermeldung mehr.
Danke Dir herzlich. Ich werde dich weiterempfehlen. Database natürlich ebenso nochmal Danke.
Machts gut und Grüße
Wheeler700