Access record bewerking via vba probleem

Status
Niet open voor verdere reacties.

Allard1979

Gebruiker
Lid geworden
21 dec 2012
Berichten
8
Beste allemaal,

Allereerst excuses voor mijn lange afwezigheid, ik heb het knetterdruk gehad dus ik heb geen tijd gehad om hier een blik op te werpen. In de tussentijd een hoop gebeurd waaronder het halen van mijn diploma "access vba advanced". Hoe mooi dit diploma ook is en hoe fijn de kennis ook is.....Ik zit met een probleem.

Ik heb een tabel met gegevens op deze tabel moet ik wat berekeningen uitvoeren. De situatie is als volgt
1 tabel met basisdata (waaronder de gegevens om mee te rekenen)
2 tabel met uitkomsten

In de eerste tabel staan wisselende gegevens voor dezelfde accountnummers. Deze heb ik oplopend gesorteerd. Middels een vba module ga ik berekeningen uitvoeren en wegschrijven. Echter wanneer het wegschrijf begint hij op een willekeurige positie en niet bij het eerste record. M.a.w. wat heeft sorteren dan nog voor nut. Onderstaand de code
Code:
FuncOpenVar 'Openen standaardvariabelen

Dim Dblacnummer As Double 
Dim DTingangsdatum As Date 
Dim DTeinddatum As Date
Dim DTrekendatum As Date 
Dim DblPtOud As Double 
Dim DblPtNieuw As Double 
Dim DblGewLt As Double 
Dim DblGpptOud As Double 
Dim DblGpptNieuw As Double
Dim IntAant As Integer 
Dim IntI As Integer

'tblGppt_percentage leeghalen
DoCmd.RunSQL "delete * From tblGppt_percentage"

'Recordsets
Dim RstIn As Recordset
Dim RstOut As Recordset
Set RstIn = db.OpenRecordset("tbl_basis_data", dbOpenDynaset) 'Input
Set RstOut = db.OpenRecordset("tblGppt_percentage", dbOpenDynaset) 'Output


With RstIn
Debug.Print .Fields("acnummer")
Do While Not RstIn.EOF 'doorgaan tot de laatste regel
DblPolisnummer = .Fields("acnummer")
.Edit
.Fields("Check") = "Check"
.Update
Debug.Print Dblacnummer
IntI = IntI + 1
.MoveNext
Loop
End With
Debug.Print "Aantal = " & IntI
FuncSluitVar
Set RstIn = Nothing
Set RstOut = Nothing
End Sub

Nu heb ik movefirst geprobeerd maar geen soelaas. Nu is bovenstaande nog een check of alles nagelopen wordt. de daadwerkelijke berekening vindt nog niet plaats. Het vreemde is, dat de tabel waaruit de gegevens komen (RstIn) ook opnieuw gesorteerd wordt. Met rstOut wordt nog niets gedaan.

Wat een l%lverhaal, maar ik hoop dat het duidelijk is.

Groet en bedankt
Allard
 
Deze heb ik oplopend gesorteerd.
Ze hadden je bij de cursus natuurlijk best kunnen vertellen dat sorteren in Access niks voorstelt, en in ieder geval niks doet met de manier waarop de gegevens in de tabel zijn opgeslagen. Sorteren is niet veel meer dan het anders weergeven van records. Dat is namelijk de essentie van een Relationele database. Wat jij doet:
Code:
Set RstIn = db.OpenRecordset("tbl_basis_data", dbOpenDynaset) 'Input
Set RstOut = db.OpenRecordset("tblGppt_percentage", dbOpenDynaset) 'Output
Is dan ook niks meer en niks minder dan de records openen in hun oorspronkelijke volgorde. Weg sortering....
Waarom open je geen query met een sortering?
Code:
strSQL = "SELECT * FROM tbl_basis_data ORDER BY Ingangsdatum"
Set RstIn = DB.OpenRecordset(strSQL)
 
Ze hadden je bij de cursus natuurlijk best kunnen vertellen dat sorteren in Access niks voorstelt

Knap ruk dus die cursus :) Geintje hoor, de cursus was erg waardevol. Maar inderdaad wat jij zegt werd niet genoemd, maar je kan ook niet alles oplepelen. Jouw voorstel werkt en dank daarvoor!!
 
En dat zonder ook maar één cursus gevolgd te hebben :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan