Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: newbie2010 am September 04, 2010, 17:53:25

Titel: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 04, 2010, 17:53:25
Hallo,
ich möchte meine veralteten EK-Preise jeweils mehrmals die Woche über die jeweilige Lieferanten-Homepage abgleichen. Dies sind meist Onlineshops auf Basis von XtCommerce. Per ODBC ist keine direkte Verbindung möglich.

Ist eine Verbindung von Access zum Onlineshop überhaupt möglich? Wie muß ich hier vorgehen? Ich bin auf dem Gebiet eigentlich ein völliger Newbie.

Vielen Dank für Euere Ideen.
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 04, 2010, 18:34:45
Hallo,

Zitatüber die jeweilige Lieferanten-Homepage abgleichen
Wenn du damit andeuten willst, dass du per Access also mittels VBA die HTML-Seiten auslesen möchtest ...  oje :o :o
Es ist zwar machbar, aber der Aufwand eine HTML Seite zu durchsuchen um Einträge zu finden die deiner beschriebenen Relevanz entsprechen, ist einfach zu hoch.

Anders ist es, wenn du Zugriff auf die Datenbank des Lieferanten bekommst, dann kann mit Access sehr wohl die dort hinterlegte Preisinfo abgefragt werden.
Die letztgültige Version von xt:Commerce, VEYTON 4.0 Enterprise hat lt. Hersteller im Backend eine MySQL 5 oder Oraqcle 7/8 am laufen.
Das größte Hindernis dabei wird aber die Berechtigung sein, auf die Datenbank zuzugreifen   :-\

ZitatPer ODBC ist keine direkte Verbindung möglich
Wundert mich nicht, da ich mir nicht vorstellen kann, dass man als irgendwer aus dem Netz so einfach Zugang zu diesen Datenbanken bekommt. ;D

Hast du schon mal versucht vom Lieferanten den aktuellen Preiskatalog in elektronischer Form zu erhalten, etwa als Excel-Datei oder in einem anderen durch Access lesbaren Format (*.csv, *.txt, ...)?

Gruß
Peter
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 05, 2010, 08:41:47
Hallo,
danke für Deine Nachricht. Die meisten meiner Liefernaten haben keine Preisliste in elektronischer Form. Das ist genau das Problem.

Gibt es evtl. ein gutes Export-Tool für XTCommerce oder Veyton 4, das ich dann meinen Lieferanten vorschlagen könnte?

Aber auch wenn ich jetzt eine CLV-, TXT- oder auch eine PDF-Datei von meinen Lieferanten bekommen würde, hätte ich immer noch das Problem, das gerade bei textbasierenden Dateien die Spalten oft verschoben werden. Dadurch gibt es häufig Probleme beim Abgleich, oder? Vielleicht kann mir vorab jemand dazu einen Tip geben, wie ich hier vorgehen kann.

Hier aber eine etwas detailiertere Beschreibung meines Vorhabens:
Ich habe eine CLV-Datei beispielsweise "ArtikelAlt", die meinen kompletten Warenstamm enthält. Diese möchte ich nun mit der CLV-Datei  meines Lieferanten abgleichen. Dabei soll mir Access die Artikel anzeigen bzw. markieren, deren EK-Preise sich verändert haben.

Ich bin Euch für alle Tipps bzw. Anhaltspunkte zum weiteren Vorgehen sehr dankbar.

Gruß,
newbie2010
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 05, 2010, 09:08:51
Hallo,

ZitatGibt es evtl. ein gutes Export-Tool für XTCommerce oder Veyton 4, das ich dann meinen Lieferanten vorschlagen könnte
Das müsstest du dann mal selbst beim Hersteller dieser Sofware recherchieren....
Kann mir aber gut vorstellen, dass MySQL und Oracle diese Funktionalitäten in deren DBMS zur Verfügung stellen ;)

ZitatAber auch wenn ich jetzt eine CLV-, TXT- oder auch eine PDF-Datei von meinen Lieferanten bekommen würde, hätte ich immer noch das Problem, das gerade bei textbasierenden Dateien die Spalten oft verschoben werden
CLV ... kenn ich nicht!  ??? CSV bedeutet Character Separated Values  und wenn diese
entsprechend der RFC 4180 aufgebaut sind (wird in der Regel so gehandhabt, besonders bei Datenexporten aus namhaften Datenbanksystemen),
beinhaltet jeder Datensatz auch noch die gleiche Anzahl von Spalten. ::)

Excel-Dateien sind ebenfalls kein Problem, bei Textdateien (TXT) müsste man schauen wie weit sie einer *.CSV nahe sind.

Bei PDF-Dateien hast du wahrscheinlich nur die Möglichkeit, diese einzurahmen und dann an einem schönen Platz an die Wand zu hängen - die kannst du
nicht so ohne Weiteres auslesen, es sei denn sie ist nicht gesperrt und du verfügst über einen pdf-Writer (z.B. Adobe PDF-Writer)
(nicht zu verwechseln mit einem PDF-Printer, der kann gar nix in dem Fall. :-\ )

