Hej.
Jeg har lavet en del database-programmer hvor jeg opbevarer data i ascii-filer. Netop nu sidder jeg og tilføjer funktioner til min musik-database
http://jkfsoft.dk/musik32.htmDen måde jeg giver brugeren mulighed for at ændre data ser således ud. Der læses i 'musik-dat' indtil den aktuelle post, hver læst post skrives til filen 'musik.bak'.
Når det konstateres at det nu er den post der er rettet, læses i stedet fra tekstfelterne, der er et kontrol-array.
Derpå læses alle efterfølgende poster over i 'musik.bak' og til sidst når begge filer er lukket, kopieres 'musik.bak' til - og overskriver 'musik.dat'.
Da samme felter anvendes ved opretelse af nye poster - og sletning, er der kontrol-værdier for om det er en ny eller en sletning.
idu = Trim(txtmu(0).Text) & Trim(txtmu(1).Text)
Open netsti & "musik.dat" For Input As #3
Open netsti & "musik.bak" For Output As #4
Do While EOF(3) = False
For z = 0 To 14
Line Input #3, melo(z)
Next
id = Trim(melo(0)) & melo(1)
'--- Når posten er ny ------------------
If ny = 1 Then
If melo(0) = Trim(txtmu(0).Text) Then
heltny:
For z = 0 To 14
Print #4, txtmu(z).Text
Next z
ny = 0
labtjekny.Caption = "genbrug"
End If
If EOF(3) = True Then If ny = 1 Then GoTo heltny ' når båndnr. ikke findes i forvejen
End If ' ny =1
If melo(2) = "slet" Then GoTo lig1 'sletning - flyttet udenfor "If" 06-11-2004
If id = idu Then 'rettelse
For z = 0 To 14
Print #4, txtmu(z).Text
Next
idu = ""
Else
For z = 0 To 14
Print #4, melo(z)
Next
End If
lig1:
'If id = idu Then txtmu(2).Text = bd(1) 'indsat 15-11-2003 så kun én af to ens poster slettes.
If id = idu Then labtjekny.Caption = "genbrug" 'indsat 27-10-2004 så kun én af to ens poster slettes.
Loop
Close #3
Close #4
Clipboard.Clear
Clipboard.SetText mp3sti & txtmu(0).Text & txtmu(1).Text & ".mp3", 1
FileCopy netsti & "musik.bak", netsti & "musik.dat"
-------------------------------------------------------------------
I andre programmer med mindre datamængder opbevarer jeg data i lister, grids eller i arrays og skriver således direkte til datafilen når der er tilføjelser og rettelser.
Denne database har p.t. ca. 8000 poster.
M.v.h. Jørn