Changes weergeven --> Zie bericht

Status
Niet open voor verdere reacties.

Spelt

Gebruiker
Lid geworden
4 mrt 2010
Berichten
18
Beste forumgebruikers,

ik hoop dat iemand een probleem op kan lossen! Ik heb namelijk een database aangemaakt wat gegevens wegschrijft. In het formulier frmClientinformation kan ik via checkboxes een waarde veranderen. In het formulier tblHistory kan ik de veranderingen terug zien. Hierin staat per record de changes, en een knop voor de details te zien.

Door op deze knop te klikken verschijnt er een Msgbox. Hierin staat een veld(en) wat veranderd zijn. Dit werk allemaal prima. Maar er is een probleem waar ik niet uit kom.

De eerste paar keuzes zie ik netjes terug in history. Maar bij de laatste checkboxes klik ik bijv. een keuze in een veld. Vervolgens zie ik in History->Details-> Msgbox dat er volgens het programma drie velden zijn veranderd. Dit kan toch niet?

Wie zou kunnen weten waar het aan ligt? Ik ben de wanhoop nabij...

Bij voorbaat dank,

Nick S
 

Bijlagen

Nog afgezien van dat ik de constructie nodeloos ingewikkeld vind, ligt de fout ergens in dit stukje code:

Code:
    Do While (Ckval < Endval)
        [B]If (Ckval And Testval) Then[/B]
            Fldcount = Fldcount + 1
            FieldList = FieldList & FillString1(Ckval) & vbCrLf
        End If
        Ckval = Ckval + Ckval
    Loop
De variabelen Ckval en Testval worden met de If niet goed gecontroleerd. Als je met de Stapfunctie (<F9>) door de loop heenloopt, zie je dat hij de eerste waarden van Ckval helemaal niet evalueert, en vervolgens een hoop waarden wel. Met als resultaat dat er velden worden ingelezen die niet veranderd zijn.
Om de check werkend te maken, kun je beter in de tabel Historie kijken welke velden er staan. Want dat is uiteindelijk wat je terug wilt zien.
 
Ik ga proberen om de code werkend te maken, i'll let ya know:)

Alvast bedankt:D

Groetjes
 
Ik zal vanavond wel een voorbeeldje maken dat de tabel Historie gebruikt.
 
Ik heb in de module modGlobals het volgende veranderd:

Set up Global bitmaps for the History Table
' AllBits is used to test if any bits are on, and to
' reset a bit.
' Each field to be tracked must have a bit assigned to it.
' A Long will hold 31 fields/bits. The high order bit
' cannot be used because VBA doesn't have an unsigned
' integer type.
' Each field is assigned a power of two. This is its bit.

Public Const AllBits = &HFFFFFFFF
Public Const cvClientName = &H1 '2 to the zero
Public Const cvAccountBalance = &H2 '2 to the one
Public Const cvAccountCurrent = &H4 '2 to the second
Public Const cvoptAchterstijl = &H8 '2 to the third
Public Const cvoptDakrandinorde = &H10 '2 to the fourth
Public Const cvoptKlepachterzijde = &H12 '2 to the fifth
Public Const cvoptKopschot = &H14 '2 to the sixth
Public Const cvoptLaadvloer = &H16 '2 to the seventh
Public Const cvoptPlankenaanwezig = &H18 '2 to the eight
Public Const cvoptPoteninorde = &H20 '2 to the ninth
Public Const cvoptRongen = &H22 '2 to the tenth
Public Const cvoptSchoreninorde = &H24 '2 to the eleventh
Public Const cvoptSluitlin = &H26 '2 to the twelfth
Public Const cvoptZeilen = &H28 '2 to the thirteenth
Public Const cvoptZeilspanners = &H30 '2 to the fourteenth

Vanaf Rongen geeft de combobox het niet meer goed weer, ik heb verschillende dingen geprobeerd. Helaas, het mocht niet baten:(

Hoe zit die constructie in elkaar om de tblHistory te gebruiken?

Groet,

Nick
 
Wat is de achterliggende gedachte om een getal op te slaan in het veld [FieldsUpdated1]? Waarom sla je niet gewoon een string op met alle aangepaste velden, gescheiden door een vast scheidingsteken? Die string kun je met een Split functie dan heel simpel weer terugzetten in je messagebox.
Ik zou je huidige opzet ook niet zo één-twee-drie kunnen terugvertalen naar een goede oplossing, omdat je uiteindelijk toch de opgeslagen getalwaarde weer moet terugvertalen naar de succesievelijke waarden die bij de velden horen. En dat is best een klus....
Misschien moet je de controle overigens van hoogste naar laagste doen, i.p.v. van andersom. Je haalt dan met Mod bijvoorbeeld de waarden er uit, en controleert dan wat er aan restwaarde overblijft voor de overige velden. Is overigens een losse flodder... ;)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan