Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: ACCESS: tietokantaohjelmointia. Liekö makroista tai VBA:sta apua ongelmaani?

glottis [18.09.2004 13:55:05]

#

Tuli tässä mieleen kysymys, että miten esim. Access tietokannassa voisi toteuttaa VBA:lla tai vaikkapa makroilla tällaisen "tehtävän":

On yksi taulu (Taulu1), jossa on vaikkapa 3 riviä (Numerotunnus, nimitunnus, tehtävä)... Tauluun on syötetty jo vaikkapa 5 tietuetta noihin em. riviin. Eli siellä on jo 5 numerotunnusta, nimitunnusta ja tehtävää. Numerotunnus-kenttä on vieläpä perusavain...

Eli jos välistä poistaa vahingossa/tarkoituksella numeron 4 niin tietokannan pitäisi osata siirtää numero 5 nelosen paikalle ja vieläpä mahdollisesti muuttaa numero 5 tuosta numerotunnus-kentästä numero 4:ksi.

Olen jo kaikkeni yrittänyt. Loppujen lopuksi sama homma pitäisi tehdä VB6:lla, muttta se on toisen ajan murhe... kyseessä ei ole koulutehtävä tms vaan oma pikku projekti ja tuollaista lähdin tuumimaan :)

eakem [19.09.2004 22:29:36]

#

Loogisesti tuo etenee näin:
1. Otat talteen sen tietueen numerotunnuksen, jota olet poistamassa.
2. Poistat tietueen
3. Suoritat skriptin, joka päivittää kaikkien niiden tietueiden numerotunnuksen yhtä pienemmäksi, jotka ovat suurempia kuin kohdassa 1 talteen ottamasi numerotunnus.

Toteutus voisi olla esimerkiksi:
1. Tee accesissa lomake, jolla käsittelet tietueita.
2. Lisää lomakkeen rakennenäkymässä command button, jolle annetaan tehtäväksi tietueen poisto.
3. Lisää muuttujan talteenotto ja update lauseke syntyneeseen skriptiin. Tässä siitä malli (nuo joiden lopussa kommentti "tama", muut syntyvät napin luonnissa automaattisesti:

Private Sub Poista_Click()
On Error GoTo Err_Poista_Click

    Dim sqlstr As String 'tama
    Dim delvalue As Integer 'tama
    delvalue = Me.RecordsetClone.Fields(0) 'tama

    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

    sqlstr = "update taulu1 set numerotunnus=numerotunnus-1 where numerotunnus>" & delvalue 'tama
    DoCmd.RunSQL (sqlstr) 'tama

Exit_Poista_Click:
    Exit Sub

Err_Poista_Click:
    MsgBox Err.Description
    Resume Exit_Poista_Click

End Sub

glottis [21.09.2004 11:07:15]

#

Kiitoksia. Pitänee testata kun kotiin pääsee. Kiitos vielä kerran. Ainakin näyttää ihan järkeenkäypältä ratkaisulta ongelmaani :)

Danke ;D

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta