Waarde van inputbox automatisch aan record toevoegen

  • Onderwerp starter Onderwerp starter Kozzy
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Kozzy

Gebruiker
Lid geworden
11 mrt 2008
Berichten
17
Hallo,

Ik heb een formulier gemaakt met een inputbox (Myinput) en de waarde hiervan moet aan de lege velden in kolom Voyage ID van het subformulier qtest1 dmv een button. Tot nu toe is het mij wel gelukt om met de volgende VBA code 1 record per keer te updaten.

Code:
Private Sub Knop8_Click()

If Me.Myinput.Value Then
Forms![Ftest1main]![qtest1]![Voyage ID] = Myinput
End If

End Sub

Wanneer ik de volgende loop probeer te maken, krijg ik steeds de melding Deze eigenschap of methode wordt niet ondersteund door dit object (Fout 438)

Het gaat om code

Code:
Private Sub Knop8_Click()

Do Until [qtest1]![Voyage ID].EOF

If Me.Myinput.Value Then
Forms![Ftest1main]![qtest1]![Voyage ID] = Myinput
End If

[Voyage ID].movenext

Loop

End Sub


Ik weet inmiddels dat ik variabelen moet declareren maar ik heb nu verschillende mogelijkheden geprobeerd maar tot dusver zonder succes.

Zou iemand mij aub op weg kunnen helpen?
 
Laatst bewerkt door een moderator:
Wat wil je precies doen? Als ik het snap, dan heb je een formulier met een subformulier. Doorgaans heb je op het subformulier records staan die zijn gekoppeld aan het hoofdformulier op basis van een sleutelveld in je hoofdformulier, en een verwijzingsveld in je subformulier. Dus wat wil je eigenlijk bijwerken? Overigens gaat je code nooit werken, want EOF gebruik je op een Recordset, niet op een subformulier. En je hebt geen recordset gedeclareerd/geopend. Dus dat zul je eerst moeten doen. Maar als je een aantal records wilt bijwerken, kun je net zo goed een updatequery gebruiken en die aanroepen. Dan wel weer op basis van (neem ik aan) het koppelveld. Maar eerst maar eens wat meer uitleg!
 
Je vertelde dat het niet mogelijk is om EOF op een formulier te gebruiken maar alleen op een record set. Ik ben dus gelijk gaan zoeken naar een andere oplossing. De bedoeling is als volgt: Ik ben een database aan het maken voor schepen die binnenkomen waar ik lading op heb. De informatie over de schepen staan al in de db. De containers welke binnen gaan komen op een bepaald schip worden vanuit excel in de db geïmporteerd. Ze zijn alleen nog niet aan een bepaald schip gekoppeld. Nu probeer ik een knop te maken die de uitkomst van een query automatisch in de kolom [Voyage ID} in lege cellen zet zodat de containers welke net zijn toegevoegd ook op een schip komen. Met de code van gisteren is het mij wel gelukt om het steeds per regel toe te voegen. De code werd namelijk niet toegepast op het formulier maar op een query waarvan ik een formulier heb gemaakt.

Door jouw informatie ben ik verder gaan zoeken en heb gezien dat ik eerst de db moet declareren en vervolgens de tabel. Ik heb ook het veld gedeclareerd dat moet worden ingevuld. Ik heb daar de volgende code voor gemaakt.



Private Sub cmdMyinput_Click()
Dim db As DAO.Database
Dim rec As DAO.Recordset
Dim test As Variant


Set db = CurrentDb()
Set rec = db.OpenRecordset("test1")

test = rec.Fields(1).Value

Do Until rec.EOF

If test Is nul Then
test = Me.Myinput.Value
ElseIf test Is Not Null Then

End If

rec.MoveNext

Loop

End Sub

Als ik nu op de knop druk krijg ik de melding dat er een object vereist is in de onderstreepte regel. Dit terwijl er tijdens de debugging wel een waarde wordt gegeven voor test als voor me.myinput.value. Ben ik iets vergeten?
 
Als dit je letterlijke code is, kan het wel kloppen want er ontbreekt een letter: het moet namelijk Null zijn. Maar op Null-waarden controleren kan wat gemakkelijker op deze manier:

Code:
Do Until rec.EOF
    If Nz(test, 0) = 0 Then
        test = Me.Myinput.Value
    End If
    rec.MoveNext
Loop

En kun je de volgende keer je code opmaken met de Code tag? (knop #) Dat leest wat makkelijker...
 
Tuurlijk! Geen probleem. Ik heb je code getypt en op de knop gedrukt maar hij zet de uitkomst van de input box niet in de tabel.
 
Ik heb ook eerlijk gezegd nog geen idee wat je aan het doen bent; heb eigenlijk alleen je code verbeterd omdat er een fout in zat. Dus wat is eigenlijk de bedoeling? MyInput zie ik namelijk niet als een Inputbox; waar komt die vandaan?
 
Hi Octafish,

Ik heb het probleem met een bijwerkquery opgelost. Je had al aangegeven dat ik het met een query kon oplossen maar ik was moeilijk aan het denken. Toch bedankt voor je hulp ondanks dat ik best vaag was.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan