Access programmering

Introduktion till programmering i Microsoft Access

Med programmering kan man skapa smarta och avancerade program i Microsoft Access. Programmeringsspråket i Access kallas VBA och står för Visual Basic for Applications.

VBA finns i flera program i Officepaketet, bland annat i Access, Excel och Outlook och med programmering kan man automatisera flera av dom vanliga arbetsmomenten i dessa program och dessutom utföra många andra åtgärder mer automatiskt.

Programkod kan köras 

  • direkt – i något som kallas kodfönstret i Access
  • när ett program startar
  • när formulär öppnas eller stängs
  • när ett värde i en fält ändras
  • när man klickar på en knapp
  • och på många många andra sätt

Några korta funktioner i VBA

Detta program skriver ut texten Hello World! i direktfönstret.

Sub hello()
Debug.Print "Hello World!"
End Sub

Detta program öppnar en dialogruta där man matar in ett namn, sedan kommer ett meddelande som säger t.ex. “Hej Micke”

Sub hej()
    Dim strName As String
    strName = InputBox("Vad heter du?")
    MsgBox "Hej " & strName
End Sub

Detta program skriver siffrorna 1 till 10 i direktfönstret.

Sub tio()
    Dim i As Integer
    For i = 1 To 10
        Debug.Print i
    Next
End Sub

Registerprogram

Vill du komma igång snabbt med Microsoft Access kan ni snart ladda ner mitt registerprogram. Med det kan ni snabbt och enkelt skapa egna program.

UPPDATERAT:
Programmet får egen hemsida www.registerprogram.se

Det är nu lätt att skapa ett accessprogram
* Välj vad registret ska heta
* Lägg till olika fält som kundnamn, adress, telefon, e-post etc.
* Spara och börja direkt mata in era uppgifter

Det har nog aldrig varit enklare att komma igång med Access.

registerprogram-enkelt

Ett program som ovan skapas på ungefär 10 minuter.


Uppdatering 2020-02-25:
En ny version planeras släppas i september/oktober 2020. Skicka intresseanmälan till info@accesskonsult.se om du vill få information när programmet släpps.

Uppdatering 2016-12-25:
Intresset för programmet har varit stort, delvis p.g.a. att programmet Avanti (som sålts i ca 30000 exemplar) från P-Data slutat fungera med nya Windows versioner, samt många som söker på bland annat kundregister och andra som vill ha andra specialutvecklade program.

Ändå så väljer jag att pausa programutvecklingen av registerprogrammet för att fokusera på befintliga och nya kunder. Registerprogrammet används nu mest för att ta fram prototyper i nya kundprojekt.

VBA-konsult

Jag utvecklar även program i Microsoft Excel med VBA. Excel kan automatiseras med hjälp av samma programmeringsspråk (VBA) som används i Access.

Access och Excel kan programmeras så att dom kan styra varandra och utbyta information. Med MS Access kan även exceldokument skapas och t.ex skickas iväg som epost automatiskt eller med några få klick.

Vill du effektivisera hanteringen av Excel, Word, Outlook så kan jag utveckla program för detta i VBA (Visual Basic for Application) i Excel och Access. Då kan programmen göra så att manuell hantering av data automatiseras och på så vis bespara er en massa tid.

Samarbete med Excelkonsult

Jag har även inlett samarbete med erfarna Excelkonsulter. Så behöver ni hjälp med att göra era Exceldokument smartare och mer automatiserade så hör av dig.

Skicka e-post med Access

Accessprogram för nyhetsbrev
Nyhetsbrev i Access, skickar e-post snabbt och enkelt med olika meddelanden.

Det jag vill visa med dessa program är:
* Hur företagare spara tid och effektivisera processer i företagen
* Användarvänliga gränssnitt
* Vad som kan göra i Ms Access

Utveckling kan göra så att insamling, hantering och uppföljning av e-post i Microsoft Access blir både snabbare och bättre.

Kontakta mig om ni vill kunna skicka e-post direkt från access eller era andra program. Med eller utan bifogade dokument.

Microsoft Access 2019

Funderar ni på att uppgradera till Microsoft Access 2019? Vänta med det om det går!

Mitt råd är alltid att vänta med uppgradering tills alla barnsjukdomar är åtgärdade eller vänta minst ett år från det att en ny version av Access släpps.

