Avatar billede -anders- Juniormester
05. juli 2003 - 12:55 Der er 27 kommentarer og
1 løsning

Hente filnavne ind i tabel fra mappe på c:\

Hej
Jeg har en tabel "tbldata", i denne tabel er det et felt "Midifil", jeg har en fortløbne form som har tabellen tbldata som postkilde. på mit c-drev har jeg en mappe C:\midifiler, i denne mappe ligger der en masse midifiler .mid.

Det jeg ønsker er: på min form har jeg en knap, når jeg klikker på denne knap skal alle filnavne fra min mappe lægges ind i tabellen. Da der er flere felter i tabellen er det vigtigt at der skrives til feltet "midifiler" i tabellen. Jge havede spørgsmålet op i går http://www.eksperten.dk/spm/372709, men fortrød, så nu prøver jeg igen. Nogen der kan hjælpe

mvh Anders.
Avatar billede -anders- Juniormester
05. juli 2003 - 12:58 #1
PS. Jeg arbejder i access2000
Avatar billede mugs Novice
05. juli 2003 - 13:03 #2
Måske kan du bruge dette link.

http://www.eksperten.dk/spm/117129

fundet ved at benytte søgeordet "filnavne" i ekspertens vidensdatabase.
Avatar billede -anders- Juniormester
05. juli 2003 - 13:05 #3
Hej Mugs
Tak for indlægget, jeg har prøvet linket, samt en masse andre , men jeg kan ikke få det til at spille, har du nogen ideer

Anders
Avatar billede -anders- Juniormester
05. juli 2003 - 13:07 #4
I min søgen fandt jeg også nedenstående kode, men desværre spiller det ikke, er ikke nogen haj til vba

Function HentFilListe(FilMappe As String)
Dim db As Database
Dim rsFilNavne As Recordset
Dim FilNavn As String

    Set db = CurrentDb()
    Set rsFilNavne = db.OpenRecordset("tblFilNavne")
    FilNavn = Dir(FilMappe & "*.*")  ' Hent det første filnavn.
    Do While FilNavn <> ""
        With rsFilNavne
            .AddNew
            !FilNavn = FilNavn
            .Update
        End With
        FilNavn = Dir      ' Hent næste datafilnavn.
    Loop

End Function
Avatar billede mugs Novice
05. juli 2003 - 13:07 #5
Nej ingen gode ideer - Jeg går og roder nede i drivhuset, og skulle blot ind efter lidt vand, da jeg så dit spørgsmål. Så det er ikke noget jeg har tænkt nærmere over.
Avatar billede mugs Novice
05. juli 2003 - 13:10 #6
Det ser ud som en kode til Access97 - kontroller om du har en reference til DAO. Men jeg er helt ude i hampen, og det er rent gætteri.
Avatar billede -anders- Juniormester
05. juli 2003 - 13:11 #7
Det er chekket, det er mere om syntakser olg. er korrekte, men det haster bestemt ikke

Anders
Avatar billede hekla Nybegynder
05. juli 2003 - 21:55 #8
I ADO ser den sådan her ud:

Function HentFilListe(FilMappe As String)

Dim cnn As ADODB.Connection
Dim rsFilNavne As ADODB.Recordset
Dim strQuery As String
Dim FilNavn As String

Set cnn = CurrentProject.Connection
Set rsFilNavne = New ADODB.Recordset

strQuery = "SELECT * FROM tabel1 order by navn asc"
rsFilNavne.Open strQuery, cnn, adOpenStatic, adLockOptimistic

If rsFilNavne.RecordCount > 0 Then
rsFilNavne.MoveFirst
FilNavn = Dir(FilMappe & "*.*")  ' Hent det første filnavn.
    Do While rsFilNavne.EOF = False
        With rsFilNavne
        !Filer = FilNavn
        .Update
        End With
        FilNavn = Dir      ' Hent næste datafilnavn.
        rsFilNavne.MoveNext
    Loop
Else
    MsgBox "Der findes ingen filer i " & FilMappe, vbExclamation, "Ingen filer"
End If

rsFilNavne.Close
cnn.Close

