Access-komentoja

eero
Site Admin
Viestit: 329
Liittynyt: 07 Marras 2007 20:17

Access-komentoja

Viesti Kirjoittaja eero »

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