Orsaken till detta råd är främst att ni ska slippa alla problem det innebär med en uppgradering:

Olika problem som kan uppstå:

  • Ni måste skriva om era program så att dom passar till Access 2019
  • Andra program fungerar inte med nya versionen av Access
  • Stora problem att återgå till tidigare stabila versioner
  • Erfarenhet och support från vår sida för Access 2019 är begränsad

Istället för Access 2019 rekommenderar jag Microsoft Access 2016 som jag kört sedan år 2016. den är stabil även om gränssnittet blivit sämre på några punkter jämfört med Access 2013.

Kör Microsoft Access gratis

Det går att köra accessprogram helt gratis genom att ladda ner det som kallas Microsoft Access Runtime.

MS Access Runtime är jämförbart med fullversionen av Access med den skillnaden att det inte går att skapa och ändra i formulär, rapporter och VBA-kod. Så om du har ett färdigutvecklat program gjort i Access eller om du vill skapa en accessdatabas med hjälp av tabeller och accessfrågor så kan du ladda ner:
Access 2013 runtime,
Access 2016 runtime eller
Access 2019 runtime (Microsoft 365 Access runtime)
beroende på vilken version av Microsoft Access ni har. Därefter kan ni helt enkelt dubbelklicka på programmet så startar Access med det aktuella programmet.

Det räcker alltså att köpa ett accessprogram så kan du köra det utan att köpa Office-paket där Access ingår. Utvecklar ni ett eget accessprogram på företaget så räcker det med att dom som skapar och ändrar programdesignen har tillgång till fullversionen av MS Access.

Registerprogram

Jag har utvecklat ett program där ni enkelt kan skapa egna accessdatabaser och olika enklare program som sedan kan köras med runtime-versionen. Läs mer om hur du kan skapa egna accessprogram med registerprogrammet.

Konvertera till Access 2016

Konvertera program till Access 2016

Att uppgradera till Access 2016 från Access 2003, 2007, 2010 och 2013 går relativt snabbt, det tar normal bara någon timme då det bara är några mindre justeringar som behöver göras samt lite vba-kod som behöver ändras. Vid riktigt enkla fall tar det bara 30 minuter.

Access 2010 eller Access 2007

Eftersom Access 2007, Access 2010 och Access 2013 använder samma filformat så kan programmen användas fritt mellan versionerna så när du uppgraderar till en av versionerna så görs det samtidigt till dom andra accessversionerna. Körbara accde-filer som är gjord i 2013 kan dock inte köras i Access 2007 och 2010.

Uppgradera från Access 2000, Access 97, Access 95 och Access 2.0

Om ni har gamla program utvecklade i Access 2.0, Access 95, Access 97 behövs en mer omfattande konvertering av programkoden. Det tar därför lite längre tid att konvertera från dessa. Så några timmar extra behövs vanligtvis.

Vi hjälper er

Kontakta oss så hjälper vi till. Det tar normalt max en timme att uppgradera från Access 2003 till 2016 om programmet är utvecklat enbart med Access standardkomponenter. Vid ev kopplingar till andra program kan det behövas mer tid.

Länka tabeller i Access

När man utvecklar ett dataprogram i Access så är det bra att dela på själva programfilen (frontend) och databasen där data lagras (backend). Då kan man skicka ut nya versioner av programmet utan att data försvinner.

Problemet

Problemet som uppstår när man delar med sig av programmet till andra är att sökvägen till datafilen oftast inte är densamma på andras datorer. Om man till exempel utvecklat programmet på sin dator kan mappen där programmet och databas lagras ha namnet C:\Users\Micke\Documents\Kundregister\

När man sedan skickar program och datafil till någon annan så är sökvägen inte densamma. Tabellerna pekar då till en mapp som inte finns på deras dator och programmet kan inte köras.

Lösningen

Lösningen på detta är att programmet vid start länkar om alla tabeller till den mapp och databas som ska användas. Detta är oftast samma mapp som:
*  programmet ligger i
*  mappen ”Mina dokument”
*  eller en fast sökväg till en server

Exempel på dessa mappar kan vara:
*  C:\Program Files\Kundregister\
*  C:\Users\Per Nilsson\Documents\Kundregister\
*  Z:\Gemensam\datafiler\Kundregister\

