Skapa en egen databas med VB
Förord
Nu är det dags att börja med den grafiska presentationen och vi skall kunna erbjuda adderingInnehåll
»Relaterade artiklar
» Skapa en egen databas med VB» Skapa en egen databas med VB
Addera post (record)
Nu har vi kommit så långt att det är dags att addera en form som vi skall använda till att lägga till nya poster med. För detta behöver vi en ny form som vi låter få heta Form2. På denna formen lägger vi till två command knappar, en för att spara informationen och en för att avbryta om vi inte vill spara något mer.Så här ser formen ut när vi skapat den. Jag passar även på att sätta egenskapen MaxLength på varje fält som kan skrivas i (editeras). Detta beror på att du kan ju inte lagra mer text per fält än vad vi tillåter i database, så om du inte gör det, vet inte användaren hur mycket han kan skriva in.
PostId är ett fält som vi bara visar och kommer tilldela varje nytt record. Fältet raderad som vi inte har med, används i bakgrunden och presenteras inte vid skapandet av en post (record) eftersom det inte finns något behov av att skapa en post och sedan radera den.
Först skall vi nu se till att denna formen kan presenteras av Form1's knapp. genom att skriva regler för knappen cmdAdd_Click i den första formen:
(Placera denna koden i Form1)
Private Sub cmdAdd_Click()
Form2.Show
End Sub
Efter att det har gjorts, kan vi från form1 trycka på knappen som vi kallar "Addera ny post" och därmed starta upp form2. I Form2 som du ser ovan, finns även där två knappar, en för Avsluta och en för Spara. Avsluta knappen stänger bara formen utan att spara eventull skriven text. Men Spara däremot, skall vi se till att texten som registrerasin skall lagras i databasen och kompletteras upp med PostId.
PostId
Därför börjar vi med PostId. Det är en räknare som bara ökar och ökar, det viktigaste med den funktion är att det aldrig får bli samma nummer två gånger. För att enkelt se till att vi har en hantering för detta, skriver vi en subrutin som vi kan kalla på. Rutinen skall både kunna presentera ett nytt nummer samt spara det för att vi inte skall kunna återanvända det igen. Denna rutinen skall vi nu ta en närmare titt på.
Nu har vi kommit så långt att det är dags att addera en form som vi skall använda till att lägga till nya poster med. För detta behöver vi en ny form som vi låter få heta Form2. På denna formen lägger vi till två command knappar, en för att spara informationen och en för att avbryta om vi inte vill spara något mer.
Så här ser formen ut när vi skapat den. Jag passar även på att sätta egenskapen MaxLength på varje fält som kan skrivas i (editeras). Detta beror på att du kan ju inte lagra mer text per fält än vad vi tillåter i database, så om du inte gör det, vet inte användaren hur mycket han kan skriva in.
PostId är ett fält som vi bara visar och kommer tilldela varje nytt record. Fältet raderad som vi inte har med, används i bakgrunden och presenteras inte vid skapandet av en post (record) eftersom det inte finns något behov av att skapa en post och sedan radera den.
Först skall vi nu se till att denna formen kan presenteras av Form1's knapp. genom att skriva regler för knappen cmdAdd_Click i den första formen:
(Placera denna koden i Form1)
Private Sub cmdAdd_Click()
Form2.Show
End Sub
Efter att det har gjorts, kan vi från form1 trycka på knappen som vi kallar "Addera ny post" och därmed starta upp form2. I Form2 som du ser ovan, finns även där två knappar, en för Avsluta och en för Spara. Avsluta knappen stänger bara formen utan att spara eventull skriven text. Men Spara däremot, skall vi se till att texten som registrerasin skall lagras i databasen och kompletteras upp med PostId.
PostId
Därför börjar vi med PostId. Det är en räknare som bara ökar och ökar, det viktigaste med den funktion är att det aldrig får bli samma nummer två gånger. För att enkelt se till att vi har en hantering för detta, skriver vi en subrutin som vi kan kalla på. Rutinen skall både kunna presentera ett nytt nummer samt spara det för att vi inte skall kunna återanvända det igen. Denna rutinen skall vi nu ta en närmare titt på.
Hantering av FileID (Modul1)
Här nedan har jag nu skrivit en funktion som kan kallas vart jag än befinner mig. Finns inte kurs1.ini, kommer den skapas. Finns den, läses det sist använda värdet in och ökas med 1. Därefter skrivs detta tillbaks till filen och nästa gång du kallar funktionen är den redo för att presentera ett nytt värde.
Obs! Givetvis skulle du även kunna skriva i registret, alternativt använda dig av en äkta hantering för ini filer, men vi väljer denna enkla metod för detta, för att lära mer filhantering, som så ofta förekommer i många sammanhang.
Public Function GetNewFileId() As Long
'// Vi börjar med att kontrollera om det finns någon fil
' som innehåller vår räknare. Gör det inte det, ser vi
' till att en skapas.
Dim FileNr As Long
Dim FileIdName As String
Dim Temp
' Gör i ordning katalog+filen i en sträng
' så vi slipper skriva dubbelt.
FileIdName = App.Path & "\kurs1.ini"
' Ge oss ett filnummer att använda
' när vi arbetar med filen
FileNr = FreeFile
' Finns filen redan?
If Len(Dir(FileIdName)) = 0 Then
' Det finns ingen fil här, då skapar vi den.
Open FileIdName For Output As #FileNr
Print #FileNr, "0 "
Close #FileNr
End If
' Nu öppnar vi filen, läser in aktuellt värde.
' Ökar det med 1, lagrar värdet i vår globala
' variabel som vi kallade dbKey och därefter
' skriver vi ner detta värde i filen, så vi
' vet vad som användes sist.
FileNr = FreeFile
Open FileIdName For Input As #FileNr
Line Input #FileNr, Temp
Close #FileNr
' Ökar på gamla värdet med 1
Temp = Temp + 1
' Skriver tillbaka det nya värdet
Open FileIdName For Output As #FileNr
Print #FileNr, Temp
Close #FileNr
' Lagrar vår variabel dbKey
' så den kan användas
dbKey = Temp
' Säger att 0 = ok
GetNewFileId = 0
Exit Function
GetNewFileIdError:
' Returnerar VB's felkod om något
' fel uppstår i funktionen
GetNewFileId = Err
End Function
Spara posten i databasen (Form2)
I och med att vi nu har denna rutinen klar, kan vi börja hanter själva skrivandet till databasen, där posten skall skrivas med registrerad information i textboxarna.
Private Sub cmdAdd_Click()
Dim Status As Integer
Dim AntalPoster As Long
'// Hämtar upp ett nytt FileId
Status = GetNewFileId()
' Om ett fel uppstod, så måste vi ta hand om detta.
' Presentera felet för användaren och avsluta.
If Status <> 0 Then
MsgBox "Ett fel uppstod när ledigt filnummer skulle hämtas." _
& vbLf & "Felmeddelandet var: " & Str(Status), vbCritical
Exit Sub
End If
' Nu har vi ett FileId som finns i dbKey och
' vi har även öppnat databaserna. Därför kan
' vi nu börja med att skriva posten.
' Sätt PostId som du har lagrat i dbKey
Person.Postid = dbKey
' Sätt resten av fälten
Person.Namn = Form2.txtNamn
Person.Gata = Form2.txtGata
Person.Postnr = Form2.txtPostnr
Person.Postadr = Form2.txtPostadr
' Nu måste vi ta reda på det fysiska record
' som vi kan använda och skriva i databasen.
' Det nummer vi söker är det sist använda
' record och öka det med 1.
AntalPoster = LOF(dbPerson) / Len(Person) + 1
' Skriver hela posten till databasen
Put #dbPerson, AntalPoster , Person
' Nu rensar vi alla textfälten för att
' användaren skall kunna skriva in
' ny information i fälten nästa gång.
For Each ctrl In Form2.Controls
If TypeOf ctrl Is TextBox Then
ctrl.Text = ""
End If
Next
' Meddela att posten är sparad och
' vad du nu kan göra, fortsätta eller
' avsluta registreringen.
MsgBox "Informationen har sparats. Skriv in ny information" & vbLf & _
"och tryck på spara, alternativt avbryt", vbInformation
End Sub
Summering:
Nu har vi samlat på oss allt vi behöver för att kunna skriva ner posten till databasen. Det är ett FileId nummer som kommer att hålla reda på personens alla artiklar, vi fick recordnummer när vi öppnade filen och slutligen så har användaren registrerat fälten som innehåller det data som skall skrivas till disk.
Testkör denna del av programmet:
Om vi nu tar och startar programmet, kommer vi att kunna utföra de tre första stegen i denna kursen. Nämligen 1. Skapa en databas, 2. Öppna databasen och 3. Skriva till databasen. För er som tar er tid att gå igenom allt ordentligt, har jag ett exempel som innehåller just dessa bitar som innehåller den kod som ni just läst fram till denna del i programmet. Hämta och kör delprogram 1. (5,3 kb)
0 Kommentarer