Category Archives: Microsoft Access

Microsoft Access 2016

Funderar ni på att uppgradera till Microsoft Access 2016? Vänta med det!

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 2016
  • Andra program fungerar inte med nya versionen av Access
  • Stora problem att återgå till tidigare stabila versioner
  • Erfarenhet och support för Access 2016 är begränsad

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

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

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 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.

Intresseanmälan:
Om ni är intresserade att få information den dag utvecklingen återupptas får ni gärna kontakta mig gärna med information om vilket företag ni representerar.

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 kan du ladda ner Access runtime och 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 Professional-paketet 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 register och olika enklare program som sedan kan köras med runtime-versionen. Läs mer om det lättanvända registerprogrammet.

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())

' 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