För att länka om tabellerna behöver man i Access ta reda på vad t.ex. sökvägen till programmappen eller mappen ’Mina Dokument’ är. Hur man får tag i sökvägarna till programmappen och Mina Dokument har jag beskrivit i inlägget VBA-kod för olika sökvägar.

Därefter länkar man om tabellerna genom att uppdatera egenskapen Connect för tabeller som som finns i datafilen/databasen/backend. Ett funktion för detta i VBA kan se ut så här:

Function kopplaTabell(dbas$, tbl$)
    Dim db As Database, td As TableDef
    On Error Resume Next
    Set db = CurrentDb
    Set td = db.TableDefs(tbl)
    ' Om tabell redan finns tar vi först bort den
    If Err = 0 Then db.TableDefs.Delete (tbl)
    Set td = db.CreateTableDef(tbl)
    td.SourceTableName = tbl
    td.Connect = ";DATABASE=" & dbas
    db.TableDefs.Append td
    RefreshDatabaseWindow
End Function

Sedan gör vi en funktion som tar fram sökväg med filnamn till databasen och anropar den tidigare funktionen en gång för varje tabell som ska kopplas:

Function kopplaDB()
    ' Hitta sökvägen till programmapp och databas
    dbas = sProgramPath()
    dbas = dbas & "\Kundregister\datafilen.mdb"
    ' Koppla tabeller
    kopplaTabell dbas, "Kunder"
    kopplaTabell dbas, "Faktura"
    kopplaTabell dbas, "Fakturarader"
End Function

Support för Access 2003 upphör

Microsoft har beslutat att ej längre ge support till Office 2003 och Windows XP. Supporten upphörde 8 april 2014 *. Det innebär såklart att även supporten  för Access 2003 upphör. Inga fler uppdateringar så eventuella säkerhetsluckor kanske inte längre täpps till. Microsoft kommer alltså inte längre aktivt jobba med att få Access att fungerar i kommande versioner av Windows.
* Källa: https://www.microsoft.com/en-us/WindowsForBusiness/end-of-xp-support

Det är många företag som har program som är utvecklade i Access 2003 och äldre versioner av Access. Det märks här på Accesskonsult. Under 2014 och 2015 har många företag gjort förfrågningar och vill ha hjälp med att konvertera till Access 2013 eller Access 2010. Från 2016 använder majoriteten av företag Microsoft Access 2016. När företagen försöker att konvertera själva stöter man på problem med att programmen inte fungerar när man går över till senare versioner av Microsoft Access.

Vi hjälper er

Kontakta oss så hjälper vi till. Det tar normalt max en timme om programmet är utvecklat enbart med Access standardkomponenter. Om Accessprogrammet har eventuella kopplingar till andra program eller främmande komponenter kan det behövas lite mer tid att göra om programmet så att det går att köra i Access 2007, 2010 och 2013.

Sharepoint och Access

Har du hört talas om Sharepoint?

Om inte så är det dax nu.  Med Sharepoint från Microsoft så kan du mycket enkelt dela dokument på ert företag och samarbeta på ett enklare sätt. Det går till och med att lägga upp accessdatabaser i Sharpoint så att dom blir tillgängliga på webben (mer om det längre ner). Stora företags som Toyota använder Sharpoint för att dela hundratusentals dokument inom företaget och sina kunder. Om du har dokument som du vill dela med dina kollegor eller andra samarbetspartner råder jag dig att titta på Sharepoint. Grundutförandet Sharepoint Foundation är gratis att använda, sedan finns t.ex. Sharepoint Server som kostar lite.

Med Sharepoint kan man enkelt titta på olika Officedokument utan att ha Office installerat, dvs du kan titta på dom i en läsplatta eller från vilken dator som helst när du är ute och reser. Samt dela med dig av dina dokument till kunder och samarbetspartner.

Introduktion till Sharepoint

Nedan finns 70 miniuter med en jättebra introduktion till Sharepoint gjord av TrainSignal. Ta dig tid att titta på den om du vill få ordning på ert företags dokumentation och förbättra samarbetet på företaget. En kortare introduktion finns på office.microsoft.com/sv-se/sharepoint/

 

Sharepoint och Microsoft Access

Det går att lägga upp webblösningar från Access i Sharepoint så att accessprogram kan nås av alla. Det är bara att öppna en accessdatabas och sedan välja att skapa en webbapp på Sharepoint. Därefter bjuder du in dom användare du vill ska ha tillgång till databasen. Allt sker i webbläsaren så ingen behöver ha Access installerat.