End Function
Avatar billede hekla Nybegynder
05. juli 2003 - 21:56 #9
Det var et svar (Jeg glemmer det altid lige indtil jeg har trykket på knappen)
06. juli 2003 - 08:11 #10
Mugs->siger du, at du dyrker hamp i drivhuset?? ;o)
Avatar billede mugs Novice
06. juli 2003 - 08:13 #11
Neeeej > Men en masse andre gode ting.
06. juli 2003 - 08:14 #12
Du skrev bare, at du gik ude i drivhuset...og lidt efter siger du, at du er ude i hampen, såå... :o)
Avatar billede mugs Novice
06. juli 2003 - 08:17 #13
Ja det er korrekt. Blot en talemåde i denne del af landet. Men en del tomater, agurker og mange krydderurter, dog ikke sjov tobak :o)
06. juli 2003 - 08:20 #14
ja ja, I was just kidding - der var blot en sjov sammenhæng mellem de 2 sætninger ;o)
Avatar billede mugs Novice
06. juli 2003 - 08:23 #15
Jeg kan godt se det morsomme i sammenhængen. Jeg prøvede ufrivilligt den sjove tobak for mange år siden. Jeg var i Christinia til koncert med Gasolin, og selvom jeg ikke selv røg, blev jeg høj (og syg) af de andres rygning. Og siden har jeg ikke haft spor lyst.
Avatar billede -anders- Juniormester
06. juli 2003 - 11:57 #16
Hej hekla
Tak for dit svar, desværre køre det ikke helt, men jeg tro dog det er den vej jeg skal problemet er:

Når jeg kalder funktionen HentFilListe ("C:\Midifiler")ved tryk på knap i formen kommer din msgbox og fortæller at der ikke er nogen filer i C:\midifiler, og det er der.

Jeg kan heller lige få min tblData med feltet midifil til at spille helt ok, nednenstående er din kode som jeg har forsøgt at rette til måske du kan få den til at virke eller fortælle hvor den er gal:

Function HentFilListe(FilMappe As String)

Dim cnn As ADODB.Connection
Dim rsFilNavne As ADODB.Recordset
Dim strQuery As String
Dim FilNavn As String

Set cnn = CurrentProject.Connection
Set rsFilNavne = New ADODB.Recordset

strQuery = "SELECT * FROM tblData order by Midifil asc"
rsFilNavne.Open strQuery, cnn, adOpenStatic, adLockOptimistic

If rsFilNavne.RecordCount > 0 Then
rsFilNavne.MoveFirst
FilNavn = Dir(FilMappe & "*.Mid")  ' Hent det første filnavn.
    Do While rsFilNavne.EOF = False
        With rsFilNavne
        !Midifil = FilNavn
        .Update
        End With
      ' FilNavn = Dir      ' Hent næste datafilnavn.
        rsFilNavne.MoveNext
    Loop
Else
    MsgBox "Der findes ingen filer i " & FilMappe, vbExclamation, "Ingen filer"
End If

rsFilNavne.Close
cnn.Close

mvh Anders.
Avatar billede -anders- Juniormester
06. juli 2003 - 12:45 #17
Hej Igen
Nu er jeg kommet så langt at hvis jeg har mindst en post i tblData kommer der ingen fejl,i min statuslinje kan jeg se at db'en beregner når jeg klikker på min knap, men til gengæld bliver der ikke tilføjet nogen poster overhovedet i tblData hulk hulk

Anders
Avatar billede mugs Novice
06. juli 2003 - 12:49 #18
Det ene sted hedder det .Mid, og det andet Midi???

FilNavn = Dir(FilMappe & "*.Mid")  ' Hent det første filnavn.
!Midifil = FilNavn
Avatar billede -anders- Juniormester
06. juli 2003 - 12:56 #19
Ok Mugs chekker lige, men skulle der ikke være et eller andet med .add eller sådan noget

Anders
Avatar billede -anders- Juniormester
06. juli 2003 - 13:03 #20
Hej
Nej desværre det køre ikke, gad vide havd der er galt, jeg syntes det er chekket på kryds og tværs, nogen der måske kunne sende et eks, jeg kan også sende db. den fylder ikke ret meget min mail anj@bryggemail.dk

