Koppelen van csv-files in access mbv vba-code

Status
Niet open voor verdere reacties.

linkav

Gebruiker
Lid geworden
13 jun 2007
Berichten
465
In een scada/visualisatie-pakket worden CSV-bestanden aangemaakt met logging-gegevens, per seconde worden 2 metingen vastgelegd (uit productie-omgeving:temperaturen, drukken, hoeveelheden,....). Per dag worden 24 bestanden gecreeerd, één per uur dus. In de naam van de bestanden is de datum en het uur opgenomen (vb bestandsnaam C_20070612_22.CSV). Mij is gevraagd om via access bepaalde berekeningen (analyses) op die cijfers uit te voeren. De gebruiker wil via een form een selectie kunnen maken van een begintijdstip (datum en uur) en het eindtijdstip (datum en uur). Het kan dus over meerdere dagen gaan.

Handmatig kunnen de nodige csv-files gekoppeld worden; er wordt dan gevraagd naar scheidingsteken, of de eerste rij de veldnamen bevat of niet, .....

Je voelt de vraag al wel aankomen zeker: kan ik mbv programmacode de csv-files koppelen, zodat ik enkel die bestanden koppel die nodig zijn om de logging-gegevens te verkrijgen? Hoe kan ik bij het sluiten van het formulier de net aangekoppelde bestanden weer ontkoppelen (mbv vba-code)?

Groeten,
Ariane
 
Hallo Ariane,

wellicht een idee om je bestanden te importeren?

Groet,

Tardis
 
Beste Tardis,
Het importeren van de bestanden is niet aan de orde. Ieder uur wordt een nieuw CSV-bestand aangemaakt. In de front-end kan ik moeilijk bestanden gaan koppelen/importeren die morgen pas aangemaakt worden. Daarenboven gaat het over logging-gegevens van meer dan 2 jaar. Even rekenenen 2jr x 365 dagen x 24 uren per dag geeft al 17520 CSV-files en het is de bedoeling dat de gegevens minimaal 3jr bijgehouden worden. Het lijkt mij intressanter dat via de front-end de CSV-files dynamisch gekoppeld OF geimporteerd kunnen worden.

Gr,
Ariane
 
Hallo Ariane,

ik zou niet weten waarom importeren geen optie is, als je dat liever niet doet, prima.
Wat je kan dan is eenmalig een importspecificatie maken.
Daarin kun je aangeven wat het scheidingsteken is, of de eerste rij klomnamen bevat, en het gegevenstype van de kolommen.
Sla de specificatie op.

Vervolgens schrijf je een stukje VBA code om de csv gegevens te importeren in een tabel.
Gebruik daarbij de methode TransferText.
Tabel eerst via code leegmaken, daarna vullen mbv TransferText.

Wellicht kun je via code ook koppelen, daar kan ik je niet bij helpen.

Groet,

Tardis
 
Ik heb nog nooit een csv file gekoppeld en ik vraag me af of het kan. Ik zou het doen zoals Tardis het voorstelt. Inlezen die hap.

Je kan met het timer event van een form een bestand iedere msec inlezen. Dat lijkt me vaak genoeg.

Zet in je timer event dat je het laatste bestand in een directory iedere 10 minuten in wilt lezen. Of je houdt in een tabel bij welke bestanden je hebt gehad en je leest de rest in die directory in.

succes!
 
Beste Tardis,

Het importeren lijkt mij het proberen waart.

Hoe kan ik die eenmalige een maken? Waar vind ik hierover meer uitleg?

Groetjes
Ariane
 
Hallo Ariane,

importeer een csv bestand via Bestand -> Importeren.
Er wordt nu een wizard gestart, wijst zich vanzelf.
Wel even op Geavanceerd klikken, dan kun je de specificatie naar jouw hand zetten en opslaan.
Vergeet ook niet om de naam die je aan de specificatie geeft te noteren (die vind je niet zo 123 terug namelijk ;) )

Groet,

Tardis
 
Bedankt!!! Ik ga het vanavond uit proberen!!

Groetjes,
Ariane
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan