Avatar billede shooter Novice
23. oktober 2002 - 22:53 Der er 5 kommentarer og
1 løsning

hvordan finder jeg "største" filnavn

i et bibliotek der kun indeholder filer med navnet faktXXXXX.xls hvor XXXXX er tal mlm 1 og (i princippet) uendeligt vil jeg gerne finde det største XXXXX så jeg kan oprette en fil med navnet faktXXXXX+1.xls .
Det er helt sikkert, at ikke alle tal XXXXX mellem 1 og det største XXXXX er brugt, hvorfor det ikke hjælper at tælle hvor mange filer der er i biblioteket.

How to do ?

(jeg er absolute VB beginner, så bær over med mig!)
Avatar billede ndbth Nybegynder
23. oktober 2002 - 22:57 #1
opret en status.fil som indeholder sidste anvendte fakt-nr, og vedligeholde denne hver gang du laver en ny fil.
Avatar billede joern Nybegynder
23. oktober 2002 - 23:07 #2
Hej.

Jeg kan forstå at det drejer sig om fakturaer.

Hvis det er det program du arbejder på, der står for oprettelsen af fakture-numre, ville jeg ligesom ndbth foreslå at du gemmer det senest anvendte i en lille fil.  Så slipper du for at læse biblioteket igennem hver gang.

Men ellers:

Dim lbnr, nytnr, a as Long, b as Integer

For a = 0 To Filelist.ListCount - 1
  b = Len(fileList.FileName)
  lbnr = val(Mid(FileList.FileName, 4, b-8))
  If lbnr > nytnr Then nytnr = lbnr
Next a

nytnr = nytnr + 1

Håber det er uden fejl, ellers er det vel til at gennemskue alligevel.

M.v.h.  Jørn
Avatar billede shooter Novice
23. oktober 2002 - 23:19 #3
ndbth: en fil kan slettes hvis man finder ud af at der er noget galt med den, og for ikke at gentage fortidens synder med huller i fakturanummereringen vil jeg finde det aktuelt største nummer - ellers er ideen ok.
joern: tja sådan ville jeg have lavet det i fortran (programmeringssprog fra den sene middelalder) så det ser rimeligt ud.
Jeg vil prøve det i morgen aften.
Avatar billede shooter Novice
29. oktober 2002 - 21:48 #4
Joern:
Dit forslag virkede ikke da der var nogle erklæringer der ikke var lavet omkring filelist.
Da nummeret skal findes uden at der bliver defineret nogen grafisk filelist er løsningen som denne: (hugget delvist fra andre svar her + lidt VB hjælp + lidt af dit program + lidt egen tankevirksomhed !!)

mypath = "c:\dokumenter\tilbud\"
MyName = Dir(mypath, vbNormal)
nytnr = 0
Do While MyName <> ""
 
  If MyName <> ".\" And MyName <> "..\" Then
        If (GetAttr(mypath & MyName) And vbNormal) = vbNormal Then

        b = Len(MyName)
        lbnr = Val(Mid(MyName, 4, b - 8))
        lbnr = Val(Mid(MyName, 1, b - 4))
        If lbnr > nytnr Then nytnr = lbnr

      End If
  End If
MyName = Dir

Loop

nytnr = nytnr + 1

Men du får nu pointene alligevel da jeg har hugget lidt af din kode.
Avatar billede shooter Novice
29. oktober 2002 - 21:52 #5
Og lige DIM'erne hvis der skulle være andre der kan bruge denne kode:
Dim lbnr, nytnr, a As Long, b As Integer
Dim myfile, mypath, MyName
Avatar billede joern Nybegynder
29. oktober 2002 - 22:11 #6
Tak for point, det glæder mig at det kunne inspirere.

M.v.h. Jørn
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
Kurser inden for grundlæggende programmering

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