Docmd.runsql vraagje

Status
Niet open voor verdere reacties.

andro70

Gebruiker
Lid geworden
29 dec 2005
Berichten
12
Ik heb een form die een knop bevat. Volgende instructie is gekoppeld aan deze knop

DoCmd.RunSQL "delete * from opruimv where isnull(userid) or isnull(nln) or isnull(rekeningnummer)"

de bedoeling is dat alle records gewist worden waar de waarde 0 is in een der velden userid of nln of rekeningnummer. Wel opmerken dat opruimv een query is van 2 tabellen. Ik krijg de foutmelding 3086

kan geen gevens verwijderen uit de opgegeven tabellen.

Weet er iemand een oplossing aub?
 
De expressie
DoCmd.RunSQL "delete * from opruimv where isnull(userid) or isnull(nln) or isnull(rekeningnummer)"
is geen SQL statement.

In access is het het eenvoudigst om het SQL statement eerst als query te maken.
Als de query correct is kun je in de SQL weergave het correcte SQL statement zien en dat gebruiken om de expressie achter het DoCmd.RunSQL commando te kopieren.

In jou geval zit de fout in het gebruik van de isnull() functie, die bestaat wel in VBA maar niet in SQL.
in SQL gebruik je in dat soort gevallen userid IS NULL OR nln IS NULL etc.
 
De sql opdracht werkt wel perfect als opruimv een tabel is maar zodra in verwijs naar een query geeft hij een foutmelding. Ook op de isnull() opdracht maakt hij geen fout in het sql statement dus vermoedelijk mag die opdracht wel gebruikt worden.
 
andro70 zei:
De sql opdracht werkt wel perfect als opruimv een tabel is maar zodra in verwijs naar een query geeft hij een foutmelding. Ook op de isnull() opdracht maakt hij geen fout in het sql statement dus vermoedelijk mag die opdracht wel gebruikt worden.

IsNull funktie kun je prima gebruiken in queries, daar zit het probleem niet.
Opmerking van Bartuls is dan ook onjuist :)

Probleem zit 'm in je query.
Een DELETE statement voer je per tabel uit.
In een DELETE moet je verwijzen naar tabelnamen.

Je zult of je code op moeten splitsen in 2 DELETE statements of om moeten bouwen zodat er expliciet naar tabellen wordt verwezen.

FESTER
 
* Ik dacht laat ik het maar bij dit topic zetten

Dit werkt ook niet:

Code:
DoCmd.RunSQL "Delete from Order where OrderID=" & CStr(Me.kzOrdernummers)

Ik krijg foutmelding 3131:
De component FROM bevat een syntaxfout.

Iemand een ideetje?
 
Spatie invoegen voor het laatste aanhalingsteken:

DoCmd.RunSQL "Delete from Order where OrderID= " & CStr(Me.kzOrdernummers)

FESTER
 
Probeer dan dit is:

"Delete from Order where OrderID = " & Me.kzOrdernummers & ""

CStr funktie converteert naar een tekststring en kun je niet gebruiken als OrderID numeriek is.
Als je keuzelijst multi select is, gaat deze code ook niet werken.

FESTER
 
Hoi Fester,

Dat werkt ook niet. Nog steeds dezelfde fout. Ik kan enkel één nummer selecteren. Ik snap er niks van.
 
In geval OrderID=text

"Delete * from Order where OrderID = '" & Me.kzOrdernummers & "'"

In geval OrderID=number

"Delete * from Order where OrderID = " & Me.kzOrdernummers

de bountcolumn van je combobox (neem aan dat het daarom gaat), moet het orderid bevatten.

=================
Salut Fester en de rest van de bekenden!

mohamed
 
DoCmd.RunSQL "Delete * from Order where OrderID = " & Me.kzOrdernummers en
DoCmd.RunSQL "Delete * from Order where OrderID = ' " & Me.kzOrdernummers & " ' "

geven nog steeds dezelfde melding.

Wat kan het nog meer zijn?
 
zet hem eens in een gewone query en kijk waar het fout gaat.....
 
Ik heb de volgende als query,

Delete * from ORDER where OrderID = 3

Maar ook dat werkt niet.

Nog steeds dezelfde foutmelding. Nog iemand een ander idee
 
Oh ja sorry. Dat had ik al gedaan en dat werkt. Toch bedankt voor je reactie.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan