Lomakkeen avaus:
DoCmd.OpenForm "nimi", acNormal, "", "", , acNormal
tai
DoCmd.OpenForm FormName:="lomakkeen_nimi"
Lomakkeen sulkeminen:
DoCmd.Close acForm, "nimi"
Siirtyminen kontrolliin:
DoCmd.GoToControl "nimi"
tai
DoCmd.GoToControl "Forms!Lomakkeen_nimi!nimi"
Siirtyminen toiselle lomakkeelle:
Forms!lomakkeen_nimi.SetFocus
Alilomakkeen syntaksi:
Forms!Lomakkeen_nimi!Alilomakkeen_nimi.Form!nimi
Tietojen hakeminen uudelleen:
DoCmd.Requery "nimi"
'Kirjoita kahdesti jos ei toimi kunnolla.
Päivitys:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Suodatus:
DoCmd.OpenForm FormName:="lomakkeen_nimi"
DoCmd.ApplyFilter "", "[idhenkilo]=[Forms]![hakuhenkilolomake]![idhenkilo]"
'ensimmäinen on hakulomakkeen suodatettavan lomakkeen id ja toinen on hakulomakkeen id
DoCmd.Close acForm, Me.Name
Forms!lomakkeen_nimi.SetFocus
Suodatus esim. pudotusvalikosta:
DoCmd.ApplyFilter "", "[idhenkilo]=[Forms]![henkilolomake]![haku]"
'käytä muutettaessa
Suodatus lomakkeella:
With CodeContextObject
DoCmd.ApplyFilter "", "[nimi] like [forms]![hakuhenkilolomake]![etsi]+""*"""
If (.CurrentRecord = 0) Then
Beep
MsgBox "Yhtään nimeä ei ala näillä kirjaimilla tai nimi on väärin.", vbInformation, "Ei nimeä"
DoCmd.ShowAllRecords
End If
End With
'Tätä käytetään painonapin alla. Hakukenttään kirjoitetaan joko haettava sana tai joku määrä sanoista. Jos haetaan N:llä alkavat sana, niin kirjoitetaan pelkkä N ja klikataan HAE-painiketta.
Arvon antaminen toiseen taulukkoon:
DoCmd.OpenForm FormName:="lomakkeen2_nimi"
DoCmd.GoToRecord , , acNewRec
Forms!Lomakkeen2_nimi!nimi = Forms!Lomakkeen_nimi!nimi
DoCmd.Close acForm, "lomakkeen2_nimi"
Koodi laitetaan painonapin alle. Tätä varten täytyy tehdä "apulomake" lisäystä varten, jonka nimi on tässä tapauksessa "lomakkeen2_nimi".
Oikee esimerkki yllä olevasta:
If (Eval("[Forms]![ohjaajaLomake]![etunimi] Is Null")) Then
Beep
MsgBox "Nimi puuttuu. Anna ohjaajan nimi.", vbExclamation, "Nimi puuttuu"
Else
DoCmd.OpenForm "LisaaOhjaajaLomake", acNormal, "", "", , acNormal
DoCmd.GoToRecord , , acNewRec
Forms!lisaaohjaajalomake!Etunimi = Forms!ohjaajalomake!Etunimi
Forms!lisaaohjaajalomake!Sukunimi = Forms!ohjaajalomake!Sukunimi
Forms!lisaaohjaajalomake!Henkilotunnus = Forms!ohjaajalomake!Henkilotunnus
Forms!lisaaohjaajalomake!Osoite = Forms!ohjaajalomake!Osoite
Forms!lisaaohjaajalomake!Postinumero = Forms!ohjaajalomake!Postinumero
Forms!lisaaohjaajalomake!Puhelin = Forms!ohjaajalomake!Puhelin
Forms!lisaaohjaajalomake!Sahkoposti = Forms!ohjaajalomake!Sahkopostiosoite
DoCmd.Close acForm, "LisaaOhjaajaLomake"
DoCmd.Close acForm, "OhjaajaLomake"
'DoCmd.OpenForm "OhjaajaLomake", acNormal, "", "", , acNormal
End If
Poista tietue jatkolomakkeelta:
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Raportin avaus:
DoCmd.OpenReport ReportName:="raportin_nimi", acNormal
Siirry seuraavaan:
DoCmd.GoToRecord , , acNext
Siirry edelliseen:
DoCmd.GoToRecord , , acPrevious
Tietueen tallennus:
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Lomakkeen avaus tietyin ehdoin:
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "HenkilonLisatiedotLomake"
stLinkCriteria = "[IDHenkilo]=" & Me![IDHenkilo]
DoCmd.OpenForm stDocName, , , stLinkCriteria
Etsi päivämäärä jolloin on aikalla kun tiedetään alkupäivä ja loppupäivä:
Tässä on erillinen lomake johon kirjoitetaan alkupäivä. Loppupäivä tulee automaattisesti samaksi kuin alkupäivä koodilla:
Forms!valitsepaivalomake!Loppupaiva = Forms!valitsepaivalomake!Alkupaiva
Kyselyyn laitetaan loppupäivän kohdalle ehto:
=[forms]![valitsepaivalomake]![alkupaiva] Or >[forms]![valitsepaivalomake]![alkupaiva]
Ja alkupäivän kohdalle ehto:
=[forms]![valitsepaivalomake]![loppupaiva] Or <[forms]![valitsepaivalomake]![loppupaiva]
Kalenterin arvon lisääminen:
'ei löydy ominaisuuksista
Private Sub Kalenteri_Click()
Forms!valitsepaivalomake!Alkupaiva.Value = Forms!valitsepaivalomake!kalenteri.Value
Forms!valitsepaivalomake!Loppupaiva.Value = Forms!valitsepaivalomake!kalenteri.Value
End Sub
Kalenterin komentoja
Private Sub AlkuNappi_Click()
Me!kalenteri1.Visible = Me!AlkuNappi
End Sub
'avaa kalenterin
Private Sub kalenteri1_AfterUpdate()
Me!Alkupaivays.SetFocus
Me!kalenteri1.Visible = False
Me!AlkuNappi = False
If (Day(Me!kalenteri1) <> 1) Then
Beep
MsgBox "Valittu päivä ei ole kuukauden ensimmäinen päivä. Valitse kalenterista 1. päivä.", vbExclamation, "HÖH"
Exit Sub
End If
Me!Kuukausi = DatePart("m", Me!kalenteri1, 2, 2)
Me!Vuosi = DatePart("yyyy", Me!kalenteri1)
Me!Alkupaivays = kalenteri1
End Sub
'Tarkastaa onko kalenterin eka päivä 1
Private Sub kalenteri2_AfterUpdate()
Me!Loppupaivays.SetFocus
Me!kalenteri2.Visible = False
Me!LoppuNappi = False
If (DateAdd("m", 1, Forms!tyovuorolistaLomake!Alkupaivays) <> Forms!tyovuorolistaLomake!kalenteri2 + 1) Then
Beep
MsgBox "Valittu päivä ei ole kuukauden viimeinen päivä tai kuukausi on väärä. Valitse kalenterista oikean kuukauden viimeinen päivä.", vbExclamation, "HÖH"
Exit Sub
End If
If (Forms!tyovuorolistaLomake!kalenteri2 - Forms!tyovuorolistaLomake!Alkupaivays > 32) Then
Beep
MsgBox "Olet valinnut aloitus- tai lopetuskuukaudeksi väärän kuun. Korjaa kuukausi.", vbExclamation, "Väärä kuukausi"
Exit Sub
End If
Me!Loppupaivays = kalenteri2
Me.Refresh
If IsNull(Me!Paivat.Form!Paivat) Then
Dim arvo, loppu As Date
arvo = [Forms]![tyovuorolistaLomake]![Alkupaivays]
DoCmd.OpenForm "Paivat", acFormDS, "", "", acAdd, acNormal
Do While arvo <= [Forms]![tyovuorolistaLomake]![Loppupaivays]
DoCmd.GoToRecord acForm, "Paivat", acNewRec
Forms!Paivat!Id = Forms!tyovuorolistaLomake!Id
Forms!Paivat!Paivat = arvo
arvo = arvo + 1
Loop
DoCmd.Close acForm, "Paivat"
End If
Me.Refresh
Me!Paivat.Form.Refresh
End Sub
Muuttaa päiväyksin viikonpäiväksi:
=Format([paivat];"pppp")
Kentän arvon tarkastus
If IsNull(Loppupaiva) Or IsNull(Alkupaiva) Then
MsgBox "Alku ja/tai loppupäivä puuttuu. Valitse listalta päivät", vbExclamation, "Arvo puuttuu"
DoCmd.GoToControl "loppupaiva"
ElseIf Alkupaiva > Loppupaiva Then
MsgBox "Loppupäivä on pienempi kuin alkupäivä. Valitse listalta loppupäiväjoka on yhtäsuuri tai suurempi kuin alkupäivä", vbExclamation, "Loppupäivä on liian pieni"
DoCmd.GoToControl "loppupaiva"
Else
DoCmd.OpenQuery "VaikuttavuusRaportinAikavaliKysely", acNormal, acEdit
DoCmd.Close acQuery, "VaikuttavuusRaportinAikavaliKysely"
Dim stDocName As String
stDocName = "VaikuttavuusRaportti"
DoCmd.OpenReport stDocName, acPreview
DoCmd.Close acForm, "vaikuttavuusraporttilomake"
End If