Zu deiner Beschreibung:
Ich gehe davon aus, dass du deine Artikel und EK-Preise in einer Accesss-DB als Tabelle vorliegen hast!
Wenn nicht, KANNST du diese natürlich mittels der CSV-Datei 'ArtikelAlt' in Access IMPORTIEREN
Wenn du über ein CSV-Datei verfügst, welche die neuen Preisinformationen enthält, KANNST du diese ebenfalls in Access IMPORTIEREN.
Ab diesem Zeitpunkt stehen dir ALLE Funktionalitäten zur Verfügung, die du auch mit original Access-Tabellen hättest. Also jegliche Form von Abfragen,
Datenmanipulationen oder Verwendung in Formularen und Berichten ohne Einschränkungen.

HTH
Peter
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 05, 2010, 16:00:27
Vielen Dank für Deine erneute Nachricht. Leider, das habe ich schon erwähnt, bin ich ein völliger Anfänger, was Access angeht.

Ich möchte nun meine "ArtikelAlt" Datei mit der neuen Lieferantendatei abgleichen. Während des Abgleichs soll mir Access auflisten, welche Artikel sich vom EK-Preis her geändert haben, um so natürlich auch den VK-Preis ändern zu können. Natürlich sollen die Artikel daraufhin mit den aktualisierten EK- und VK-Preisen wieder in die "ArtikelAlt" Datei importiert werden. Das geht sicherlich nur mit VBA. Jetzt die große Frage, wie?

Vielen, vielen Dank für Euere Tipps.
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 06, 2010, 07:36:07
Hallo, guten Morgen,

ZitatIch möchte nun meine "ArtikelAlt" Datei mit der neuen Lieferantendatei abgleichen

Dazu solltest du BEIDE Dateien in Access IMPORTIEREN, so wie ich im vorangegangenem Posting geschrieben habe.
Zitat
Zu deiner Beschreibung:
Ich gehe davon aus, dass du deine Artikel ...

Wenn beide Tabellen im Access als ACCESS-TABELLEN vorhanden sind, solltest du mit Hilfe einer Aktualisierungabfrage wobei die Artikelnummer als Schlüssel fungiert, einen Vergleich der EK-Preise durchführen können.
Bei nicht übereinstimmung weist du dem Feld EK-ALT den Wert aus EK_NEU zu.
Das sollte es gewesen sein - OHNE VBA

HTH

Peter
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 06, 2010, 09:26:41
Danke für die Antwort. Aber wie würde eine solche Funktion lauten? Ich habe es mit einer Vergleichsoperation unter Kriterien versucht. Es funzt nicht. Meine beiden Tabellen sind aufgebaut, wie folgt:

EKALT

Artikelnummer
Produktname
.
.
EKPreis

EKNEU

Artikelnummer
Produktname
.
.
EKPreis

Wäre cool, wenn Du mir diese Funktion kurz definieren könntest. Danke!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 06, 2010, 10:21:05
Hallo,

in der Annahme, dass du bereits BEIDE Tabellen im Access stehen hast (EKALT und EKNEU)
KANNST du im Abfrageentwurf ... SQL-Ansicht folgendes eintragen:


UPDATE EKALT INNER JOIN EKNEU ON EKALT.Artikelnummer = EKNEU.Artikelnummer
SET EKALT.EKPreis = EKNEU.EKPreis
WHERE EKALT.EKPeis<>EKNEU.EKPreis;


Sollte dein Problem beheben...  8)

p.s. Originaltabellen VOR der Ausführung SICHERN!!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 06, 2010, 13:43:34
Bei dieser Abfrage soll ich einen Parameterwert für EKALT.EKPreis eingeben. Access soll jedoch nur die Tabelle "EKNeu" mit "EKALT" vergleichen .

Wie muß ich dafür die SQL-Anweisung ändern? Vielen Dank!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 06, 2010, 16:43:01
Hallo,

ZitatBei dieser Abfrage soll ich einen Parameterwert für EKALT.EKPreis eingeben

Dann wird dieses Feld nicht EKPreis heißen sondern einen anderen Namen haben - das wäre dann die Änderung, die du vornehmen musst.
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 06, 2010, 18:41:08
Liegt es am Variablentyp der beiden EKPreis-Datensätze? Ich hatte beiden bisher den Variablentyp "Text" zugewiesen. Welchen Variablentyp muß ich dem EKPreis zuweisen, dass es funktioniert? Danke!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 06, 2010, 19:07:46
Grüß dich,

ZitatIch hatte beiden bisher den Variablentyp "Text" zugewiesen

Ähemmm ....   Einkaufspreis ???  wieso Text als Felddatentyp ???  Ein Vergleich in der Form 'Katz' <> 'Hund' ist ja als solches auch nicht möglich.  ;D

