Volledige versie bekijken : SQL - Access - ASP



boemans
5 November 2006, 22:41
Beste mensen,

kunnen jullie mij even helpen met volgend probleempje?

Ik heb in een database de tabel dbo_dbmforum_Subscription met daarin het veld strEmail. Ik maak nu een gastenboek waarbij de ingevoerde gegevens moeten opgeslagen worden in de tabel dbo_dbmforum_Guestbook.

Bij het toevoegen van een reactie in het gastenboek moet het emailadres opgegeven worden, en het is zo dat enkel leden reacties mogen plaatsen. Met andere woorden hun emailadres moet voorkomen in die tabel dbo_dbmforum_Subscription.

Ik maak gebruik van een Access database en probeer dit op te lossen via een EXISTS-operator in SQL. Deze blijkt echter niet te werken.

Ik doe het zo:


Set cn = Server.CreateObject("ADODB.Connection")
openStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("BPM-Forum database.mdb")
cn.Open openStr
if exists(SELECT strEmail FROM dbo_dbmforum_Subscription WHERE strEmail=email) then message = "error"
else
SQL = "SELECT * FROM dbo_dbmforum_Guestbook"
Set record = Server.CreateObject("ADODB.Recordset")
record.Open sql, cn, 2, 2
record.AddNew
record("name") = Request.Form("name")
record("email") = Request.Form("email")
record("url") = Request.Form("url")
record("message") = Request.Form("message")
record("todaysDate") = Now()
message = "thanks (" & name & "). <a href='guests.asp'>click</a>"
record.Update
record.Close
Set record = Nothing
cn.Close
Set cn = Nothing
end if
%>

Hoe kan ik dit oplossen zodat het wel werkt? En is dit (WHERE strEmail=email) de correcte manier om te verwijzen naar het opgegeven emailadres?

Bedankt alvast!

boemans
13 November 2006, 21:25
Niemand? :(

AMD
14 November 2006, 00:46
Beste mensen,

kunnen jullie mij even helpen met volgend probleempje?

Ik heb in een database de tabel dbo_dbmforum_Subscription met daarin het veld strEmail. Ik maak nu een gastenboek waarbij de ingevoerde gegevens moeten opgeslagen worden in de tabel dbo_dbmforum_Guestbook.

Bij het toevoegen van een reactie in het gastenboek moet het emailadres opgegeven worden, en het is zo dat enkel leden reacties mogen plaatsen. Met andere woorden hun emailadres moet voorkomen in die tabel dbo_dbmforum_Subscription.

Ik maak gebruik van een Access database en probeer dit op te lossen via een EXISTS-operator in SQL. Deze blijkt echter niet te werken.

Ik doe het zo:


Set cn = Server.CreateObject("ADODB.Connection")
openStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("BPM-Forum database.mdb")
cn.Open openStr
if exists(SELECT strEmail FROM dbo_dbmforum_Subscription WHERE strEmail=email) then message = "error"
else
SQL = "SELECT * FROM dbo_dbmforum_Guestbook"
Set record = Server.CreateObject("ADODB.Recordset")
record.Open sql, cn, 2, 2
record.AddNew
record("name") = Request.Form("name")
record("email") = Request.Form("email")
record("url") = Request.Form("url")
record("message") = Request.Form("message")
record("todaysDate") = Now()
message = "thanks (" & name & "). <a href='guests.asp'>click</a>"
record.Update
record.Close
Set record = Nothing
cn.Close
Set cn = Nothing
end if
%>

Hoe kan ik dit oplossen zodat het wel werkt? En is dit (WHERE strEmail=email) de correcte manier om te verwijzen naar het opgegeven emailadres?

Bedankt alvast!
Ik denk dat het komt omdat je geen correcte aanroep doet van de exist functie.
Kijk eventjes naar mijn voorbeeld en pas het desnoods eventjes aan zodat het met jou variabele werkt.


<%
Dim db, rs, sSQL

username = "AMD"
password = "123456"

sSQL = "IF EXISTS(SELECT 'True' FROM MijnTabel WHERE username = '" & _
username & "') "
sSQL = sSQL & "BEGIN "
sSQL = sSQL & "SELECT 'Deze record bestaat al!' "
sSQL = sSQL & "END ELSE BEGIN "
sSQL = sSQL & "SELECT 'Record toegevoegd' "
sSQL = sSQL & "INSERT INTO MijnTabel(username, userpassword) VALUES('" & _
username & "','" & password & "') "
sSQL = sSQL & "END"

Set db = Server.CreateObject("ADODB.Connection")
db.Open mijnTest 'gebruik uw connectie hier
'en voer onze statement uit
Set rs = db.Execute(sSQL)

If rs(0) = "Deze record bestaat al!" Then
'We sturen de gebruiker hier naar een pagina die hem informeert dat
'enkel leden mogen posten.
Else
Response.Write "Jouw gebruikersnaam en paswoord zijn goedgekeurd..."
End If
%>

boemans
14 November 2006, 08:59
Bedankt alvast voor de reactie,
ik probeer het vanavond even uit.

boemans
14 November 2006, 16:47
Nogmaals bedankt dat je me wil helpen AMD!

Ik heb er nu dit van gemaakt:


<%
Dim db, rs, sSQL
sSQL = "IF EXISTS(SELECT 'True' FROM Subscription WHERE strEmail = '" & email & "') "
sSQL = sSQL & "BEGIN "
sSQL = sSQL & "INSERT INTO Guestbook(Email, Message, Date) VALUES('" & email & "','" & message & "', 'now()') "
sSQL = sSQL & "END ELSE BEGIN "
sSQL = sSQL & "SELECT 'Email van geen lid' "
sSQL = sSQL & "END"
Set db = Server.CreateObject("ADODB.Connection")
openStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
db.Open openStr
Set rs = db.Execute(sSQL)
If rs(0) = "Email van geen lid" Then
Response.Write "Enkel leden mogen berichten posten"
Else
Response.Write "Je bericht werd toegevoegd..."
End If
%>
<html>
<head>
<title>Guestbook</title>
</head>
<body>
<% if Request.querystring("act") = "send" then response.write message %>
<FORM METHOD="POST" method="POST" action="guestbook.asp?act=send">
Name: <INPUT NAME="name" size="33"><br>
Email: <INPUT NAME="email" size="33"><br>
Message: <textarea rows="6" name="message" cols="30">
</textarea><br>
<INPUT TYPE="SUBMIT" VALUE="SEND">
</form>
</body>
</html>Klopt dit nog?

Ik krijg echter deze fout bij uitvoering:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'.
/BPM-Forum site/guestbook_new.asp, line 14


Zit er nog een fout in mijn code?