Lite om felsökning
Förord
Hur många gånger har man inte slitit sitt hår över diverse mer eller mindre kryptiska felmeddelanden? Jag tänkte i den här artikeln ta upp lite olika fel som man kan stöta på och vad man bör tänka på när man designar sin databas och skriver sin kod.Innehåll
»»
»
»
Designa databasen
Vad bör man tänka på när man designar en databas? Det första man bör göra är att sätta sig med papper och penna och rita upp strukturen på databasen. Vilka fält som ska ingå och normalisera den så gott det går. När man sen kodar databasen har man strukturen klar för sig och kan lättare sätta rätt Datatyp till fältnamnet. Ett tips när man designar en databas är att ge dem ett prefix, se tabellen.Många anser att det här är onödigt, men jag ser en viss poäng i det, man slipper från de problem som reserverade ord innebär. Det finns en del ord som är reserverade i SQL och Access etc, t ex Date/Datum, Time/Tid, mer om det i en annan artikel.
Fältnamn | Datatyp | Kommentarer |
prg_ID | Räknare | Ger varje program ett unikt ID |
prg_namn | Text | Programmets namn |
När jag sparar den här tabellen så kallar jag den prg_Program, tanken är dels att jag slipper tänka på reserverade ord, men att jag även kan använda prg som Alias när jag ställer SQL frågor.
Jag får ett felmeddelande
Jag säger som min Office lärare sa, det finns en anledning till att felmeddelanden finns, läs dem, oftast står felet i klartext.(nåja, oftast)Här har jag medvetet gjort fel, vaddå undrar ni?
Så här ser SQL-taggen ut:
SQL = "SELECT * FROM prg_Program WHERE prg_ID='" & Session("prg_ID") & "'"
Som ni ser i tabellen så valde jag Datatyp som räknare och det är ett tal. Eftersom jag här ber datorn att hämta en text, så kommer jag att få ett felmeddelande. Den korrekta SQL satsen ska se ut så här:
SQL = "SELECT * FROM prg_Program WHERE prg_ID=" & Session("prg_ID")
SQL gör skillnad på tal, text, datum bland annat. Är Datatypen text så vill både Access och MS- SQL har ' runt det som ska hämtas. Är det ett tal så behövs inga ' runt. Access är lite knepig när det gäller datum, den vill ha # runt, så det skulle kunna se ut så här:
strSQL = "SELECT * FROM prg_Program WHERE prg_Date=#" & 2002-07-25 & "#"
MS-SQL vill ha ' runt datum, lite knepigt att hålla reda på, men man lär sig så småningom.
Namnge variabler
Jag tillhör de som blev lärda att använda sk "Ungersk Notation", det innebär att man sätter ett prefix före sin variabel för att tala om vilken datatyp det är. Här följer några varianter:Prefix | DataTyp |
C | Char |
s | Strängar |
n | Short |
i | Integer(heltal) |
De lärde tvistar om det är bra med Ungersk notation eller inte, men innan man har lärt sig att namnge sina variabler så kan det vara bra att visa vilken datatyp det är, det är även lättare för en annan programerare att ta över om denne enkelt kan se vilken datatyp en variabel är, även för dig själv så underlättar det, det är inte alltid som man kanske kommer ihåg vilken datatyp man skrev i databasen.
Kommentera kod
Att kommentera sin kod är bra, även om det tar lite kraft från datorn.Jag brukar skriva en kort förklaring på vad en deklaration eller procedur gör, när jag eller någon annan sen tittar på koden så kan man enkelt se vad en funktion gör, efter någon månad om man inte har rört sitt projekt kan det vara svårt att veta hur man tänke just då.
Jag hoppas med den här kursen som egentligen tar upp lite av varje, men inte allt, att du har fått lite idéer och tankar på hur du kan förenkla ditt kodande och även vad man bör tänka på.
0 Kommentarer