Anders
Avatar billede hekla Nybegynder
06. juli 2003 - 15:37 #21
Du skal skrive filmappen som c:\midifiler\
Husk den sidste backslash.

Jeg tror at det der er galt, er at det, som jeg satte op, er beregnet på at tilføje data til en kolonne i en tabel, hvor der er data i forvejen. Den vil kun tilføje data til kolonnen for de poster, som eksisterer i forvejen.

Hvis du vil have den til at fortsætte indtil der ikke er flere filnavne i mappen, skal du ændre:

  Do While rsFilNavne.EOF = False
til
    Do While FilNavn <> ""

jeg kan ikke huske om den har brug for en .AddNew før !Midifil = FilNavn


Fejlmeddelelsen er forvirrende, for der skulle have stået, at der ikke er nogen poster i tabellen. Jeg glemte at ændre den, da jeg ændrede Do While sætningen
Avatar billede -anders- Juniormester
06. juli 2003 - 17:10 #22
Hej Hekla
Tak for dit sidste svar, det spiller ikke helt, din løsning giver lidt problemer, men jeg er dog kommet lidt videre, så jeg har besluttet mig for at lukke spørgsmålet og give dig de 200 points, jeg vil arbejde lidt videre og se om jeg kan få det til at spille, tak for nu

Anders
Avatar billede hekla Nybegynder
06. juli 2003 - 17:14 #23
:o) Takker for point. Du kan skrive her í spørgsmålet igen, hvis der stadig er problemer.
Avatar billede -anders- Juniormester
06. juli 2003 - 21:36 #24
Hej Hekla
Blot til orienrering, jeg har nu fået det til at virker somm det skal, din kode var det meste af vejen rigtig, dog var der et par enkelte rettelser. Jeg lægger koden her, så andre kan evt. kan få glæden af den. Endnu engang tak for hjælpen.

Anders.


Function HentFilListe(FilMappe As String)

Dim cnn As ADODB.Connection
Dim rsFilNavne As ADODB.Recordset
Dim strQuery As String
Dim FilNavn As String

Set cnn = CurrentProject.Connection
Set rsFilNavne = New ADODB.Recordset

strQuery = "SELECT * FROM tblData order by Midifil asc"
rsFilNavne.Open strQuery, cnn, adOpenStatic, adLockOptimistic

If rsFilNavne.RecordCount > 0 Then
rsFilNavne.MoveFirst
FilNavn = Dir(FilMappe & "*.Mid")  ' Hent det første filnavn.
Do Until FilNavn = ""
With rsFilNavne
.AddNew
!Midifil = FilNavn
.Update
End With

FilNavn = Dir    ' Hent næste datafilnavn.
rsFilNavne.MoveNext
Loop

Else
MsgBox "Der findes ingen filer i " & FilMappe, vbExclamation, "Ingen filer"
End If

rsFilNavne.Close
cnn.Close

End Function
Avatar billede -anders- Juniormester
06. juli 2003 - 21:40 #25
Lige en sidste ting:
I min filmappe ligger der 12000 filer, da jeg klikkede på min knap tog det mindre end et sekund så var min tabel opdateret med 12000 poster, hæhæ noget hurtigere en at side og taste dem ind.

:o) Anders
Avatar billede hekla Nybegynder
06. juli 2003 - 22:46 #26
Glimrende, men der er lige en allersidste ting. Fejlmeddelelsen er forkert i forhold til det, som du bruger funktionen til. Du kunne faktisk fjerne IF-sætningen. Så ville funktionen ikke kræve, at der var poster i tabellen i forvejen.
Avatar billede -anders- Juniormester
06. juli 2003 - 23:25 #27
Hej
Ja det rigtigt, jeg har allerede fjernet if-sætningen, men tak for indlægget

Anders
Avatar billede mugs Novice
06. juli 2003 - 23:27 #28
I kloge mennesker - Jeg kæmper stadig, kan ikke få skidtet til at fungere :o)
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