Es handelt sich dabei NICHT um Variablen sondern um Tabellenfelder! Zwischen diesen beiden besteht ein RIESENGROSSER Unterschied!

Nimm Felddatentyp Zahl, und in den Eigenschaften der Felder stelle als Feldgröße Single ein - Single sollte eigentlich reichen.
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 06, 2010, 21:24:47
Das habe ich jetzt auch so eingestellt. Aber es wird immer noch vorab nach einem Parameterwert gefragt. Liegt es evtl. an der Access 2010er Version, die ich installiert habe. Ich stelle mich ein wenig blöd an. Ich kriege langsam die Kriese mit dieser Microsoft Sch.... . Sorry!  Was mache ich denn falsch? Muß ich in den Optionen etwas umstellen? Es ist eigentlich eine einfache SQL-Abfrage. Keine Ahnung. Falls Du noch ein wenig Geduld mit mir hast, so antworte mir doch bitte. Danke!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: oma am September 06, 2010, 22:12:35
Hallo,

Database wird Dir schon weiterhelfen!

Ich habe nur mal eine Bemerkung, da folgendes öfters anzutreffen ist:

ZitatIch kriege langsam die Kriese mit dieser Microsoft Sch.... . Sorry! 

und das von einem Newbie mit ziemlicher Unkenntnis vom Microsoft-Produkt!

Nicht für Ungut, es wird schon werden.

Gruß Oma
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 07, 2010, 10:29:39
Hallo, ...

was sind denn das für Worte ?

Zitatso antworte mir doch bitte
Sicher habe ich die Geduld - wenn auch du ein wenig Geduld aufbringen kannst, ich gehe schließlich auch noch einer Erwerbstätigkeit nach um vorm PC nicht zu verhungern. ;)

Stell mal die DB mit den beiden Tabellen GEZIPT hier rein, ich schau mir das am Echtsystem an.
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 08, 2010, 08:20:43
Ich habe Dir hier meine Datenbank in etwas abgespeckter Form hochgeladen. Sofern Du Zeit hast kannst Du Sie Dir ja mal ansehen. Vielen Dank!

[Anhang gelöscht durch Administrator]
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 08, 2010, 21:04:18
Hallo,

tja ein klitzekleiner 'Mangel' ...   ;)

sieh mal die Bilder im Anhang ---> Ändere deine Abfrage im Entwurfsmodus auf die Definition wie im Bild AbfrageNEU.jpg zu sehen, dann funktiooniert die Abfrage einwandfrei (es werden 4 Artikel zum Aktualisieren gefunden) ;)


HTH

Peter

[Anhang gelöscht durch Administrator]
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 09, 2010, 22:03:11
Danke Dir für Deine Hilfe. Das war doch schon mal ansatzweise das, was ich brauche.

Ich brauche jetzt aber noch eine Liste, der Daten, die sich geändert haben, d. h. bei welchem Artikel (mit welcher Artikelnummer) hat sich der EKPreis geändert. Wie kann ich das mit Access abfragen?

Danke!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 09, 2010, 22:13:44
Hallo,

Nimm die gleiche Abfrage her und stelle diese auf 'Auswahlabfrage' um, ziehe das Artikelfeld von EKAlt in die Spaltenliste und führe sie aus BEVOR du die Aktualisierungsabfrage erstmalig laufen lässt.
Alternativ kannst du auch eine neue Abfrage erstellen und folgende SQL eintragen:


SELECT EKALT.Artikelnummer, EKALT.EKPreis, EKNEU.EKPreis
FROM EKALT INNER JOIN EKNEU ON EKALT.Artikelnummer = EKNEU.Artikelnummer
WHERE EKALT.EKPreis<>[EKNEU].[EKPreis];


... sollte deiner Vorstellung nahe kommen :)

LG
Peter
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: newbie2010 am September 21, 2010, 10:55:13
Leider habe ich das Problem, dass beim Import meiner CSV-Datei, wenn ich "EKPreis" den Datentyp "Single" zuweise, die Zahlen hinter dem Komma ignoriert werden bzw. aufgerundet werden.

Wenn ich dem "EKPreis" als Datentyp "Text" importiere, wird der "EKPreis" incl. "," richtig importiert.

Was muß ich hier einstellen, damit der "EkPreis" auch mit dem Datentyp "Zahl" richtig übernommen wird (z. B. 12.34)?  Danke!
Titel: Re: Daten einlesen von externer Webseite
Beitrag von: database am September 21, 2010, 13:32:17
Hallo,

versuche für den Import den Datentyp Währung.

Wenn nach dem Import weniger Kommastellen angezeigt werden als in der CSV dann stelle im Tabellenentwurf die Dezimalstellen von Automatisch auf  3 oder 4 ... je anch dem wieviel du benötigst.
Wenn in der CSV 3 Stellen vorhanden waren, werden sie dadurch auch wieder sichtbar.

Grüße