Update ' in Access

Status
Niet open voor verdere reacties.

Jojam

Gebruiker
Lid geworden
27 dec 2002
Berichten
65
Ik zit met een klein probleempje.

Als ik middels VBA een update van bv een straatnaam wil uitvoeren, stopt de Query op het teken ' .

Op zich wel logisch, want hij onderbreekt de Sql string. Iemand enig idee hoe ik dit kan omzeilen.

Bij voorbaat dank.

JoJam
 
Over het algemeen kun je tekens "escapen" door er een \ voor te zetten...
 
Als je nu ook even je stukje VBA en je query post kunnen we kijken wat er aan veranderd moet worden.
 
Probeer het volgende eens :

Sla de waarde op in een variabele

UPDATE tbl SET field ='" & variabele & "' [WHERE]
 
Ik veronderstel dat je de nieuwe naam van de straat in een textbox zet?

Ten eerste, VB neemt gegevens blijkbaar anders op in een insert dan in een update.
Bij de insert heb je inderdaad ' ' nodig rond de waarde :
Code:
qry_add_dom = "INSERT INTO DOMAIN(dom_name, dom_grp_id) VALUES('" & Me.txt_add_dom.Value & "'," & Me.cb_rel_dom_grp.Value & ");"

Aangezien het eerste veld een tekst is, zijn de quotes nodig. het tweede is een nummer,
dus is het niet nodig.

MAAR DIT GELD NIET BIJ EEN UPDATE!

Je kan de quotes gewoon weglaten :p
Dit voorbeeld werkt bij mij. Pas het aan aan jouw waarden, en het moet wel lukken.

Code:
qry_grp_spec = "UPDATE DOMAIN_GRP SET grp_responsible = " & Me.txt_grp_resp.Value & ", grp_specialty = " & Me.txt_grp_speci & " WHERE grp_id = " & Me.cb_grp_speci.Value & ";"

Er zijn geen problemen met spaties.
Let wel. Ik ga zo te werk.
In mijn form staat een textbox die op voorhand ingevuld is (bv: StraatNaam)
!! er mogen geen spaties in de textbox staan!!
Als ik dan op de update button klik, wordt een nieuw venstertje geopend waarin dan staat
"StraatNaam" en daaronder een lege textbox.

Daarin mag je WEL spaties zetten.
Hier is mijn volledige code van de button ;)

Code:
'
'**************** MODIFY DOMAIN ****************
'-----------------------------------------------
'
Private Sub bt_dom_mod_Click()
Dim qry_mod_dom As String
On Error GoTo Err_bt_dom_mod_Click

    DoCmd.GoToRecord , , acGoTo
    DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
    DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
    
    qry_mod_dom = "UPDATE DOMAIN SET dom_name = " & Me.txt_dom_mod.Value & " WHERE dom_id = " & Me.cb_mod_dom.Value & ";"
    DoCmd.RunSQL qry_mod_dom
    
'------CB & List UPDATES---------
    Lst_DOMAIN_grp.Requery
    Lst_domains.Requery
    Lst_dom_spec.Requery
    Lst_grp_spec.Requery
    cb_grp_speci.Requery
    cb_del_grp.Requery
    cb_del_dom.Requery
    cb_mod_grp.Requery
    cb_mod_dom.Requery
    cb_rel_dom_grp.Requery
'--------------------------------

Exit_bt_dom_mod_Click:
    Exit Sub

Err_bt_dom_mod_Click:
    MsgBox Err.Description
    Resume Exit_bt_dom_mod_Click
    
End Sub

Hopelijk helpt dit ;)
 
@ezechiel,

MAAR DIT GELD NIET BIJ EEN UPDATE!

Hallo,

waar je dat op baseert weet ik niet.
Wat ik wel weet is dat je uitspraak onjuist is.
In VBa geldt altijd (zonder uitzondering), dat om te verwijzing naar een variabele met als inhoud

- een tekststring, je deze dubbele enkele plus dubbele aabnhalingstekens moet plaatsen
- een numerieke string, je deze tussen dubbele aanhalingstekens zet

Dat eea bij jou werkt, wil niet zeggen dat je daar direkt conclusies uit kan trekken ;)

Groet,

Tardis
 
Ugh,

En hierbij bekrachtig ik het vonnis van Tardis, die heeft helemaal gelijk!
 
Hij heeft gelijk, daar ben ik mee akkoord.
Maar leg dan eens uit waarom dat dan wel werkt??? :shocked:

Zoiets is gewoon ondenkbaar in PHP/Oracle (of andere behalve access)!!
En hier werkt het wel? Is dat weer van die M$ logica?

Dat het zonder quotes werkt, heeft mij wel geholpen.
Dus als het iemand anders kan helpen waarom niet?
Dat was trouwens de bedoeling van mijn antwoord.

Ik kan er ook niet aan doen dat die M$ software niet werkt zoals het
zou moeten werken.. :o

Doe het dus volgens de regels, maar als je regels niet hoeft te volgen, en dit je leven
gemakkelijker maakt, waarom er niet van profiteren? :p
 
Laatst bewerkt:
Het doet in principe niet wat jij verwacht.
Onderstaande regel gaat het om.

qry_mod_dom = "UPDATE DOMAIN SET dom_name = " & Me.txt_dom_mod.Value & " WHERE dom_id = " & Me.cb_mod_dom.Value & ";"

Stel: Me.txt_dom_mod.Value = Flipje
Me.cb_mod_dom.Value = Japie

De query ziet er dan als volgt uit:
UPDATE DOMAIN SET dom_name=Flipje WHERE dom_id=Japie;

In begrijpelijk Nederlands betekent dit:

Wijzig de volgende velden in tabel DOMAIN: dom_name krijgt de inhoud van veld Flipje uit tabel DOMAIN, maar alleen bij de records waar veld dom_id gelijk is aan veld Japie.

Dit heeft overigens niets met Access te maken! Hier gaat om de regels die gelden voor SQL!
 
Eigenlijk doet hij wel wat ik verwacht want in
txt_dom_mod zit de naam van het domein en in cb_mod_dom zitten twee kolommen:
de id (primary key) en dom_name.

Dus als hij de "value" neemt, heb ik gezien dat hij altijd de eerste kolom neemt
(ik ben geen expert in access :p )

dus dan is de query in het nederlands:
verander de domein naam in Flipje waar het id van het domein gelijk is aan 9
(9 komt overeen met domein naam 'Japie')

Ik vind het gewoon raar dat ik geen single quotes rond een tekstwaarde hoef te zetten
en dat het toch nog werkt, terwijl zoiets in oracle een fout voortbrengt. En aangezien ik niet veel van access ken en die quotes een error genereerde, heb ik het maar eens zonder geprobeerd. En raar maar waar, het werkt.

Dunno why.... :(
 
dwj,

WIl je zo vriendleijkzij om NIET meer van deze prost gebruik te maken.
Maak svp een nieuwe aan met jouw vraag.

Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan