Category Archives: Programkod

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.

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

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