Formatera datum med ’rätt’ formatsträng

När datumsträngar ska användas i accessprogram är det många gånger viktigt att rätt formatsträng användas. Speciellt om programmet ska användas i olika länder. Då kan man inte använda ”svenska” formatering: Format(dat, "yyyy-mm-dd")
Istället kan man använda nedanstående funktion för att ta reda på vilken formatsträng som ska användas, anropet ser då ut så här: Format(dat, datumFmt())

OBS! Med hjälp av denna funktion kommer datum automatiskt få samma datumformat som datorn använder för datum. Om programmet används på en dator med finska inställningar kommer datumen visas med finska formatet 31.11.2019 istället för 2019-11-31

' Ruturnerar en formatsträng
' som tex kan användas till funktionen Format()
' Exempel på svar:
' 1) "yyyy-mm-dd" om svenskt  datumformat används
' 2) "d.m.yyyy"   om finskt   datumformat används
' 3) "dd-mm-yyyy" om spanskt  datumformat används
' 4) "m/d/yyyy"   om USAs     datumformat används
' 5) "dd/mm/yyyy" om Engelskt datumformat används

Function datumFmt()
    Dim Dat$, ch$, fmt$
    Dat = CStr(DateSerial(2012, 1, 9))
    If InStr(Dat, "-") Then ch = "-": Dat = Replace(Dat, "-", "-")
    If InStr(Dat, ".") Then ch = ".": Dat = Replace(Dat, ".", "-")
    If InStr(Dat, "/") Then ch = "/": Dat = Replace(Dat, "/", "-")
    Select Case Dat
        Case "2012-01-09": fmt = "yyyy-mm-dd"   ' Sverige,Polen
        Case "2012-09-01": fmt = "yyyy-dd-mm"   '
        Case "2012-1-9":   fmt = "yyyy-m-d"   '
        Case "2012-9-1":   fmt = "yyyy-d-m"   '
        Case "09-01-2012": fmt = "dd-mm-yyyy"   ' Spanien
        Case "01-09-2012": fmt = "mm-dd-yyyy"   ' Österrike
        Case "9-1-2012":   fmt = "d-m-yyyy"      ' Finland
        Case "1-9-2012":   fmt = "m-d-yyyy"      ' Usa
        Case Else: MsgBox "Okänt datumformat.": Stop
    End Select
    datumFmt = Replace(fmt, "-", ch)
End Function

Skapa stigande numrering med ny numrering för varje grupp

Hej !

Söker med ljus och lykta efter en lösning på mitt bekymmer men inte hittat något.

Jag behöver skapa en numrering av posterna i en fråga (skulle även kunna vara en tabell). Det vore inga problem om det bara skulle vara en enkel stigande numrering, det löses med en räknare.

Mitt önskemål är att numreringen ska börja om för varje nytt värde i ett av fälten.

T ex:
Kundgrupp – KundNum:
X — A — 1
X — B — 2
X — C — 3
Y — D1
Y — E2
ZF1
ZG2
ZH3

Så i fältet ”Num” vill jag få in en funktion som skapar en ny numrering för varje förändring i ”Kundgrupp”

Finns det någon SQL kod som kan skapa en sådan alternativt någon annan funktion?

Mvh // Håkan

VBA-kod för olika sökvägar

Ibland vill man ha veta sökvägarna till bl.a Mina dokumnet (My Documents) och till programmappen. Sökvägarna skiljer sig ju mellan olika användare och olika operativsystem. Här är lite kod för det.

Accesskod till Mina dokument:

Function sMyDocumentsPath()
    Const MY_DOCUMENTS = &H5&
    Dim objShell
    Dim objFolder
    Dim objFolderItem
    Set objShell = CreateObject(”Shell.Application”)
    Set objFolder = objShell.Namespace(MY_DOCUMENTS)
    Set objFolderItem = objFolder.Self
    'My Documents path
    sMyDocumentsPath = objFolderItem.path
End Function

Accesskod till programmappen:

Function sProgramPath()
    Const PROGRAM_FILES = &H26&
    Dim objShell
    Dim objFolder
    Dim objFolderItem
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace(PROGRAM_FILES)
    Set objFolderItem = objFolder.Self
    sProgramPath = objFolderItem.path
End Function