VBA access - DoCmd.RunSQL

Status
Niet open voor verdere reacties.

Buscador

Gebruiker
Lid geworden
26 jan 2019
Berichten
28
Ik kom er niet uit. Volgende code heb ik na aanpassen hier op de site gevonden en toch wil die niet werken. Wat doe ik verkeerd, dit heeft me al veel tijd gekost en ik vind het niet.
DATA-Beh = de tabel met maar één record
LaatsteKopie = kolom in tabel
Ik wil hiermee het cijfer (LaatsteKopie) aanpassen na een bewerking.
De laatste lijn (DoCmd.RunSQL strSQL) wordt geel gekleurd en als ik er op ga met de muis lijkt alles normaal?!?!
Graag hulp AUB

Code:
Dim myNum As Integer
Dim newNum As Integer

myNum = DLookup("[LaatsteKopie]", "DATA-Beh", "[ID]=1")
newNum = myNum + 1

Dim strSQL As String
    strSQL = "UPDATE DATA-Beh SET LaatsteKopie =" & newNum & " where id = 1;"
    DoCmd.RunSQL strSQL
 
Maak er UPDATE [Data-beh] van, anders wordt het streepje als min-teken gezien.
 
Beste AHulpje

Bedankt voor deze simpele oplossing, ik wist niet dat een (-) invloed had op een naam.
Dit is het nu geworden en het werkt perfect.

Code:
Dim strSQL As String
Dim myNum As Integer
Dim newNum As Integer

myNum = DLookup("[LaatsteKopie]", "DATA-Beh", "[id]=1")
newNum = myNum + 1

DoCmd.SetWarnings False
    strSQL = "UPDATE [DATA-Beh] SET LaatsteKopie = " & newNum & " where id = 1"
    DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
 
Maar het kan ook ietsje simpeler:
Code:
UPDATE [DATA-Beh] SET LaatsteKopie = LaatsteKopie+1 WHERE id = 1;
 
Bedankt voor de tip, als het simpel kan waarom dan moeilijk maken.
 
Of zo, als je wat meer controle wilt houden:

Code:
Dim myNum As Integer
myNum = DLookup("[LaatsteKopie]", "DATA-Beh", "[id]=1")+1
[FONT=Verdana] With [/FONT]DoCmd
    .SetWarnings False
    .RunSQL "UPDATE [DATA-Beh] SET LaatsteKopie = " & myNum & " where id = 1"
    .SetWarnings True
 End With

En de kortste variant is inderdaad deze:
Code:
[FONT=Verdana]  With [/FONT]DoCmd
    .SetWarnings False
    .RunSQL "UPDATE [DATA-Beh] SET LaatsteKopie = LaatsteKopie +1 Where id = 1"
    .SetWarnings True
 End With

Maar ik vraag me af of je wel een procedure wilt waarbij nogal rüscksichtlos een waarde met één wordt verhoogd...
 
Beste OctaFish, bedankt om alsnog te reagerenop mijn bericht.
Ik ben niet de beste in VBA maar trek mijn plan, soms via omwegen. Ik wil niet alles vragen en vind op die manier toch heel veel.

Het lijkt misschien gek om enkel met één op te tellen. Wel, dit getal staat in een tabel en ik wou bij afsluiten telkens een kopie maken waar een nummer aan verbonden is.
Nu, bij opslaan stel ik de bestandsnaam samen met een naam uit het formulier en een volgnummer maar dan komt de existentie en nog achter. Hier bedacht ik deze manier. Ik stel de naam samen uit stukjes waarvan het "MyNum" gedeelte in past op de juiste plaats. Na 5 keer opslaan heb ik 5 kopieën met een nummer. Door dan met if >5 de teller terug op 1 te zetten heb ik steeds maar 5 kopieën die elkaar telkens overschrijven.

Misschien te omslachtig maar werkt perfect en ik ga hier niet veel meer aan aanpassen al kan het dan korter.
Toch bedankt voor je bedenking
 
Mijn aanpassingen doen niks met je procedure, maar de schrijfwijze is dus een stuk korter. En bij programmeren is korter doorgaans te prefereren:). Zeker als je meer gaat programmeren. Je werkwijze snap ik niet; 5 keer opslaan? Wat? De database? Een rapport? Ik moet er niet aan denken dat ik van alle databases 5 kopieën moet bewaren :). Maar goed, je zult er vast een goede reden voor hebben (back-up? Kan een stuk handiger.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan