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 Sub
Kiitoksia. 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.