tabel aanvullen na bijwerken formulier

Status
Niet open voor verdere reacties.

glenda13

Gebruiker
Lid geworden
19 jan 2007
Berichten
13
Hallo. Ik heb een vrij complexe database in beheer die niet door mij is gebouwd. Er staat onder andere een formulier in met de klantgegevens. Ik heb nu een tabel toegevoegd waarin elke keer als er iets gewijzigd is aan die klant (en dan het liefst alleen als er iets is gewijzigd aan een bepaald veld - opmerking) er een regel aan de tabel wordt toegevoegd: Klantnummer, datum + tijd van nu, gebruiker die op dat moment de wijziging doet, status, etc.

Ik heb getracht een macro te maken die de opdracht geeft een procedure uit te voeren en een module gemaakt die de opdracht geeft de tabel te vullen. De procedure die ik heb geschreven gaat als volgt:

Public Sub handeling_insert(CONTRACTREKENING As String, DATUM As Date, Behandelaar As Variant _
, Status As Variant)

Dim SQL_query As String

SQL_query = " INSERT INTO tbl_handeling (CONTRACTREKENING, DATUM, BEHANDELAAR, STATUS) " & _
" SELECT '" & [Cr#nr#] & "', '" & Now() & "', '" & Environ("username") & "', '" & Status & "';"

DoCmd.RunSQL (SQL_query)

End Sub

Lijkt in mijn ogen de juiste manier, maar toch doet hij het niet!

Is er een andere/betere manier, of heb ik dit niet goed gedaan? Wie kan me helpen? Alvast bedankt!!
 
Hallo,

of heb ik dit niet goed gedaan

je hebt dit inderdaad niet goed gedaan ;)
Wat je nodig hebt is deze constructie

INSERT INTO
VALUES

Zie ook Access Help

Groet,

Tardis
 
Bedankt voor je supersnelle reactie!!!

Helaas, hij doet het niet. Hij geeft ook niet aan waar het fout ging. Wat overigens vreemd is. Ik heb een module gemaaklt mdl_algemeen waarin deze procedure staat. Als ik in die macro zet procedure uitvoeren kun je onderaan invullen welke procedure. Daar klik ik op de gemaakte functies en kan ik wel kiezen voor mdl_algemeen maar als ik daar op dubbelklik vindt hij geen naam van een functie. Dat moet toch gewoon handeling_insert zijn?
 
Sterker nog: Ik heb als test in de macro gezet dat hij de procedure moet openen, ipv uitvoeren. En dan komt de functie keurig tevoorschijn.. dus de naam moet goed zijn.
Die :mad: tabel wordt gewoon maar niet gevuld!!! grrr
 
Ik heb een module gemaaklt mdl_algemeen waarin deze procedure staat.

Je hebt de functie toch wel een andere naam gegeven dan de module zelf?
INSERT INTO...VALUES zou op zich moeten werken.
Als dat niet zo is, is je code waarschijnlijk niet helemaal jofel.
Is zo moeilijk te zeggen, zonder code ;)

Tardis
 
Zou je hem alsjeblieft willen nakijken voor me? Als je het kan fixen stuur ik je een taart :D

sql_query = " INSERT INTO tbl_handeling (CONTRACTREKENING, DATUM, BEHANDELAAR, STATUS) " & _
" VALUES '" & Cr#nr# & "', '" & Now() & "', '" & Environ("username") & "', '" & Status & "';"

Hiervan staat Cr#nr# en Status in het formulier. Zou ik misschien naar het formulier moeten verwijzen of er [] omheen moeten zetten?
 
waarom zou je een functie aanroepen via een macro? Je kan toch net zo goed de functie zelf aanroepen?

Macro's gebruik ik alleen voor menuacties, autokeys en autoexec, verder zijn ze volstrekt nutteloos en alleen maar verwarrend.
 
Is er een andere/betere manier, of heb ik dit niet goed gedaan? Wie kan me helpen? Alvast bedankt!!

Dus jouw oplossing zou zijn....?

Ik heb het namelijk geprobeerd. Via het formulier eigenschappen een functie gestart, maar dan weet ik niet hoe ik moet beginnen. De naam van de functie wordt dan

Private Sub Notities_AfterUpdate()

End Sub

Wat zet ik hier tussen, zodat die tabel wordt gevuld??
 
Hallo Glenda,

je moet in ieder geval de naam van deze kolom / dit tekstveld wijzigen

Cr#nr#

Hekjes hebben een speciale betekenis, en moet je niet gebruiken in objectnamen.
Pas de naam aan en probeer het nog eens via je INSERT statement.

Groet,

Tardis
 
Private Sub Notities_AfterUpdate()
Run tbl_handeling_insert
End Sub

________________________________________________________________________-

Private Sub tbl_handeling_insert(CONTRACTREKENING As String, DATUM As Date, Behandelaar As Variant _
, Status As Variant)

Dim sql_query As String

sql_query = " INSERT INTO tbl_handeling (CONTRACTREKENING, DATUM, BEHANDELAAR, STATUS) " & _
" VALUES '" & Contract & "', '" & Now() & "', '" & Environ("username") & "', '" & Status & "';"

DoCmd.RunSQL (sql_query)

End Sub

Wat is hier fout??? Iemand?? Ik heb veel hulp al gehad, maar de oplossing zit er nog niet tussen.

Een compleet andere oplossing dan deze query is ook geweldig hoor!

Is het uberhaupt wel mogelijk om in een tabel automatisch gegevens toe te laten voegen als er in een veld in een formulier iets gewijzigd is??
 
JOEPIE!!!! Het is gelukt!!! Ik was twee haakjes vergeten: Na VALUES moet een ( en aan het einde nog een ) en dat was het hele eieren eten!

haha!

Allemaal bedankt voor de hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan