hoe moet ik deze code schrijven indien het om cijfers gaat access 2003

Status
Niet open voor verdere reacties.

Twomax

Gebruiker
Lid geworden
17 jan 2015
Berichten
113
En om de twee technieken nog even uit te leggen, hier wat meer info.
De eerste techniek is simpel: je voegt de nieuwe waarde toe aan een tabel. Dat gaat zo:

Code:
Private Sub kzl_merk_NotInList(NewData As String, Response As Integer)
If NewData = "" Then Exit Sub
Msg = "'" & NewData & "' staat niet in de lijst." & vbCr & vbCr
Msg = Msg & "Wil je deze toevoegen?"
i = MsgBox(Msg, vbQuestion + vbYesNo, "Onbekende naam . . ")
If i = vbYes Then
strSQL = "INSERT INTO tbl_merk ([Merk]) VALUES ('" & NewData & "');"
CurrentDb.Execute strSQL, dbFailOnError
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
Je gebruikt dus een Toevoegquery om het nieuwe record aan te maken. Met Response stel je de keuzelijst opnieuw op scherp.

Bij een formulieraanroep moet er iets meer gebeuren. Dat ziet er zo uit:

Code:
Private Sub Achternaam_NotInList(NewData As String, Response As Integer)
Dim Msg As String
If NewData = "" Then Exit Sub
Msg = "'" & NewData & "' Deze Achternaam bestaat niet." & vbCrLf & vbCrLf
Msg = Msg & "Wil je " & NewData & " toevoegen?"
If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
DoCmd.OpenForm "frm_medewerkersAannemers", , , , acAdd, acDialog, NewData
End If
Me.Achternaam.Requery
End Sub
Je doet weer hetzelfde, checken of de waarde bestaat en een Msgbox openen met de vraag of het record moet worden toegevoegd. Alleen open je nu een formulier (in acDialog modus om te voorkomen dat de gebruiker ondertussen wat anders gaat doen). Dat krijgt onderstaande code, waarin de OpenArgs variabele wordt uitgelezen en de getypte waarde in het juiste veld wordt gezet. Tenslotte had de gebruiker de naam al ingevoerd.

Op het formulier zie je dan deze gebeurtenis die de variabele uitleest:
Code:
Private Sub Form_Load()
If Me.OpenArgs <> "" Then
Me.Achternaam = Me.OpenArgs
End If
End Sub
 
En nu de vraag? Doorgaans gebruik je een keuzelijst met invoervak om te zoeken op tekstvelden, vandaar dat de SQL is gebaseerd op het toevoegen van een tekstwaarde. Als de keuzelijst zoekt op getallen, dan kun je een getal toevoegen. Dan haal je gewoon de quootjes weg. De SQL wordt dan dus:
Code:
        strSQL = "INSERT INTO tbl_Tabel ([Getal]) VALUES (" & NewData & ");"
Dus er verandert niet zoveel. Bij het formulier verandert er zelfs niks :).
 
welke quootjes??? :P Is het nog gelukt om tijd te maken voor Db :D

Code:
Private Sub Achternaam_NotInList(NewData As String, Response As Integer)
Dim Msg As String
If NewData = "" Then Exit Sub
Msg = "'" & NewData & "' Deze Achternaam bestaat niet." & vbCrLf & vbCrLf
Msg = Msg & "Wil je " & NewData & " toevoegen?"
If MsgBox(Msg, vbQuestion + vbYesNo) = vbYes Then
DoCmd.OpenForm "frm_medewerkersAannemers", , , , acAdd, acDialog, NewData
End If
Me.Achternaam.Requery
End Sub

deze komt in het formulier waar ik gegevens wil invoegen

Code:
Private Sub Form_Load()
If Me.OpenArgs <> "" Then
Me.Achternaam = Me.OpenArgs
End If
End Sub

dit komt in het formulier dat ik oproep

maar waar zet ik die code van jou dan? onder het veld wat ik wil aanvullen?
 
Laatst bewerkt:
Ik ben veuls te popiejopie aan het worden, en dan is tijd een groot goed :cool:.
Maar waar gaat dit draadje nu over? Je begint met een vraag in het onderwerp: "hoe moet ik deze code schrijven indien het om cijfers gaat access 2003". Maar daar kom je vervolgens in je hele bericht niet meer op terug. Vandaar dat ik voeg: 'Welke vraag?' En dan antwoord jij met: 'welke quootjes???'. Het is niet mijn gewoonte om voor drieën de whiskey open te trekken, maar de aandrang wordt nu wel érg groot :)
 
de vraag is waar ergens moet ik dan de code zetten die je schreef.... strSQL = "INSERT INTO tbl_Tabel ([Getal]) VALUES (" & NewData & ");"

En ja je bent popiejopie op access gebied :P


Kreeg zoals omschreven in dat deel waar men een formulier opend om toe te voegen een fout melding bij terugkeren in eerste formulier
Me.Achternaam.Requery in visual basic
 
Laatst bewerkt:
Die foutmelding is wel raar, want een requery moet je altijd uit kunnen voeren op een keuzelijst. Dat zou dan betekenen dat er een foutieve waarde in de rijbron zit. En dat kan dan alleen gebeurd zijn bij het toevoegen van het nieuwe record. Welke foutmelding krijg je?
 
fout 2118 tijdens uitvoering: De actie queryopnieuwuitvoeren kan pas worden uitgevoerd nadat u het huidige veld hebt opgeslagen ...actie foutopsporing >>>>Me.zonenummer.Requery wordt dan geel in M visual basic

Keuzelijst met invoervlak wordt gebruikt
 
Laatst bewerkt:
De melding is wel duidelijk lijkt mij. Blijkbaar doe je ook nog wat anders waardoor Access vindt dat je het record eerst op moet slaan. Zet deze regel eens voor de requery:
Code:
If Me.Dirty=True Then Me.Dirty=False
 
Op de een of andere manier blijft na het aanroepen van het formulier waar ik de gegevens toevoeg bij afsluiten de vraag terug komen of ik het wil toevoegen en dan hangt de DB zich
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan