Author Archives: Micke Falk

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

Sök namn som stavas olika

Hitta namn  oavsett hur det stavas

Både för- och efternamn kan stavas på många olika sätt. Det gör det svårt eller tidskrävande ibland när man söker efter en person i ett kundregister och andra program.

Inte konstigt om det blir problem att hitta
> Tomas Svensson
när han i databasen är sparad som
> Svenson R Thomas.

Jag har en sökfunktion som gör det lättare att hitta olika stavningar och även klarar av att hitta rätt när namnen är omkastade som i exemplet ovan.

Sökfunktionen började utvecklas när jag ansvarade och utvecklade medlemsregistret i Ebba dansklubb. Det hände alltför ofta att jag inte hittade en person på grund av olika stavningar. Det löste jag då genom att koda om namnet enligt en algoritm och spara det kodade namnet i programmet. Samma kodning användes sedan vid sökning på namn och då hittades dom flesta olika varianter på namnet.

Nu utvecklas sökfunktionen ytterligare med bland annat instant search som du kanske sett när du sökt på Google, det att man får se resultatet direkt när man skriver in sin söktext. Tanken är nu även att ge en ljudsignal till användaren när det bara finns ett sökresultat kvar, så man vet att man inte behöver skriva in resterande söktext. Då blir det en ännu snabbare sökning.

Behovet finns hos fler!

Efter att nu hjälpt flera företag och organisationer har jag sett att samma behov finns hos många fler.  Nu undrar jag om det finns intresse hos andra att dra nytta av det arbete jag gjort och har därför startat en hemsida för detta som jag döpt till Soundex på svenska.

Det kallas Soundex

Det finns en funktion som kallas Soundex men den fungerar bäst på engelska personnamn och är väldigt förenklad då den bara gör om alla konsonanter till sifferkoder och tar bort alla vokaler för att hitta liknande namn. Så träffsäkerheten är inte så bra.

Då jag inte vet hur stort behovet är och inte har kontakt med personerna som skulle behöva denna sökfunktion så avvaktar jag med att lägga ner tid på detta tills jag ser att det finns ett intresse.

SPRID DETTA om du vill få tillgång till en svensk Soundex-funktion! www.soundex.se

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.

Konvertera till Access 2013

Konvertera program till Access 2013

Att uppgradera till Access 2013 från Access 2003 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 2013 om programmet är utvecklat enbart med Access standardkomponenter. Vid ev kopplingar till andra program kan det behövas mer tid.

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

Kundregister

Typ: Demoprogram
Accessversion: Microsoft Access 2003 (kan köras i Access 2007 och 2010)
Filnamn: KundregisterGrund.mde
Ladda ner: Kontakta mig om du vill ha en kopia av programmet
Villkor: Endast till företag
Bild av kundregister

Kundregister

 

Ett kundregister med grundläggande funktioner. Har register med företagskunder och kontaktpersoner. Lämpligt för företag som nu har sitt kundregister i Excel. Mycket lättjobbat och enkelt att förstå.

Läs mer om kundregister på Kundregister.com

Kontrollera inmatat pris

Typ: Exempelprogram
Version: Microsoft Access 2003 (kan köras i Access 2007 och 2010)
Filnamn: AccessExempelPris.mdb
Ladda ner: AccessExempelPris.zip

 

Demoprogram som kontrollerar om ett inmatat pris är mindre än 10 eller större än 10000. Om det är det får man ett kontrollfråga där man kan välj att acceptera priset ändå.

Programkoden ser ut så här:

Option Compare Database
Option Explicit

Function mOk(fraga$) As Boolean
    mOk = MsgBox(fraga, vbOKCancel + vbDefaultButton2, "Ok/Cancel i Access") = vbOK
End Function

Function mYes(fraga$) As Boolean
    mYes = MsgBox(fraga, vbYesNo + vbDefaultButton2, "Ok/Cancel i Access") = vbYes
End Function

Private Sub Pris_BeforeUpdate(Cancel As Integer)
    If Pris < 10 Then
        Cancel = Not mYes("Priset är mindre än 10, Spara ändå?")
    ElseIf Pris > 10000 Then
        Cancel = Not mYes("Priset är större än 10000, Spara ändå?")
    End If
End Sub


 

AccessExempelPris.zip

Läs mer om Accessprogram

Färger i RGB-kub

Typ: Demoprogram
Version: Microsoft Access 2003 (kan köras i Access 2007 och 2010)
Filnamn: Farger1.0.mde
Ladda ner: Farger1.0.zip

 

Ett program som används för att hitta färger i en RGB (Röd-Grön-Blå) kub. Kuben består av 16*16*16 färger och man kan enkelt ”surfa” runt i kuben och se intilliggande färger på ett enkelt sätt.

Html färger enligt RGB-skalan

 

Farger1.0.zip

Läs mer om Accessprogram

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