Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Ericolum am Oktober 08, 2015, 09:10:19

Titel: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 08, 2015, 09:10:19
Hallo Forum User,

ich habe eine Frage zu verknüpften CSV Dateien auf der einmal Access permanent zugreift und ein Logprogramm (Erfassung von Signalen einer SPS/Steuerung) was im Takt von 2 sec Werte in diese CSV Datei schreibt.

Zurzeit ist es so, dass das Logprogramm eine Logdatei mit *.csv erstellt in der Signale von einer SPS geschrieben werden. Diese Textzeile (getrennt mit ;) beinhaltet Datum, Zeit, Stückzahl 1, Stückzahl 2 und Stückzahl 3. Wenn ich in Access diese CSV Textdatei verknüpfe und einlese und über eine Abfrage aufrufe und in einem Formular permanent (2 sec Takt) abfrage kann das Logprogramm nicht mehr in die CSV schreiben.

Gibt es eine Möglichkeit Access zu sagen das es die CSV nur "lesend" abfragen soll? Denn schreiben muss definitiv das Logprogramm. 

Danke schon mal.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: DF6GL am Oktober 08, 2015, 10:59:49
Hallo,


wird es wohl nicht geben...

Statt Verknüpfen könnte ein periodischer Text-Import (TransferText oder lapidar mit Basic-Grundbefehlen --> Line Input oder dergleichen) die Sperrung vermeiden. Eine gelegentliche Sperrung wegen der (vermutlich) nicht machbaren "Synchronisation" mit der SPS wird wohl trotzdem auftauchen.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 08, 2015, 11:11:08
Gibt es da keine Möglichkeit?

Dem Logprogramm macht es nix aus, wenn es eine Zeit X (Bsp.: 1 min) nicht schreiben kann, es hat dafür einen Pufferspeicher. Nur ich möchte verhindern das Access dauerhaft die Datei blockiert und das Logprogramm dauerhaft nichts eintragen kann.

Wie kann so ein Textimport erfolgen? VBA oder Macro.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: MaggieMay am Oktober 08, 2015, 11:35:24
Hi,

wie legst du denn die Verknüpfung an? Der Import könnte mit der Transfertext-Methode vorgenommen werden.
Das dürfte aber auf die Dauer zu einem nicht unerheblichen Aufblähen der DB führen, also regelmäßiges Komprimieren wäre Pflicht.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 08, 2015, 11:45:11
Die Verknüpfung habe ich im Access 2013 so erstellt:

Externe Daten --> Importieren und Verknüpfen --> Textdatei --> Verknüpfung zur Datenquelle indem Sie eine verknüpfte Tabelle erstellen (letzter Punkt) --> Tabelle eingefügt

Hier habe ich festgestellt das die Tabelle dann immer auf dem neuesten Stand ist. Jedoch wenn ich sie im Access öffne diese dann für das Logprogamm schreibend gesperrt ist. 

In der Tabelle gibt es nur eine Zeile (siehe Anhang):


diese kann auch immer wieder überschrieben werden, sollte also nicht zu groß werden. 

Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: MaggieMay am Oktober 08, 2015, 11:49:21
Hi,
ZitatDie Verknüpfung habe ich im Access 2013 so erstellt:
also manuell.

Möglicherweise macht es auch einen Unterschied, ob die Datei fortgeschrieben oder immer wieder überschrieben wird. Aber wie auch immer, es gibt wohl keine Option in Access, eine Textdatei nur "Read Only" zu verknüpfen.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: el_gomero am Oktober 08, 2015, 12:05:34
Hallo,

die Lösung wird also lauten: Datei kopieren und mit der Kopie weiterarbeiten - ob als eingebundene Tabelle oder Import.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 08, 2015, 12:12:42
Den Importschritt kann man doch abspeichern wenn man in der Importauswahl Punkt 1 wählt (Importieren Sie die Quelldaten in eine Tabelle in der aktuellen Datenbank). Könnte man diesen immer wieder aufrufen und die Daten überschreiben? Wäre das eine Variante? 

Die Tabelle sollte überschrieben werden. Also immer die eine Zeile. 

Zitatdie Lösung wird also lauten: Datei kopieren und mit der Kopie weiterarbeiten - ob als eingebundene Tabelle oder Import.

Die Werte sollen aber als "Liveticker" laufen, also das Formular wird über das Zeitgeberinterval (5000ms) aktualisiert. 
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: MaggieMay am Oktober 08, 2015, 12:16:49
Sorry, aber Logdatensätze im 2-Sekunden-Takt schreiben und in eine Access-DB wieder einlesen - kann man da nicht eine andere Schnittstelle finden? Oder ist das die einzige Aufgabe dieser DB, das Log zu überwachen?
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: el_gomero am Oktober 08, 2015, 13:17:09
technisch wäre das sicher kein Problem im Timer-Event den Befehl fürs kopieren zu hinterlegen. Bei eingebundener Tabelle stehen die Daten dann auch gleich zur Verfügung.

Für mich aber nur schwer vorstellbar welcher Mensch in der Lage ist alle 5 Sekunden die Daten zu erfassen und geistig zu verarbeiten. Spätestens nach ein paar Minuten tritt doch dabei die Augenstarre ein, oder?

