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 :)
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 SubKiitoksia. Pitänee testata kun kotiin pääsee. Kiitos vielä kerran. Ainakin näyttää ihan järkeenkäypältä ratkaisulta ongelmaani :)
Danke ;D
Aihe on jo aika vanha, joten et voi enää vastata siihen.