|
||||
Disse websidene oppdateres ikke lengre og er kun tilgjengelig for historikken sin skyld.Klikk her for å gå til den oppdaterte informasjonen. Tilfeldig filtilgang (random access)Tilfeldig tilgang benyttes for å lese og skrive informasjon til en fil uten at man er nødt til å lukke filen mellom hver av operasjonene. Filer for tilfeldig tilgang lagrer informasjonen i poster, noe som gjør det enkelt og raskt å lokalisere informasjon. En post inneholder informasjon som er lagret i en brukerdefinert datatype. Brukerdefinerte datatyper defineres i modulens deklarasjonsdel (på toppen av modulen) på denne måten: Type MyRecordInfo LastName As String * 30 FirstName As String * 30 BirthDate As Date End Type Når man definerer en brukerdefinert datatype som skal benyttes i en fil for tilfeldig tilgang, er det viktig at man benytter variabler med en fast lengde. Variabeltypen String kan inneholde tekster av forskjellig lengde, derfor er det viktig at man angir hvor mange tegn variabelen skal lagre, for eksempel betyr LastName as String * 30 at variablen LastName kan inneholde 30 tegn. For å
åpne en fil for tilfeldig tilgang fra VBA benyttes følgende syntaks: Her er en eksempelmakro som lager en ny fil for tilfeldig tilgang ved hjelp av den egendefinerte datatypen som er vist ovenfor: Sub WriteRandomFile() Dim MyRecord As MyRecordInfo, FileNum As Integer, i As Integer If Dir("C:\FOLDERNAME\RANDFILE.DAT") <> "" Then ' slett filen dersom den finnes fra før Kill "C:\FOLDERNAME\RANDFILE.DAT" End If FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\RANDFILE.DAT" For Random As #FileNum Len = Len(MyRecord) ' opprett en ny fil ' skriv til filen For i = 1 To 100 With MyRecord .LastName = "Etternavn" & i .FirstName = "Fornavn" & i .BirthDate = Date End With Put #FileNum, , MyRecord ' legger til en ny post på slutten av filen Next i Close #FileNum ' lukker filen End Sub Informasjonen fra filen for tilfeldig tilgang kan leses på denne måten: Sub ReadRandomFile() Dim MyRecord As MyRecordInfo, FileNum As Integer, i As Integer FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\RANDFILE.DAT" For Random As #FileNum Len = Len(MyRecord) ' åpner den eksisterende filen ' les informasjon fra filen For i = 1 To 100 Get #FileNum, , MyRecord ' leser den neste posten ' gjør noe med informasjonen With MyRecord 'Debug.Print .LastName & ", " & .FirstName & " " & .BirthDate Debug.Print Trim(.LastName) & ", " & _ Trim(.FirstName) & " " & .BirthDate End With Next i Close #FileNum ' lukk filen End Sub Som tidligere nevnt er det enkelt å gjenfinne informasjon fra en angitt post i en fil for tilfeldig tilgang. Makroen nedenfor viser et eksempel på hvordan dette kan gjøres: Sub ReadRandomFileRecord() Dim MyRecord As MyRecordInfo, FileNum As Integer, i As Integer, RecordsCount As Long FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\RANDFILE.DAT" For Random As #FileNum Len = Len(MyRecord) ' åpner filen RecordsCount = LOF(FileNum) / Len(MyRecord) ' totalt antall poster i = InputBox("Velg en post (1-" & RecordsCount & ")", "Vis en post", 1) If i > 0 And i <= RecordsCount Then Get #FileNum, i, MyRecord ' les posten ' gjør noe med informasjonen With MyRecord Debug.Print Trim(.LastName) & ", " & _ Trim(.FirstName) & " " & .BirthDate End With End If Close #FileNum ' lukk filen End Sub Det er like lett å redigere innholdet i en angitt post i en fil for tilfeldig tilgang. Denne makroen viser hvordan: Sub WriteRandomFileRecord() Dim MyRecord As MyRecordInfo, FileNum As Integer, i As Integer, RecordsCount As Long FileNum = FreeFile ' neste ledige filnummer Open "C:\FOLDERNAME\RANDFILE.DAT" For Random As #FileNum Len = Len(MyRecord) ' åpner filen RecordsCount = LOF(FileNum) / Len(MyRecord) ' totalt antall poster i = InputBox("Velg en post (1-" & RecordsCount & ")", "Oppdater en post", 1) If i > 0 And i <= RecordsCount Then ' rediger den valgte posten With MyRecord .LastName = "NyttEtternavn" .FirstName = "NyttFornavn" .BirthDate = Date + 1 End With Put #FileNum, i, MyRecord ' lagrer posten med ny informasjon End If Close #FileNum ' lukker filen End Sub
Dokumentet er sist oppdatert 1999-12-17 12:33:11 Utskriftsvennlig versjon
|
||||
|