Invoeren pas na opslaan

Status
Niet open voor verdere reacties.

mindgame112

Gebruiker
Lid geworden
5 okt 2009
Berichten
61
Beste mensen hier,

Ik heb een vraag die ik echt heb geprobeerd op te zoeken op dit forum onder andere maar ik snap niet waarom ik hier geen oplossing voor kan vinden want het lijkt me een simpel probleem

Ik ben bezig met een register voor gevaarlijke stoffen op mijn stage.

Nu heb ik een formulier gemaakt waar mensen een nieuwe stof kunnen toevoegen. Daarin staan allemaal tekstvelden die direct gekoppeld zijn aan de tabel. Maar mijn probleem is dat zodra mensen dus bijvoorbeeld een naam van een stof invullen die naam ook direct wordt weggeschreven in de tabel. Ik wil dat alle wijzigingen die aan de nieuwe record worden gedaan pas opgeslagen worden als er op toevoegen wordt gedrukt.

Dus is er een manier om dat te doen? Ik denk dat die directe link met de tabel dan weg moet maar ik heb wel gelezen over toevoegquerys is dat dan een optie?

Mijn VBA is namelijk wel aardig maar mijn SQL is dramatisch.

Alvast bedankt!
Met vr. gr.
Sjoerd
 
Dit kan op 2 manieren:
1.
Alle velden verplicht maken; op die manier wordt het record pas toegevoegd als alle velden zijn ingevuld.
2.
Formulier met allemaal onafhankelijke velden. Knop 'Toevoegen' activeert Query die deze onafhankelijke velden als record toevoegt.

Lukt je dat niet, voeg even een voorbeeld toe.

Gerard
 
Dit kan op 2 manieren:
1.
Alle velden verplicht maken; op die manier wordt het record pas toegevoegd als alle velden zijn ingevuld.
2.
Formulier met allemaal onafhankelijke velden. Knop 'Toevoegen' activeert Query die deze onafhankelijke velden als record toevoegt.

Lukt je dat niet, voeg even een voorbeeld toe.

Gerard

Ja dat laatste met een query zou inderdaad een oplossing zijn

Maar hoe pak ik dat aan met de SQL van die query? Want hoe verwijs ik naar een tekstveld in een formulier?

Bedankt voor je reactie iig!

Met vr. gr.

Sjoerd Redeker
 
Iemand een idee want ik kan t echt niet vinden ?

Even voor de duidelijkheid ik zoek dus iets in de richting van:

SELECT [Tekstveld1]
FROM Forms![frmNaam]

Maar dat kan niet aangezien sql alleen op tabellen werkt dus ik vraag me dan af hoe ik onafhankelijke tekstvelden kan invoegen in een tabel als 1 record ?

Groetjes,

Sjoerd
 
Laatst bewerkt:
Iemand een idee want ik kan t echt niet vinden ?

Even voor de duidelijkheid ik zoek dus iets in de richting van:

SELECT [Tekstveld1]
FROM Forms![frmNaam]

Maar dat kan niet aangezien sql alleen op tabellen werkt dus ik vraag me dan af hoe ik onafhankelijke tekstvelden kan invoegen in een tabel als 1 record ?

Groetjes,

Sjoerd

Echt niemand ? sorry ik heb voor de rest weinig te doen :p dus ik hoop dat er iemand ff tijd heeft om mee te denken :D
 
Welke velden bevat zo'n record? Zie bijlage: 4 tekstvelden als basistabel(voorbeeld)genomen.
 
Voorbeeldje gevonden op interner, dus niet van mij. Dit is een voorbeeld waarbij niet via een query wordt gewerkt, maar rechtstreeks naar de tabel.
 

Bijlagen

Als je een beetje op het forum had gezocht, had je dit voorbeeld gevonden:

Kijk dan met name naar het Unbound form...
 

Bijlagen

Bedankt voor alle reacties !!

Ik ga ze allemaal even doorkijken had helaas even geen tijd..

Groetjes !
 
Ja sorry ik had misschien beter moeten zoeken dan..

Mijn oplossing heb ik als volgt gemaakt :

Code:
Private Sub opslaan_Click()

'Bevestiging vragen van het opslaan
If MsgBox("Stof opslaan in het register?", vbOKCancel + vbQuestion, "Opslaan?") = vbOK Then
GoTo Check
Else
GoTo End_Sub
End If

'Kijken of de stofnaam is ingevuld anders bericht geven
Check:
If IsNull(Me.txtStof) Then
MsgBox "Geen stofnaam ingevuld"
Exit Sub
Else
GoTo opslaan
End If

opslaan:

'Recordset aanmaken
Dim rst As Recordset

'Recordset toewijzen
Set rst = CurrentDb.OpenRecordset("Stoffenlijst_volledig")
rst.AddNew
'Alles invoegen op de goede plek
rst!Stof = txtStof
rst!Synoniemen = txtSynoniemen
rst!Casnr = txtCas
rst!Leverancier = txtLeverancier
rst!Firma = txtFirma
rst!Artikelnummer = txtArtikelnummer
rst!EGIndexNr = txtEgIndex
rst!EGNummer = txtEgnummer
rst!Molecuulformule = txtMolecuulformule
rst!Beschrijving = txtBeschrijving
rst!Voorkomen = txtVoorkomen
rst!kleur = txtKleur
rst!Geur = txtGeur
rst!Vlamp = txtVlamp
rst!PGS15 = txtPGS15
rst!ADR = txtADR
rst!Ondergrens = txtOndergrens
rst!Symbool1 = txtSymbool1
rst!Symbool2 = txtSymbool2
rst!Rzinnen = txtRzinnen
rst!Szinnen = txtSzinnen
rst!Grenswaarden = txtGrenswaarden
rst!Handschoenen = txtHandschoenen
rst!Oogbescherming = txtOogbescherming
rst!Stofmasker = txtStofmasker
rst!Ruimte = txtRuimte
rst!Locatie = txtLocatie
rst!Plank = txtPlank
rst!Voorraadmax = txtVoorraadmax
rst!Voorraadnu = txtVoorraadnu
rst!Bepaling = txtBepaling
rst!Opmerkingen = txtOpmerkingen
rst!Houdbaarheid = txtHoudbaarheid
rst!MSDS = txtMSDS
rst!CMR = chkCMR
stofId = rst!Id
rst.Update
rst.Close
Set rst = Nothing

'Als het een CMR stof betreft extra formulier openen
If Me.chkCMR = True Then
MsgBox "Extra informatie verplicht bij CMR-stoffen", vbOKOnly + vbInformation, "Info"
DoCmd.OpenForm "CMRinvoeg"
Else
End If
GoTo End_Sub

End_Sub:
End Sub
 
Ziet er prima uit! :thumb:
Kleine tip: als je, zoals in jouw geval, heel veel velden uit je formulier opvraagt in de recordset, dan kun je met Me. eenvoudig, en met voorkoming van typfouten, je formuliervelden opvragen. Je hoeft dan na Me.txtsy alleen maar op <Enter> te drukken om het correcte veld te selecteren. Scheelt tijd, en verhoogt de nauwkeurigheid!
 
Ziet er prima uit! :thumb:
Kleine tip: als je, zoals in jouw geval, heel veel velden uit je formulier opvraagt in de recordset, dan kun je met Me. eenvoudig, en met voorkoming van typfouten, je formuliervelden opvragen. Je hoeft dan na Me.txtsy alleen maar op <Enter> te drukken om het correcte veld te selecteren. Scheelt tijd, en verhoogt de nauwkeurigheid!

Is inderdaad een goede tip ik gebruik het normaal ook maar was het helemaal vergeten!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan