Dupliceren record geeft geen juiste waarden na koppeling

Status
Niet open voor verdere reacties.

bikerron

Gebruiker
Lid geworden
9 mei 2009
Berichten
229
Hallo,
Nadat ik een BE-omgeving heb ingericht (MySql) heb ik een probleem bij het kopiëren van een record.
Ik heb een knop op een formulier en daar zit onderstaande VBA-code achter.
Code:
Private Sub New_volgnummer_Click()


    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 2, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 5, , acMenuVer70

' Volgnummer met 1 verhogen
    Me.Volgnummer.Value = Me.Volgnummer + 1
   

On Error GoTo Err_New_volgnummer_Click

    
    DoCmd.GoToRecord , , acFirst
    DoCmd.GoToRecord , , acLast
       
    Exit Sub

Err_New_volgnummer_Click:
    MsgBox ("Volgnummer bestaat al, wijzig deze alsnog óf druk op de <Esc-toets> en ga vervolgens weer naar het oorspronkelijke record")
    'Err.Description
End Sub
Als ik zonder BE-werk, dus niet met gekoppelde tabellen, is het resultaat goed. D.w.z. na de kopieeractie wordt het zojuist toegevoegde record in het formulier getoond.
Maar in combinatie met MySql sta ik ook op het Laatste record maar de getoonde waarde in de formuliervelden zijn allemaal: #####.
In de tabel is het record goed gevuld.

Als ik vervolgens
Code:
Me.FormRequery
er tussen plak dan wordt het scherm ververst maar sta ik niet op het zojuist gedupliceerde record (Dat is natuurlijk al ergens "tussen gesorteerd")

Ik ben ook al aan het stoeien geweest met een DLOOKUP maar dan kom ik op het eerste record uit van een serie volgnummers. (Registratienummer + Volgnummer)
Je moet dan zelf doorstappen naar het volgend volgnummer bij een Registratienummer om uiteindelijk bij het laatste aangemaakt volgnummer uit te komen. Dat vind ik niet zo handig.

Ik ben dus eigenlijk op zoek naar een soort "ververs" opdracht zonder dat ik het nieuwe record kwijt raak. Of naar een mogelijkheid om direct naar het hoogste recordID te gaan (RecordId is een Auto_increment veld)

Bij voorbaat dank,
Ron
 
Even terugkoppelen.
Gebleken is dat MySql wat eigenaardig gedrag vertoond ingeval het gekoppeld is met Access. (Via de ODBC-koppeling)
Één van die eigenaardigheden is dat er in en tabel minimaal 1 veld van het type DateTime moet zijn en dat deze een "attribuut" moet hebben: on update CURRENT_TIMESTAMP

Nadat ik de tabellen voorzien had van dit attribuut ging de kopieeractie goed.
Meer is hier over te lezen:http://dev.mysql.com/doc/refman/5.1/en/connector-odbc-usagenotes-apptips.html
Met name hoofdstuk:
21.1.7.2.1. Using Connector/ODBC with Microsoft Applications

Dit was een oplossing voor mijn "probleem", maar er zijn nog meerdere eigenaardigheden nadat ik met een BE FE koppeling gestart ben.
In speciefieke vragen hierover komt dat weer terug in dit forum.

Ron
 
Ik vind je methodiek met de DoMenuItem regels erg onhandig, en zelf zou ik dat zo nooit doen; ik zou middels een RecordSet de tabel bijwerken/vullen. Je kunt verder met een Find opdracht in de recordset het laatste record wel weer opzoeken, lijkt mij.
 
Michel,
Ik heb gebruik gemaakt van de standaard geboden "knop" functies. Dit heeft dus voor de getoonde VB-code gezorgd.
Ik denk dat de gemiddelde gebruiker daar voldoende aan moet hebben en de echte "dieharts" kunnen er verder aan sleutelen.

Ron
 
Een 'gemiddelde gebruiker' zal geen database maken met een FE-BE op basis van een MySQL database :)
 
Nee, dat is ook wel weer waar maar ik ben dus langzaam gegroeid van Stand A-lone Access naar deze situatie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan