collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 66
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14072
  • stats Beiträge insgesamt: 67582
  • stats Themen insgesamt: 9104
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!  (Gelesen 7023 mal)

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« am: August 27, 2015, 15:19:13 »
Hallo!

Ich habe in einer Tabelle in verschiedenen Feldern (Link_1 ; Link_2 ; ... ) Links zu verschiedenen Webseiten gespeichert.
Kann ich (aus einem Formular mit einer Befehlsschaltfläche) mit einer Abfrage alle Links auf Gültigkeit (nur ob die Links noch funktionieren) testen.
Wenn ich einzelne Links mit einer Befehlsschaltfläche (Application.FollowHyperlink Me!Link_1) teste, öffnet die Seite oder es kommt eine Fehlermeldung. Aber dies hunderte mal zu tun ist etwas Zeitaufwendig...

Dorian
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23453
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #1 am: August 27, 2015, 16:11:59 »
Hallo,


Du könntest eine solche Funktion in einer (bzw. entsprechend den Link-Feldern) berechneten Abfragespalte (oder anderswo, z. B. in einer Prozedur mit einem Recordset und einer Schleife über die Link-Felder) aufrufen:

Function ExistsURL(Url As String) As Boolean
Dim oXMLHTTP As Object
On Error GoTo Myerr
  ExistsURL = False
  Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
  oXMLHTTP.Open "GET", Url, False
  oXMLHTTP.Send
  If oXMLHTTP.Status = 200 Then ExistsURL = True

MyExit:
  Set oXMLHTTP = Nothing
  Exit Function
Myerr:
  ExistsURL = False
  Resume MyExit
End Function

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #2 am: August 27, 2015, 16:37:26 »
Hallo!

Wie und wo kann ich diese Funktion den genau einfügen? Im Formular oder in der Tabelle?
Werden dann alle Links der Tabelle (z.B. Link_1) geprüft oder nur der aktuelle?

Dorian
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7429
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #3 am: August 27, 2015, 19:28:52 »
Hallo,
Zitat
Im Formular oder in der Tabelle?
weder noch. Es würde auch nicht machbar sein. Die Funktion kommt in ein allgemeines Modul und wird in der Abfrage für jeden Datensatz aufgerufen. Es werden also alle Links der Tabelle geprüft.
Als berechnetes Feld in der Abfrage z.B. so:

UrlExistiert: ExistsURL(FeldMitUrl)Es steht dann entweder Wahr (True) oder Falsch (False) in dem berechneten Feld. Das kannst Du dann sicher selbst deuten.

Zitat
Ich habe in einer Tabelle in verschiedenen Feldern (Link_1 ; Link_2 ; ... ) Links zu verschiedenen Webseiten gespeichert.
Das Datenmodell ist auch falsch. Die Links gehören in eine extra Tabelle mit einem Fremdschlüssel zur jetzigen Tabelle. Je Link ein Datensatz. Hast Du 5 Links so sind in dieser Tabelle 5 Datensätze. Das heißt, die Links stehen immer in einem Feld. Daher wird auch obige Funktion nur 1x aufgerufen. Bei Deinem jetzigen Aufbau wird die Funktion je Feld aufgerufen. Link_1 ; Link_2, .... sind sogenannte Aufzählungsfelder (mit einer Zahl hinten). Diese verstoßen bereits gegen die 1. Normalform.
« Letzte Änderung: August 27, 2015, 19:51:58 von MzKlMu »
Gruß
Klaus
 

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #4 am: August 28, 2015, 11:41:37 »
Ich habe nun ein modul erstellt mit der Bezeichnung "ExistsURL" und habe den von DF6GL erstellten Code dort eingefügt.
Wie mache ich den das?:

wird in der Abfrage für jeden Datensatz aufgerufen

Danke für die Hilfe

Dorian
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7429
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #5 am: August 28, 2015, 11:49:49 »
Hallo,
Zitat
Ich habe nun ein modul erstellt mit der Bezeichnung "ExistsURL"
das Modul darf nicht den gleichen Namen haben wie die Funktion. Modul bitte umbenennen (mdlExistURL z.B.).
Wie das in der Abfrage gemacht wird, habe ich bereits beschrieben.

Zitat
Als berechnetes Feld in der Abfrage z.B. so:
UrlExistiert: ExistsURL(FeldMitUrl)
Gruß
Klaus
 

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #6 am: August 28, 2015, 18:03:53 »
Hallo!

Also, habe die Funktion umbenannt und in einer Abfrage ein berechnendes Feld eingefügt.
Wenn ich die Abfrage jetzt starte kann ich bis zu 1 Stunde warten und Access friert quasi ein.
Es wird zwischendurch eine Tabelle (Ergebnis der Abfrage) gezeigt mit den Werten 0 oder -1

Es sind im Moment ca. 450 Links zu prüfen...
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7429
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #7 am: August 28, 2015, 18:56:56 »
Hallo,
hast Du meinen Hinweis in #3 zum Datenmodell gelesen ?
Wie viele Linkfelder hast Du im Moment je Datensatz ?
Gruß
Klaus
 

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #8 am: August 28, 2015, 19:02:49 »
Ja, habe ich gelesen. Ist aber viel Arbeit es zu ändern...
Ich habe in jedem Datensatz 4 Linkfelder und insgesamt ca. 450 Datensätze.
Ich habe die Abfrage nur auf einen Link je Datensatz angewendet (Link_1)
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23453
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #9 am: August 28, 2015, 19:55:13 »
Hallo,


egal (in diesem Fall!), ob normalisiert  oder nicht , die Überprüfung eines Links dauert nun mal einige Augenblicke (ca. 1 s) ...

Die Frage stellt sich, wann und wie oft denn nun die Link-Prüfung stattfinden soll und für was das eigentlich gebraucht wird... Dauernd alle Links zu prüfen, ist wohl eher Arbeitsbeschaffung (für den PC und das IN)

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #10 am: August 29, 2015, 16:40:02 »
nein, sie sollen nur einmal - wenn die Abfrage betätigt wird - geprüft werden nicht andauernd...
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23453
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #11 am: August 30, 2015, 08:31:34 »
Hallo,

naja,....   wann wird denn die Abfrage "betätigt"  und was passiert dann mit dem Abfrageergebnis? Soll heißen, für welchen Zweck  werden die Urls überhaupt in einer Abfrage geprüft?


Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #12 am: August 30, 2015, 14:48:50 »
Die Abfrage soll ca. 1 mal die Woche betätigt werden um zu prüfen ob die Links noch gültig sind.
Ungültige Links kann ich dann entfernen bzw. erneuern. Es ersparnt mit hunderte Lesezeichen zu setzten und immer wieder zu prüfen...
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23453
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #13 am: August 30, 2015, 16:56:19 »
Hallo,

in diesem Fall musst Du halt die Laufdauer der Abfrage in Kauf nehmen.

Alternativer Vorschlag:

Prüfung eines Links dann, wenn er verwendet wird. Ist er ungültig, kann durch ein aufpoppendes Form der Datensatz, in dem dieser Link steht, entspr. bearbeitet werden.

Offline Dorian

  • Access-Profi
  • **
  • Beiträge: 198
Re: Alle Web-Links in Tabelle auf Gültigkeit überprüfen!
« Antwort #14 am: August 30, 2015, 17:30:11 »
OK, danke schön!!!