Wozu soll das Monitoring denn dienen?
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 08, 2015, 14:04:18
Ja das wäre zu schnell, aber die Daten werden von einer SPS (S7 Steuerung) erzeugt und theoretisch in einem Takt von ca. 60ms ausgegeben. Das Logprogramm holt sich die Daten innerhalb des Zykluses und kann diese in der eingestellten Zeit von jetzt 2sec in ein CSV Format ausgeben. Das CSV Format ist das gängige bei OPC Servern.

Das Ziel dahinter ist eine Stückzahlauswertung die annähernd live passiert. Es soll dann später mal ein Bildschirm an der Wand hängen auf dem man die Stückzahlen aller Produktionsmaschinen und -anlagen sehen kann. Über eine Access RT könnte man das laufen haben und Grafisch die Ist- und Soll-Stückzahlen ausgeben. Es soll ein "einfaches" System sein was wir selber annähernd beherrschen.

Jetzt fehlt nur noch die Schnittstelle zwischen csv Datei und Access.

Geht evtl. so etwas? 

http://www.dbwiki.net/wiki/Access_Bedienungsanleitung:_Importspezifikation_anlegen

ist das praktikabel?
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: el_gomero am Oktober 08, 2015, 14:55:53
Zitat
Geht evtl. so etwas? 
prinizipell schon, das würde aber immer einen Import nach sich ziehen. Und bei der angestrebten Frequenz wäre wohl eine Verknüpfung der csv-Kopie zu bevorzugen. Also einfach über Externe Daten-Textdatei einbinden.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 09, 2015, 07:44:13
ZitatUnd bei der angestrebten Frequenz wäre wohl eine Verknüpfung der csv-Kopie zu bevorzugen. Also einfach über Externe Daten-Textdatei einbinden.

Dann ist ja aber was ich Anfangs beschrieben habe das Problem. Das ganze Synchron zu bekommen ist nicht relevant, da das Logprogramm einen Puffer hat und nicht immer schreiben muss wenn es das will.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: ebs17 am Oktober 09, 2015, 09:05:08
Wie groß wird die Logdatei in etwa werden?

Man könnte auch in passenden Abständen > 2 Sekunden sowie bei Bedarf die originale Logdatei kopieren  und dann die Kopie in die Datenbank verknüpfen.

Bezüglich "annähernd live" müsste man für sich definieren, was das zeitlich wirklich heißt.
Auch bei der verknüpften Originaltabelle sieht man ja die aktuellen Daten erst nach einem Requery des Formulars bzw. nach Aktualisierung der Tabellenansicht. Wer möchte sich aber auf Dauer ein 2-Sekunden-Geflacker wirklich anschauen?
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: el_gomero am Oktober 09, 2015, 09:13:16
Moinsen,

was war denn daran missverständlich?
Zitat
Und bei der angestrebten Frequenz wäre wohl eine Verknüpfung der csv-Kopie zu bevorzugen.

Auch in den posts davor wurde immer zu einer Kopie der Logdatei geraten ...
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 09, 2015, 13:53:23
Mit der Kopie habe ich auch schon in Betracht gezogen, jedoch gibt es folgendes Problem (bitte berichtigen wenn falsch).

Wenn Access auf die csv Datei verknüpft ist sperrt Access die Datei und man kann nur lesend darauf zugreifen. Das wiederum bedeutet aber, dass kein anderes Programm im Windows diese Datei überschreiben kann. Denn die Datei ist ja blockiert. Oder? Das habe ich schon getestet.

Mit dem aktualisieren des Formulars flackert erstmal nix.

Die csv Datei ist ca. 1kb groß. Habe Sie mal angehangen müsst ihr in csv umbenennen ...
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: el_gomero am Oktober 09, 2015, 14:22:32
die verknüpfte Datei wird nur gesperrt wenn ein Zugriff erfolgt. Also wenn du zB eine Abfrage geöffnet hast (nicht Entwurfsansicht), die auf der Datei basiert. Sonst wird sie durch die Verknüpfung nicht gesperrt und kann also überschrieben werden.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 12, 2015, 09:27:20
Sobald ich das Formular mit der Abfrage öffne blockiert es die Datei schon. Das Formular soll permanent geöffnet sein. 
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: el_gomero am Oktober 12, 2015, 09:58:32
Moin,

ZitatDas Formular soll permanent geöffnet sein.

Das wird nur hinhauen, wenn du für den Zeitraum des Imports die Datenquelle raus nimmst. Oder eben gleich ein ungebundenes Form, das seine Werte über eine Zuweisung erhält.
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: Ericolum am Oktober 12, 2015, 12:05:58
Zitatwenn du für den Zeitraum des Imports die Datenquelle raus nimmst

kannst du das bitte genauer ausführen?

ZitatOder eben gleich ein ungebundenes Form, das seine Werte über eine Zuweisung erhält.

hier bitte auch. Danke!
Titel: Re: Verknüpfte .CSV Datei nur lesend abfragen
Beitrag von: daolix am Oktober 16, 2015, 17:48:22
hallo
du könntest per timer, api oder wmi diese datei überwachen, und nur bei änderungsevents, weil dein sps diese datei ja ändert/beschreibt, entsprechend reagieren. hierbei musst du die datei dann direkt selbst auslesen und zur anzeige bringen, den verknüpfenden schnickschnak musst du knicken.