Neuigkeiten:

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

Mobiles Hauptmenü

Verknüpfte .CSV Datei nur lesend abfragen

Begonnen von Ericolum, Oktober 08, 2015, 09:10:19

⏪ vorheriges - nächstes ⏩

Ericolum

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.

DF6GL

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.

Ericolum

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.

MaggieMay

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.
Freundliche Grüße
MaggieMay

Ericolum

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. 


MaggieMay

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.
Freundliche Grüße
MaggieMay

el_gomero

Hallo,

die Lösung wird also lauten: Datei kopieren und mit der Kopie weiterarbeiten - ob als eingebundene Tabelle oder Import.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Ericolum

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. 

MaggieMay

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?
Freundliche Grüße
MaggieMay

el_gomero

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?
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Ericolum

#10
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?

el_gomero

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.
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Ericolum

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.

ebs17

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?
Mit freundlichem Glück Auf!

Eberhard

el_gomero

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 ...
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen