Avatar billede starf Nybegynder
25. april 2006 - 11:21 Der er 16 kommentarer og
1 løsning

updatere db record

Hej

Jeg har lidt problemer med at få en opdatering af min db til at virke. jeg får bare:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.1.12a-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE UserID =36' at line 1

/mail_list.asp, line 461


min kode ser således ud:

<%
if Request.Form("domain") = "1" then strDomain = "novatech.dk" else if Request.Form("domain") = "2" then strDomain = "novatechpolska.com" else if Request.Form("domain") = "3" then strDomain = "ntindustry.com" else strDomain = "No Domain!"
strMail = Request.Form("mailbox") + "@" + strDomain
strUserName = Request.Form("mailbox") + "@" + strDomain
strHomeDir = "C:\MDAEMON\Users\" + strDomain + "\" + Request.Form("mailbox") +"\"
%>

<%

SQL = "Update userlist WHERE UserID ="& Request.QueryString("UserID")
set rs = Conn.execute(SQL)

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn, 3, 3



if Request.Form("username") <> "" then
rs("FullName") = Request.Form("username")
end if
if Request.Form("password") <> "" then
rs("Password") = Request.Form("password")
end if
if Request.Form("mailbox") <> "" then
rs("Mailbox") = Request.Form("mailbox")
end if
if Request.Form("desc") <> "" then
rs("msg") = Request.Form("desc")
end if
rs("Maildir") = strHomeDir
rs("AllowAccess") = "1"
rs("AllowChangeViaEmail") = "1"
rs("KeepForwardedMail") = "1"
if Request.Form("userrole") <> "" then
rs("role") = Request.Form("userrole")
end if
if Request.Form("domain") <> "" then
rs("DomainID") = Request.Form("domain")
end if
rs("loginname") = strUserName
rs.Update
rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing%>

hva er det jeg gør galt?
Avatar billede michael_stim Ekspert
25. april 2006 - 11:24 #1
"Update userlist SET a=b, c=d WHERE...
Avatar billede fennec Nybegynder
25. april 2006 - 11:28 #2
Det er den forkerte syntax i din update:

SQL = "Update userlist SET FullName='"& Request.Form("username") &"', password='"& Request.Form("password") &"', ...osv.. WHERE UserID ="& Request.QueryString("UserID")
Conn.execute(SQL)

Også understøtter MySQL ikke rs.Update metoden, hvorfor du skal bruge SQL update syntaxen.
Avatar billede starf Nybegynder
25. april 2006 - 11:45 #3
har nu gjort det sådan her:

<%
if Request.Form("domain") = "1" then strDomain = "novatech.dk" else if Request.Form("domain") = "2" then strDomain = "novatechpolska.com" else if Request.Form("domain") = "3" then strDomain = "ntindustry.com" else strDomain = "No Domain!"
strMail = Request.Form("mailbox") + "@" + strDomain
strUserName = Request.Form("mailbox") + "@" + strDomain
strHomeDir = "C:\MDAEMON\Users\" + strDomain + "\" + Request.Form("mailbox") +"\"
%>

<%

SQL = "Update userlist SET FullName='"& Request.Form("username") &"', password='"& Request.Form("password") &"', MailBox='"& Request.Form("mailbox") &"', role='"& Request.Form("userrole") &"', loginname='"& strUserName &"', Maildir='"& strHomeDir &"' WHERE UserID ="& Request.QueryString("UserID") 
Conn.execute(SQL)

Conn.Close
set Conn = Nothing%>

dog får den ik gemt noget af det.. felterne bliver bare tomme?
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 11:48 #4
Det kan være fordi du har sat "UserID" til at være tekst i din DB.

Hvis dette er tilfældet skal du skrive:
SQL = "Update userlist WHERE UserID ='"& Request.QueryString("UserID") & "';"
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 11:48 #5
Jeg har sat ' ' rundt om din SQL
Avatar billede michael_stim Ekspert
25. april 2006 - 11:49 #6
Og der er en id som modsvarer den du fanger i din querystring?
Prøv at skrive din forspørgsel ud i stedet for at eksekvere den.

response.write SQL
'Conn.execute(SQL)
Avatar billede starf Nybegynder
25. april 2006 - 11:54 #7
nu ser det sådan her ud:

SQL = "Update userlist SET FullName='"& Request.Form("username") &"', password='"& Request.Form("password") &"', MailBox='"& Request.Form("mailbox") &"', role='"& Request.Form("userrole") &"', loginname='"& strUserName &"', Maildir='"& strHomeDir &"' WHERE UserID ="& Request.QueryString("UserID") & "';"

ser ud til jeg får det rigtige id:

Update userlist SET FullName='', password='', MailBox='', role='', loginname='@No Domain!', Maildir='C:\MDAEMON\Users\No Domain!\\' WHERE UserID =50';
Avatar billede starf Nybegynder
25. april 2006 - 12:01 #8
her er hele min kode:

<% if mode = "edit" then %>

<form method="POST" action="?mode=editmail">
<% SQL = "SELECT * FROM userlist WHERE UserID ="& Request.QueryString("UserID")
set rs = Conn.execute(SQL)
if rs.EOF then
%>
No Data, in the database were found!
<%
else
%>

<b>Showing Mail for UserID:</b> <%=rs("UserID")%>
        <table border="1" cellspacing="2" cellpadding="2">
            <tr>
                <td bgcolor="#999999"><strong>UserID:</strong></td>
                <td bgcolor="#cccccc"><%=rs("UserID")%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Full Name:</strong></td>
                <td bgcolor="#cccccc"><input type="text" name="username" value="<%=rs("FullName")%>" size="15"></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>User Name:</strong></td>
                <td bgcolor="#cccccc"><%=rs("loginname")%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>User E-Mail:</strong></td>
                <td bgcolor="#cccccc"><%=rs("Mailbox")%>@<% if rs("DomainID") = "1" then response.write"novatech.dk" else if rs("DomainID") = "2" then response.write"novatechpolska.com" else if rs("DomainID") = "3" then response.write"ntindustry.com" else response.write"No Domain!" %></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>MailBox:</strong></td>
                <td bgcolor="#cccccc"><input type="text" name="mailbox" value="<%=rs("Mailbox")%>" size="15"></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Domain:</strong></td>
                <td bgcolor="#cccccc"><% if rs("DomainID") = "1" then response.write"novatech.dk" else if rs("DomainID") = "2" then response.write"novatechpolska.com" else if rs("DomainID") = "3" then response.write"ntindustry.com" else response.write"No Domain!" %></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Domain ID:</strong></td>
                <td bgcolor="#cccccc"><%=rs("DomainID")%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>MailDir:</strong></td>
                <td bgcolor="#cccccc"><%=rs("MailDir")%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>User Role:</strong></td>
                <td bgcolor="#cccccc"><%=rs("role")%> - <select name="userrole" size="1">
                        <option value="Limited">Limited</option>
                        <option value="Normal">Normal</option>
                        <option value="Design">Design</option>
                        <option value="Sales">Sales</option>
                        <option value="Admin">Admin</option>
                    </select></td>
            </tr>
                        <tr>
                <td bgcolor="#999999"><strong>Password:</strong></td>
                <td bgcolor="#cccccc"><input type="password" name="password" value="<%=rs("password")%>" size="24"></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Action:</strong></td>
                <td bgcolor="#cccccc">-<a href="?mode=editmail&UserID=<%=rs("UserID")%>">[Save]</a>-[Delete]-</td>
            </tr>
        </table></form>
<% end if %>
<% end if %>


<% if mode = "editmail" then %>
<%
if Request.Form("domain") = "1" then strDomain = "novatech.dk" else if Request.Form("domain") = "2" then strDomain = "novatechpolska.com" else if Request.Form("domain") = "3" then strDomain = "ntindustry.com" else strDomain = "No Domain!"
strMail = Request.Form("mailbox") + "@" + strDomain
strUserName = Request.Form("mailbox") + "@" + strDomain
strHomeDir = "C:\MDAEMON\Users\" + strDomain + "\" + Request.Form("mailbox") +"\"
%>

