Institutionen för
Tillämpad fysik och Elektronik
Stefan Berglund
2017-07-15
Laboration:
Ulrika Åkerlund
[email protected]
IT-verktyg för ingenjörer
ActiveX
2017-07-15
Ulrika Åkerlund
Innehållsförteckning
1 Inledning _________________________________________ 2
2 Systembeskrivning __________________________________ 2
3 Implementation ____________________________________ 2
3.1
Allmänt _________________________________________________ 2
3.2
ListView_________________________________________________ 2
3.3
Databaskoppling __________________________________________ 3
3.4
SQL-satsen _______________________________________________ 3
4 Gränssnitt ________________________________________ 4
5 Lösningens begränsningar _____________________________ 4
6 Problem och reflektioner______________________________ 4
7 Referenser ________________________________________ 5
Bilaga:
Kod
IT-verktyg för ingenjörer
Namn på Projekt eller Laboration
1
2017-07-15
Inledning
Syftet med laborationen var att lära sig göra en ActiveX-kontroll för sökning i
databasen som skapades under första laborationen (Databasdesign). ActivXkontrollen skulle innehålla en lista med resultatet från sökningen.
2
Systembeskrivning
Systembeskrivningen för detta lilla projekt blir inte särskilt stort då det endast är
en sida som möter användaren. Det finns inga egentliga relationer av intresse. Allt
som sker kodmässigt sker under sökknappen. Där hämtas informationen in från de
övriga fälten. Inga extra moduler har lagts till.
3
Implementation
ActivX-kontrollen är gjord i Visual Basic 6.0. Den är endast testad i Microsft
Explorer och Windows.
3.1
Allmänt
Grundstegen vid skapandet av en ActiveX-kontroll i VB är följande
1. Öppna VB och välj New Project
2. Välj sedan ActiveX kontroll
3. Skriv in den kod och lägg till de knappar mm du vill ha och när allt
fungerar som du vill..
4. gå in under i menyn och välj Make projektnamn.ocx.
5. Starta programmet Package and Deployment Wizard som bör ligga i
katalogen Microsoft visual studio tools.
6. välj den .vbp-fil som du skapat tidigare och tryck sedan på Package
7. Följ anvisningarna i programmet å sen är det bara att ladda upp på nån
lämplig server.
3.2 ListView
För att få en lätthanterlig lista av sökresultaten har jag använt mig av en extra
komponent vid namnet ListView. För att hämta in den markerade jag i
Components-listan den post som hette Microsoft Windows Common Controls 6.0.
Jag drog sedan ut det objektet och placerade det där jag ville ha det. För att ändra
inställningarna för ListView tryckte jag på höger musknapp över objektet och
valde sedan properties. Där la jag i kolumnheaders till de namn på kolumnerna
jag ville ha.
2
IT-verktyg för ingenjörer
Namn på Projekt eller Laboration
2017-07-15
Skriva ut till ListView:
Dim itmX As ListItem
Set itmX = LstViewResultat.ListItems.Add(, , rs("fi_namn"))
itmX.SubItems(1) = latnamn
itmX.SubItems(2) = diet
itmX.SubItems(3) = omrade
itmX.SubItems(4) = sallskap
itmX.SubItems(5) = Grupp
3.3 Databaskoppling
För att lyckas kommunicera med databasen krävs att man i References lägger till
posten Microsoft ActiveX Data Objects 2.0 Library.
skapar och öppnar databasen:
Dim db_fisken As New ADODB.Connection
Dim rs As New ADODB.Recordset
db_fisken.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" +
txtLocation.Text
för att köra ett SQL-kommando:
db_fisken.Execute (strSQL)
3.4 SQL-satsen
För att sätta ihop den söksträngen som passade in på användarens val använde jag
flera if-satser efter varandra. Varje delsak man kunde söka på fick en egen if sats.
Om den inte var tom (då vill man få med alla) så lägs en bit till SQL-satsen och
samtidigt ettställs variablen flera. Denna variabel används för att veta om ett
AND ska läggas till i satsen före eller inte.
Dim flera As Integer
Dim strSQL As String
strSQL = "SELECT * From tbl_fiskar"
If txtLatnamn.Text > "" Then
If flera = 1 Then
strSQL2 = strSQL2 + " AND "
End If
strSQL = strSQL + " tbl_fiskar.fi_latnamn='" +
txtLatnamn.Text + "'"
flera = 1
End If
3
IT-verktyg för ingenjörer
Namn på Projekt eller Laboration
2017-07-15
If strSQL2 > "" Then
strSQL = strSQL + " WHERE" + strSQL2
End If
strSQL = strSQL + ";"
Anledningen till att SELECT delen och WHERE delen inte sitter ihop är att det
då blir fel om man vill visa allt i databasen.
4
Gränssnitt
5
Lösningens begränsningar
Vid sökning måste hela fiskens namn skrivas in i fritextfältet för att matching ska
ske. Detta skulle kunna lösas med ’*’. Dessutom verkar det som om hantering av
tömmning av listan inte existerar om det är EOF vid sökningen. Detta fixas
lämpligen genom att tömma listan innan sökning sker. Det skulle dessutom vara
trevlig att genom enkel tryckning på rubrik få sortering efter just det fältet.
6
Problem och reflektioner
Jag hade en del problem med att lägga ihop SQL-satsen i sökningen innan jag
kom till rätta med hur det där med snuttarna /fnuffarna var menade. Men när jag
väl insåg att
’
”
&
är det tecken som Acess vill ha runt en sträng
innebar slut på strängen i tex VB
används för att sätta ihop de olika strängarna (även + går bra här)
4
IT-verktyg för ingenjörer
Namn på Projekt eller Laboration
2017-07-15
så gick det mesta bra. Jag hade också lite problem med databaskopplingen när den
inte längre använder ODBC men lyckades till slut få ordning på även detta.
7
Referenser
Tillhandahållet material:
N., Holmberg, A., Eriksson. IT-Projekt.
Böcker:
P.R.M Oliver, N. Kantaris. Programming in Visual Basic for Windows.
Great Britain by Cox & Wyman ltd. 1996
5