Avatar billede jensen363 Forsker
01. februar 2011 - 17:46 Der er 7 kommentarer og
3 løsninger

Automatisk link eller import af seneste *.csv

Fra ekstern dataleverandør leveres 3 csv filer som efterfølgende skal databehandles i Access.

Data leveres i samme filfolder og har følgende fil syntax :

  AAYYYYMMDD.CSV
  DKYYYYMMDD.CSV
  FAYYYYMMDD.CSV

De første to karakterer er faste for de tre filer, resten viser dataaktualitet i form af år, måned og dato.

Jeg har behov for en rutine som enten :

  1.  sikre at jeg linker til seneste fil
  2.  sikrer at jeg altid importerer seneste fil
Avatar billede mugs Novice
01. februar 2011 - 18:50 #1
Det må være muligt, at indlæse filnavnene i en tabel i Access, derefter ændre filnavnet til en dato . Derefter en DMax funktion der indlæser den seneste modtagne fil.
Avatar billede fdata Forsker
01. februar 2011 - 20:30 #2
... og du behøver endda ikke konvertere til en dato. Filnavnene kan jo sorteres direkte. ;o)

Du kunne oprette en funktion til formålet, f.eks.:

Private Sub Test_FindNyesteFil()
  Debug.Print FindNyesteFil("AA")
End Sub

Function FindNyesteFil(Prefix As String) As String
  Dim fs, Folder, Filerne, Fil
 
  Set fs = CreateObject("Scripting.FileSystemObject")
  Set Folder = fs.GetFolder("C:\DinMappe\")  ' Indsæt aktuel mappe her
  Set Filerne = Folder.Files

  'Tøm tabellen
  DoCmd.SetWarnings False
  DoCmd.RunSQL ("DELETE Filnavne.* FROM Filnavne")
  DoCmd.SetWarnings True

  'Indlæs filnavnene
  For Each Fil In Filerne
    If Left(Fil.Name, Len(Prefix)) = Prefix Then
      DoCmd.SetWarnings False
      DoCmd.RunSQL ("INSERT INTO Filnavne(Filnavn) SELECT '" & Fil.Name & "'")
      DoCmd.SetWarnings True
    End If
  Next

  Set fs = Nothing
  Set Folder = Nothing
  Set Filerne = Nothing
 
  'Returner max
  FindNyesteFil = DMax("Filnavn", "Filnavne")
End Function

(forudsætter, at der ikke er andre filer i mappen, hvis navn starter med f.eks. AA)
Avatar billede fdata Forsker
01. februar 2011 - 20:31 #3
Oooops. Du skal jo også lige huske at oprette tabellen Filnavne med bare et enkelt felt Filnavn (på f.eks. 20 tegn)
Avatar billede mugs Novice
01. februar 2011 - 20:41 #4
Jensen skriver:

"dataaktualitet i form af år, måned og dato"

det forstår jeg således, at der skal opretholdes en historik, så gamle .csv filer ikke slettes.
Avatar billede jensen363 Forsker
01. februar 2011 - 20:58 #5
Mugs > dette er korrekt, eksisterende / allerede modtagne csv filer bibeholdes i biblioteket

Jeg kigger på jeres forslag i morgen
Avatar billede Slettet bruger
01. februar 2011 - 22:34 #6
Hej Jensen!~)

Du kan gøre således:

http://www.parodux.com/?cat=36
Avatar billede Slettet bruger
02. februar 2011 - 10:13 #7
Du kan så lave et eller andet, så den udfra de 2 startbogstaver vælger den tabel, som skal rammes... Men så er du nok nød til at lade datoforespørgslen skrive til en temp tabel ellers vil du kun få den første fil ind, som der er på den pågældende dato!~)
Avatar billede jensen363 Forsker
02. februar 2011 - 11:26 #8
Det ser lovende ud ... har bare ikke haft tid til at kigge på det endnu ... ( månedsskifte )
Avatar billede Slettet bruger
02. februar 2011 - 11:41 #9
god arbejdslyst!~)
Avatar billede jensen363 Forsker
15. februar 2011 - 09:21 #10
Jeg har nu arbejdet lidt med en mulig løsning, men kan ikke helt finde noget tilfredsstillende, så jeg konkretisere lige opgaven i håb om at I kan vise mig løsningen :-)

Jeg har nu behov for at indlæse alle .csv filerne ( ikke kun seneste ) fra et bestemt bibliotek. Alt indhold er i tekstformat og indeholder ingen overskrifter ( Field1 - Field23 )

Sammen med importen, skal importtabellen beriges med oplysninger om fra hvilken fil importen stammer, altså en ekstra kolonne med filnavnet ...

Håber I bærer over med mig, det er længe siden jeg har arbejdet med vba, så jeg er lidt rusten :-(

Fortsat god dag !!!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester