Toon posts:

[asp] Microsoft OLE DB Provider for ODBC Drivers error '8004

Pagina: 1
Acties:

Verwijderd

Topicstarter
Als ik een record wil verwijderen krijg ik een fout melding

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Incident Omschrijving =''.
/blauwkb/Del_rec.asp, line 16

In ID staat een string als ik deze af druk krijg ik alleen maar het eerste woord van de string kan dit de fout zijn ?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<title>..:: Record verwijderen ::..</title>
<% 
Dim ID
ID = Request.Form("ID")
response.write(ID)
if ID="" then
   Response.Write "U heeft niets geselecteerd." 
Else
Dim Conn 
Dim Rs 
Dim sql 
Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset") 
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\Opt\db\blauwkb.mdb"
sql= "Delete * FROM Incident WHERE Incident Omschrijving ='"' & ID 
Rs.Open sql, Conn
Conn.Close
Set Conn = Nothing
Response.Write "Successfully Deleted"
End If
%> 
<%response.redirect("view.asp")%>

Verwijderd

Als je je delete query eens goed bekijkt, zie je dat ie uiteindelijk uitkomt op
code:
1
Delete * FROM Incident WHERE Incident Omschrijving ='


fout 1 : Een veldnaam met spaties moet tussen []
fout 2 : de qoutes zijn niet goed !

wat je wilt hebben is
code:
1
sql= "Delete * FROM Incident WHERE [Incident Omschrijving] ='" & ID & "'"

[ Voor 23% gewijzigd door Verwijderd op 12-03-2004 11:52 ]


  • DoubleTweak
  • Registratie: September 2001
  • Laatst online: 16:25
Vergeet je niet een " na ID??

Be like a duck. Calm on the surface, but always paddling like the dickens underneath.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
En rond numerieke waardes moet (mag) je zowiezo al geen quotes zetten.
Nu weet ik antuurlijk niet of Omschrijving numeriek is of niet, maar zoals FFrenzy al zegt:
je quote-jes kloppen aan geen kanten.

Misschien kan je zowiezo ook eens naar parametrized queries kijken.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Verwijderd schreef op 12 maart 2004 @ 11:52:
Als je je delete query eens goed bekijkt, zie je dat ie uiteindelijk uitkomt op
code:
1
Delete * FROM Incident WHERE Incident Omschrijving ='


fout 1 : Een veldnaam met spaties moet tussen []
fout 2 : de qoutes zijn niet goed !

wat je wilt hebben is
code:
1
sql= "Delete * FROM Incident WHERE [Incident Omschrijving] ='" & ID & "'"
Veldnaam met spaties had ik al aangepast.
alleen de waarde van Incident Omschrijving is een string met spaties dit kan volgens mij ook een probleem op leveren.

De foutmelding is nu weg maar hij verwijderd alleen het record niet :(

Verwijderd

Misschien is het ook handiger om voor een delete conn.execute te gebruiken i.p.v. een recordset te openen.

  • party42
  • Registratie: Oktober 2000
  • Laatst online: 27-05 13:28
Volgens mij is het niet nodig om een wildcard te gebruiken bij een SQL statement... ;)

code:
1
sql= "DELETE FROM Incident WHERE [Incident Omschrijving] ='" & ID & "'"

http://www.devguru.com/Te...ef/sql_syntax_delete.html

Everyday's an endless stream, of cigarettes and magazines...


Verwijderd

Topicstarter
Maar wat nu het probleem blijkt te zijn is dat in ID een waarde komt te staan die niet overeenkomt met de waarde in de database.

In de database staat: Hallo Jan piet klaas.
dan staat er in ID: Hallo

ik heb net nog een record aan gamaakt met de waarde test
veder geen spatie. en dat doet hij niet.

Dit probleem nu dot mijn denken aan een probleem wat ik al eerder heb gehad met asp

een string die een spatie bevat. krijg volgens mij een ander teken mee.

code:
1
2
InStr(1,ID,[Incident Omschrijving],1)
sql= "Delete * FROM Incident WHERE [Incident Omschrijving] ='" & InStr "'"


Kan dit dan niet de uit komst bieden ??? ik weet het niet en het is maar een vraag want asp doe ik bijna nooit.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Verwijderd schreef op 12 maart 2004 @ 12:23:
Maar wat nu het probleem blijkt te zijn is dat in ID een waarde komt te staan die niet overeenkomt met de waarde in de database.

In de database staat: Hallo Jan piet klaas.
dan staat er in ID: Hallo
Dit wil slechts 1 ding zeggen: je hebt een slecht datamodel.
Als je kan, zou ik allereerst m'n databank-model veranderen.
Lees misschien eens iets over normaliseren

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 12 maart 2004 @ 12:26:
[...]

Dit wil slechts 1 ding zeggen: je hebt een slecht datamodel.
Als je kan, zou ik allereerst m'n databank-model veranderen.
Lees misschien eens iets over normaliseren
Het databaseje is een soort knwoledge base. maar de vorige eigenaar van deze db wilde niet met een incident_id werken. wat ik wel gedaan zo hebben. Nu heeft hij de PK op de incendent omschrijving gezet. een daar staan allemaal waardes met spaties in.

en over normaliseren kan ik wel mee praten. half jaar stage gelopen op een bedrijf die administrative software maakte en dan werk je alleen maar met db's.

Maar helaas het leifst zou ik de db ombrengen en een nieuwe maken maar de baas zegt waarom iets weg doen als het nog goed werkt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Euh, omdat het datamodel zo bagger is, dat het totaal inflexibel is, dat je veel meer tijd moet steken in het programmeren van de meest simpele dingen, dat de databank binnen afzienbare tijd niet meer goed zal werken, en omdat je nu meer tijd nodig zult hebben om dat systeem te maken met de huidige DB dan als je de DB goed maakt, en op basis daarvan je programmatie doet.

Als je al een PK op een omschrijving veld moet zetten, dan ben je niet goed bezig. Hetzelfde geldt voor waarden die door komma's/spaties of whatever gescheiden staan in 1 veld.

Ik zou toch maar proberen om je baas te overtuigen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 12 maart 2004 @ 12:38:
Euh, omdat het datamodel zo bagger is, dat het totaal inflexibel is, dat je veel meer tijd moet steken in het programmeren van de meest simpele dingen, dat de databank binnen afzienbare tijd niet meer goed zal werken, en omdat je nu meer tijd nodig zult hebben om dat systeem te maken met de huidige DB dan als je de DB goed maakt, en op basis daarvan je programmatie doet.

Als je al een PK op een omschrijving veld moet zetten, dan ben je niet goed bezig. Hetzelfde geldt voor waarden die door komma's/spaties of whatever gescheiden staan in 1 veld.

Ik zou toch maar proberen om je baas te overtuigen.
Daar ben ik al mee bezig. Maar in iedergeval ben ik geholpen met de fout melding. en zo'n access db maken pfffff. uurtje werk dus dat moet lukken bij de baas.

dan zijn de fouten ook weg.

Allen Hartelijk Bedankt !
Pagina: 1