<%

SQL = "Update userlist SET FullName='"& Request.Form("username") &"', password='"& Request.Form("password") &"', MailBox='"& Request.Form("mailbox") &"', role='"& Request.Form("userrole") &"', loginname='"& strUserName &"', Maildir='"& strHomeDir &"' WHERE UserID ="& Request.QueryString("UserID") & "';"
response.write SQL
'Conn.execute(SQL)

Conn.Close
set Conn = Nothing%>


The following has ben added to the system:<br>

        <table border="1" cellspacing="2" cellpadding="2">
            <tr>
                <td bgcolor="#999999"><strong>Full Name:</strong></td>
                <td bgcolor="#cccccc"><%Response.Write(Request.Form("username"))%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>User Name:</strong></td>
                <td bgcolor="#cccccc"><%response.write strUserName%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>User E-Mail:</strong></td>
                <td bgcolor="#cccccc"><%response.write strMail%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Domain ID:</strong></td>
                <td bgcolor="#cccccc"><%Response.Write(Request.Form("domain"))%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Domain:</strong></td>
                <td bgcolor="#cccccc"><%response.write strDomain%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>HomeDir:</strong></td>
                <td bgcolor="#cccccc"><%response.write strHomeDir%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>Password:</strong></td>
                <td bgcolor="#cccccc"><%Response.Write(Request.Form("password"))%></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><strong>User Role:</strong></td>
                <td bgcolor="#cccccc"><%Response.Write(Request.Form("userrole"))%></td>
            </tr>
        </table>

<% end if %>
Avatar billede michael_stim Ekspert
25. april 2006 - 12:01 #9
Og der kan du jo se hvilke du ikke får med.
Avatar billede starf Nybegynder
25. april 2006 - 12:02 #10
ja men hvorfor kommer de ik med?
Avatar billede stinejh1980 Nybegynder
25. april 2006 - 12:03 #11
den er galt med ' igen - tror jeg der er kun én ved user ID
Avatar billede starf Nybegynder
25. april 2006 - 12:09 #12
tror det er forms der ik bliver sendt rigtigt med, for i den tabel der kommer bagefter der requester.forms de er også tomme... hmm
Avatar billede starf Nybegynder
25. april 2006 - 13:54 #13
ok har fået den tila t sende det med.. en sidste lille fejl..

her er min sql kode:

<%

SQL = "Update userlist SET FullName='"& Request.Form("username") &"', password='"& Request.Form("password") &"', role='"& Request.Form("userrole") &"' WHERE UserID ="& Request.QueryString("UserID") & "';"
'response.write SQL
Conn.execute(SQL)

Conn.Close
set Conn = Nothing%>

Når jeg forsøger at køre Conn.execute(SQL) får jeg denne fejl

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.1.12a-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

/mail_list.asp, line 460

men bruger jeg response.write SQL virker det fint?

Update userlist SET FullName='test2', password='1234', role='Limited' WHERE UserID =45';

hvad er fejlen?
Avatar billede michael_stim Ekspert
25. april 2006 - 14:27 #14
Du har stadig en ' for meget (eler lidt).
Avatar billede starf Nybegynder
25. april 2006 - 14:33 #15
jeg er dum, enlighten me plz?
Avatar billede stinejh1980 Nybegynder
26. april 2006 - 12:01 #16
Hvis kolonnen i din Db er tekst skal du sætte ' ' rundt om (Således = '" & & "').
Hvis den er tal skal det bare stå " & & "
Avatar billede stinejh1980 Nybegynder
26. april 2006 - 12:24 #17
Har sat en ekstra ' ind

<%

SQL = "Update userlist SET FullName='"& Request.Form("username") &"', password='"& Request.Form("password") &"', role='"& Request.Form("userrole") &"' WHERE UserID ='"& Request.QueryString("UserID") & "';"
'response.write SQL
Conn.execute(SQL)

Conn.Close
set Conn = Nothing%>   

Dette betyder:
Username=text
Password=text
Userrole=text
UserID=text
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester