Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Hyperlinks automatisch ändern?

Begonnen von Abnah666, September 13, 2006, 11:15:36

⏪ vorheriges - nächstes ⏩

database

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

WHEELER700

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

database

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

WHEELER700

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.


database

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

WHEELER700

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

database

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



WHEELER700

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]

DF6GL

#23
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]

database

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]

WHEELER700

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

DF6GL

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...

WHEELER700

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 

DF6GL

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

database

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