data ingevoerd in formulier niet opgeslagen in tabel

Status
Niet open voor verdere reacties.

VB noob

Gebruiker
Lid geworden
11 feb 2009
Berichten
78
Ik heb een probleempje.
In een formulier worden de waardes uit verschillende velden niet opgeslagen in de tabel.
Dit is het geval bij alle waardes die geselecteerd worden in combo-boxen EN checkboxen.
Velden waarbij de waardes ingetyped worden geven geen probleem.
De control-sources staan goed, verwijzen naar de juiste column in de tabel, maar als ik het formulier afsluit en vervolgens check in de tabel, dan zijn in het record wel alle getypte waardes opgeslagen maar dus niet alle geselecteerde waardes.

Dit is slechts bij 1 formulier het geval. Ook bij andere formulieren die naar dezelfde tabel (en zelfde record) verwijzen worden de waardes wel goed opgeslagen.

Geen idee waar ik het moet zoeken. Tabel, formulier? Formulier is gebaseerd op 1 tabel.
 
Ik heb een beetje verder zitten zoeken.
Er zit op het formulier een checkbox die een volgend formulier opent en een aantal waardes doorstuurt. Vul ik deze checkbox niet in, dan worden alle waardes gewoon goed opgeslagen.

Met het doorsturen van deze waardes heb ik nooit problemen gehad, maar nu geeft het wel problemen, alhoewel het de eerste keer toen het vandaag gebruikt werd wel leek te werken.

De code van de checkbox is als volgt:
Code:
Private Sub LionSighting_AfterUpdate()

If Me.LionSighting.Value = True Then

Dim stDocName As String
Dim stLinkCriteria As String

stLinkCriteria = Me.SightingID & ";" & Me.LionSighting & ";" & Me.Time & ";" & Me.[Time end] & ";" & Me.WPT & ";" & Me.Lat & ";" & Me.Lon & ";" & Me.SightingDate

stDocName = "frmLionSightings"
DoCmd.OpenForm stDocName, , , , acFormEdit, , stLinkCriteria
'DoCmd.GoToRecord acDataForm, stDocName, acLast

End If

End Sub

De code vervolgens in het formulier 'frmLionSightings' is:
Code:
Private Sub Form_Load()

Dim Args As Variant
Dim strControl As String

If Not IsNull(Me.OpenArgs) Then
    '-- Form is being opened from a form passing values
    Args = Split(Me.OpenArgs, ";")
    Me.SightingID = Args(0) ' 1st value
    Me.LionSighting = Args(1)
    Me.Time = Args(2)
    Me.[Time end] = Args(3)
    Me.WPT = Args(4)
    Me.Lat = Args(5)
    Me.Lon = Args(6)
    Me.SightingDate = Args(7)
         End If
         
End Sub

Ik krijg de volgende foutmelding:
Cannot enter value into blank field on 'one' side of outer join
Als ik kies voor 'Debug' dan geeft de VB editor aan dat de fout zit bij:
Me.Time = Args(2) en verder.

Ik heb alle veldeigenschappen gechecked en die komen overeen, ook de namen van de velden zijn goed. Misschien niet handig om dezelfde naam voor het veld 'tijd' in beide formulieren te hebben (Time) maar dat zou niet de oorzaak moeten zijn lijkt me.
 
Time is een gereserveerd woord in Access; ik vermoed dat hij het veld dus niet kan vinden. Probeer veldnamen als Date, Time en Count te vermijden, omdat dat dus gereserveerde woorden zijn. Hernoem je veld dus eerst, en kijk dan of je nog steeds een probleem hebt.
 
Heb even geprobeerd met het hernoemen naar Time_start maar dat lijkt ook niet te werken. Moet nu even weg, maar kan er over een uurtje mee verder.
 
Ik heb er nog eens naar gekeken en de velden waar waardes naar doorgestuurd werden zijn 'bound' terwijl dat eigenlijk niet nodig is. Het is om de gebruiker een idee te geven waar hij mee bezig is. Dus ik heb de meeste velden unbound gemaakt, behalve 'SightingID' die verwijst naar tblAnimalSightings.SightingID welke een 1:many relatie heeft met tblSightings.SightingID (tblAnimalSightings.SightingID is de many).
Het formulier LionSightings is gebaseerd op een query die gebaseerd is op tblSightings en tblAnimalSightings.

Alles laat hij nu netjes zien, de data uit het formulier frmSightings worden nu ook wel opgeslagen maar als ik het formulier LionSightings afsluit krijg ik de volgende foutmelding:
The Microsoft Jet Database engine cannot find a record in the table 'tblSightings' with key matching field(s) 'SightingID'.
:(

Maar hij heeft zojuist die waarde vanuit het formulier frmSightings, gebaseerd op tblSightings, naar het formulier LionSightings gestuurd en nu kan hij het niet meer vinden?
 
Ik heb ondertussen geen flauw idee mee wat je aan het doen bent..... Kun je er niet een voorbeeldje van maken?
 
Bij deze.
Heb alles behalve waar het om gaat eruit gehaald en nog steeds dezelfde foutmelding.
 

Bijlagen

Laatst bewerkt:
Ik snap nog steeds niet wat je bedoeling is.... Je opent een tweede formulier als je een checkbox aanklikt, maar vervolgens doe je niet zoveel met de waarden die in dat tweede formulier worden ingevuld. Dat lijkt mij toch niet de bedoeling te zijn...
Overigens kan ik het probleem niet reproduceren; het formulier opent steeds goed.
 
Het formulier opent wel goed maar bij het afsluiten geeft hij een probleem.
Heb het inmiddels wel opgelost, het 2e formulier was deels gebaseerd op dezelfde tabel als het eerste formulier, heb het nu helemaal gebaseerd op een andere tabel en nu werkt eea goed.
 
Ik moet zeggen dat ik bij het openen van het tweede rapport nog een extra regel had toegevoegd voordat het rapport wordt geopend:

If Me.Dirty Then Me.Dirty = False

Daarmee los je het probleem ook op, omdat je het record eerst bewaart voordat je het tweede formulier opent. Probeer extra tabellen te voorkomen, als ze verder nergens voor nodig zijn, en alleen maar dienen om een niet goed lopende procedure te omzeilen...
 
Thanks! Goede tip! Ik heb erover nagedacht maar ik hou denk ik toch mijn extra tabel omdat ik daardoor wel een stuk minder kolommen heb.
Maar die tip kan ik goed bij andere formulieren gebruiken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan