Avatar billede cronck Nybegynder
16. april 2004 - 15:18 Der er 39 kommentarer og
2 løsninger

Tilføj til DB

Hej eksperter...!

100 Point til den som får det her til at virke...
http://frip.dk/cronck/project.rar
Avatar billede tzag_dk Nybegynder
16. april 2004 - 15:20 #1
kommer den ikke med en fejl kode?
Hvis ja, så hvad?
Avatar billede cronck Nybegynder
16. april 2004 - 15:24 #2
hmm..
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i INSERT INTO-sætningen.
/add_monster_handler.asp, line 75

og når jeg retter det kommer noget andet frem....
har kæmpet med den her i 1½ time nu... :(
Avatar billede tzag_dk Nybegynder
16. april 2004 - 15:28 #3
Prøv:

sql = "Insert Into tbl_monsters set (name, location, level, member, hits, loot_common, loot_rare, loot_permanent, examine, agressive, quest) Values('" & Request.Form("strname") & "','" & Request.Form("strlocation") & "','" & Request.Form("strlevel") & "','" & Request.Form("strmember") & "','" & Request.Form("strhits") & "','" & Request.Form("strloot_common") & "','" & Request.Form("strloot_rare") & "','" & Request.Form("strloot_permanent") & "','" & Request.Form("strexamine") & "','" & Request.Form("stragressive") & "','" & Request.Form("strquest") & "')"
Conn.Execute(sql)
Avatar billede cronck Nybegynder
16. april 2004 - 15:30 #4
Nope... Stadig samme fejl...
Avatar billede tzag_dk Nybegynder
16. april 2004 - 15:32 #5
sql = "Insert Into tbl_monsters (name,location,level,member,hits,loot_common,loot_rare,loot_permanent,examine,agressive,quest) Values('" & Request.Form("strname") & "','" & Request.Form("strlocation") & "','" & Request.Form("strlevel") & "','" & Request.Form("strmember") & "','" & Request.Form("strhits") & "','" & Request.Form("strloot_common") & "','" & Request.Form("strloot_rare") & "','" & Request.Form("strloot_permanent") & "','" & Request.Form("strexamine") & "','" & Request.Form("stragressive") & "','" & Request.Form("strquest") & "')"
Conn.Execute(sql)
Avatar billede cronck Nybegynder
16. april 2004 - 15:34 #6
Duer heller ikk.. ;-(
Avatar billede tzag_dk Nybegynder
16. april 2004 - 15:41 #7
prøv lige at kikke her:
http://www.eksperten.dk/spm/154151

Det ser ud til at han havde det samme problem :-)
Avatar billede cronck Nybegynder
16. april 2004 - 15:49 #8
Hmm.. Har lige kigget... (lidt rodet)

jeg har genskrevet hele koden, og får stadig samme fejl...

<%

response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/cgi-bin/itemsandmonsters.mdb")
Conn.Open DSN

strSQL = "Insert into tbl_monsters ("

strSQL = strSQL & "name, "                    // 1
strSQL = strSQL & "location, "                    // 2
strSQL = strSQL & "level, "                    // 3
strSQL = strSQL & "member, "                    // 4
strSQL = strSQL & "hits, "                    // 5
strSQL = strSQL & "loot_common, "                // 6
strSQL = strSQL & "loot_rare, "                    // 7
strSQL = strSQL & "loot_permanent, "                // 8
strSQL = strSQL & "examine, "                    // 9
strSQL = strSQL & "agressive, "                    // 10
strSQL = strSQL & "quest) "                    // 11

strSQL = strSQL & "values('"

strSQL = strSQL & Request.Form("strname") & "','"        // 1
strSQL = strSQL & Request.Form("strlocation") & "','"        // 2
strSQL = strSQL & Request.Form("strlevel") & "','"        // 3
strSQL = strSQL & Request.Form("strmember") & "','"        // 4
strSQL = strSQL & Request.Form("strhits") & "','"        // 5
strSQL = strSQL & Request.Form("strloot_common") & "','"    // 6
strSQL = strSQL & Request.Form("strloot_rare") & "','"        // 7
strSQL = strSQL & Request.Form("strloot_permanent") & "','"    // 8
strSQL = strSQL & Request.Form("strexamine") & "','"        // 9
strSQL = strSQL & Request.Form("stragressive") & "','"        // 10
strSQL = strSQL & Request.Form("strquest") & "')"        // 11

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>
Avatar billede cronck Nybegynder
16. april 2004 - 15:50 #9
Altså: Der er en syntaksfejl i INSERT INTO-sætningen.
Avatar billede tzag_dk Nybegynder
16. april 2004 - 15:53 #10
Det siger den jo at der er, men jeg kan ikke lige se hvor fejlen skulle være :-(
Avatar billede eagleeye Praktikant
16. april 2004 - 15:54 #11
name er reservert ord så der skal [] omkring [name], level er vist også reserveret. En anden ting husk kolonner som er defineret som tal skal der ikke ' omkring.
Avatar billede tzag_dk Nybegynder
16. april 2004 - 15:56 #12
selvføldelig... Doh... :-)
Avatar billede cronck Nybegynder
16. april 2004 - 15:56 #13
dvs. at jeg skal bare lave disse om?

strSQL = strSQL & "[name], " 
strSQL = strSQL & "[level], "
Avatar billede eagleeye Praktikant
16. april 2004 - 15:56 #14
Ja, men for en sikkerheds skyld kan du prøve at sætte klammer omkring alle kolonnenavne, så driller de ikke:

strSQL = "Insert into tbl_monsters ("

strSQL = strSQL & "[name], "                    // 1
strSQL = strSQL & "[location], "                    // 2
strSQL = strSQL & "[level], "                    // 3
strSQL = strSQL & "[member], "                    // 4
strSQL = strSQL & "[hits], "                    // 5
strSQL = strSQL & "[loot_common], "                // 6
strSQL = strSQL & "[loot_rare], "                    // 7
strSQL = strSQL & "[loot_permanent], "                // 8
strSQL = strSQL & "[examine], "                    // 9
strSQL = strSQL & "[agressive], "                    // 10
strSQL = strSQL & "[quest]) "                    // 11
Avatar billede cronck Nybegynder
16. april 2004 - 15:58 #15
Ok, det har jeg nu gjort, så skriver den bare:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x4c8 Thread 0x580 DBC 0xb5eb3c4 Jet'.

/cronck/add_monster_handler.asp, line 72
Avatar billede cronck Nybegynder
16. april 2004 - 15:58 #16
I får lige hele filen her:
<html>
<head>
<title>RSFever</title>
<LINK href="style.css" type=text/css rel=stylesheet>
</head>
<body bgcolor="#000000" text="#FFFFFF" link="#008000" vlink="#008000" alink="#008000">
<center><font size="5">Monster Added!</font></center>
<div align="center">
  <center>
<table border="0">
  <tr>
    <td>Monster Name:</td>
    <td><%=Request.Form("strname")%></td>
  </tr>
  <tr>
    <td>Location</td>
    <td><%=Request.Form("strlocation")%></td>
  </tr>
  <tr>
    <td>Level</td>
    <td><%=Request.Form("strlevel")%></td>
  </tr>
  <tr>
    <td>Members only?</td>
    <td><%=Request.Form("strmember")%></td>
  </tr>
  <tr>
    <td>Hits</td>
    <td><%=Request.Form("strhits")%></td>
  </tr>
  <tr>
    <td>Loot (Common)</td>
    <td><%=Request.Form("strloot_common")%></td>
  </tr>
  <tr>
    <td>Loot (Rare)</td>
    <td><%=Request.Form("strloot_rare")%></td>
  </tr>
  <tr>
    <td>Loot (Always)</td>
    <td><%=Request.Form("strloot_permanent")%></td>
  </tr>
  <tr>
    <td>When examine it says:</td>
    <td><%=Request.Form("strexamine")%></td>
  </tr>
  <tr>
    <td>Agressive?</td>
    <td><%=Request.Form("stragressive")%></td>
  </tr>
  <tr>
    <td>Type (Animal, Giant etc.)</td>
    <td><%=Request.Form("strtype")%></td>
  </tr>
  <tr>
    <td>Quest Monster</td>
    <td><%=Request.Form("strquest")%></td>
  </tr>
</table>
  </center>
</div>
</body>
</html>

<%

response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/cgi-bin/itemsandmonsters.mdb")
Conn.Open DSN

strSQL = "Insert into tbl_monsters ("

strSQL = strSQL & "[name], "                    // 1
strSQL = strSQL & "location, "                    // 2
strSQL = strSQL & "[level], "                    // 3
strSQL = strSQL & "member, "                    // 4
strSQL = strSQL & "hits, "                    // 5
strSQL = strSQL & "loot_common, "                // 6
strSQL = strSQL & "loot_rare, "                    // 7
strSQL = strSQL & "loot_permanent, "                // 8
strSQL = strSQL & "examine, "                    // 9
strSQL = strSQL & "agressive, "                    // 10
strSQL = strSQL & "quest) "                    // 11

strSQL = strSQL & "values('"

strSQL = strSQL & Request.Form("strname") & "','"        // 1
strSQL = strSQL & Request.Form("strlocation") & "','"        // 2
strSQL = strSQL & Request.Form("strlevel") & "','"        // 3
strSQL = strSQL & Request.Form("strmember") & "','"        // 4
strSQL = strSQL & Request.Form("strhits") & "','"        // 5
strSQL = strSQL & Request.Form("strloot_common") & "','"    // 6
strSQL = strSQL & Request.Form("strloot_rare") & "','"        // 7
strSQL = strSQL & Request.Form("strloot_permanent") & "','"    // 8
strSQL = strSQL & Request.Form("strexamine") & "','"        // 9
strSQL = strSQL & Request.Form("stragressive") & "','"        // 10
strSQL = strSQL & Request.Form("strquest") & "')"        // 11

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>


Conn.Close

%>
Avatar billede cronck Nybegynder
16. april 2004 - 15:59 #17
spottede lige at Con.Close står 2 gange...
Avatar billede cronck Nybegynder
16. april 2004 - 16:00 #18
Men det giver stadig samme fejl..
Avatar billede cronck Nybegynder
16. april 2004 - 16:08 #19
Kan en af jer ikk lave det helt så det virker..?
Jeg smutter 1 times tid...
Avatar billede kimovitch Nybegynder
16. april 2004 - 16:12 #20
Hej Cronck
Du bruger javascript udkommentering i en VBScript-blok...det kommer i hvert fald ikke til at virke...
M.v.h.
Kim

strSQL = strSQL & Request.Form("strname") & "','"        // 1
Avatar billede tzag_dk Nybegynder
16. april 2004 - 16:16 #21
kimovitch >>

Det har ikke noget med det at gøre! :-)
Avatar billede thesurfer Nybegynder
16. april 2004 - 16:19 #22
kimovitch> godt spottet :-)
Kommentering i VBScript sker med: '

Eksempel:
strSQL = strSQL & "[name], "                    ' 1


mht fejlen "General error Unable to open registry key...": Det betyder at den ikke kan finde database-filen (mdb-filen)

Den henviser til dette: Server.MapPath("/cgi-bin/itemsandmonsters.mdb")

- Har du flyttet database filen, eller ændret "/cgi-bin/itemsandmonsters.mdb"?
- Har du omdøbt database filen?
Avatar billede thesurfer Nybegynder
16. april 2004 - 16:21 #23
mht reserverede ord:
"ACC2000: Reserved Words in Microsoft Access" - http://support.microsoft.com:80/support/kb/articles/Q209/1/87.ASP
Avatar billede thesurfer Nybegynder
16. april 2004 - 16:22 #24
eagleeye> Det her er jo lige noget for dig.. http://www.eksperten.dk/spm/489633 :-)
Avatar billede tzag_dk Nybegynder
16. april 2004 - 16:31 #25
kimovitch >>
Sorry... Nu kan jeg godt se det. Jeg troede at det var i request.form du mente :-) hehe
Avatar billede cronck Nybegynder
16. april 2004 - 16:56 #26
Nu får jeg fejlen:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/cronck/add_monster_handler.asp, line 102

------------------------------------------

Filen ser således ud:
<html>
<head>
<title>RSFever</title>
<LINK href="style.css" type=text/css rel=stylesheet>
</head>
<body bgcolor="#000000" text="#FFFFFF" link="#008000" vlink="#008000" alink="#008000">
<center><font size="5">Monster Added!</font></center>
<div align="center">
  <center>
<table border="0">
  <tr>
    <td>Monster Name:</td>
    <td><%=Request.Form("strname")%></td>
  </tr>
  <tr>
    <td>Location</td>
    <td><%=Request.Form("strlocation")%></td>
  </tr>
  <tr>
    <td>Level</td>
    <td><%=Request.Form("strlevel")%></td>
  </tr>
  <tr>
    <td>Members only?</td>
    <td><%=Request.Form("strmember")%></td>
  </tr>
  <tr>
    <td>Hits</td>
    <td><%=Request.Form("strhits")%></td>
  </tr>
  <tr>
    <td>Loot (Common)</td>
    <td><%=Request.Form("strloot_common")%></td>
  </tr>
  <tr>
    <td>Loot (Rare)</td>
    <td><%=Request.Form("strloot_rare")%></td>
  </tr>
  <tr>
    <td>Loot (Always)</td>
    <td><%=Request.Form("strloot_permanent")%></td>
  </tr>
  <tr>
    <td>When examine it says:</td>
    <td><%=Request.Form("strexamine")%></td>
  </tr>
  <tr>
    <td>Agressive?</td>
    <td><%=Request.Form("stragressive")%></td>
  </tr>
  <tr>
    <td>Type (Animal, Giant etc.)</td>
    <td><%=Request.Form("strtype")%></td>
  </tr>
  <tr>
    <td>Quest Monster</td>
    <td><%=Request.Form("strquest")%></td>
  </tr>
</table>
  </center>
</div>
</body>
</html>

<%

response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("cgi-bin/itemsandmonsters.mdb")
Conn.Open DSN

strSQL = "Insert into tbl_monsters ("

strSQL = strSQL & "[name], "                    ' 1
strSQL = strSQL & "location, "                    ' 2
strSQL = strSQL & "[level], "                    ' 3
strSQL = strSQL & "member, "                    ' 4
strSQL = strSQL & "hits, "                    ' 5
strSQL = strSQL & "loot_common, "                ' 6
strSQL = strSQL & "loot_rare, "                    ' 7
strSQL = strSQL & "loot_permanent, "                ' 8
strSQL = strSQL & "examine, "                    ' 9
strSQL = strSQL & "agressive, "                    ' 10
strSQL = strSQL & "quest) "                    ' 11

strSQL = strSQL & "values('"

strSQL = strSQL & Request.Form("strname") & "','"        ' 1
strSQL = strSQL & Request.Form("strlocation") & "','"        ' 2
strSQL = strSQL & Request.Form("strlevel") & "','"        ' 3
strSQL = strSQL & Request.Form("strmember") & "','"        ' 4
strSQL = strSQL & Request.Form("strhits") & "','"        ' 5
strSQL = strSQL & Request.Form("strloot_common") & "','"    ' 6
strSQL = strSQL & Request.Form("strloot_rare") & "','"        ' 7
strSQL = strSQL & Request.Form("strloot_permanent") & "','"    ' 8
strSQL = strSQL & Request.Form("strexamine") & "','"        ' 9
strSQL = strSQL & Request.Form("stragressive") & "','"        ' 10
strSQL = strSQL & Request.Form("strquest") & "')"        ' 11

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>
Avatar billede kimovitch Nybegynder
16. april 2004 - 17:02 #27
Kan du ikke lige fortælle hvad datatypen er på de forskellige kolonner i databasen?
Avatar billede thesurfer Nybegynder
16. april 2004 - 17:02 #28
mht fejlen "Data type mismatch in criteria expression.": Den kommer når man prøver på at sætte en værdi, ind i et tekst felt, uden at bruger ' tegn til at omkredse værdien.
Omvendt, så kommer den også hvis man omkredser en tal-værdi.

Med andre ord:
Tal-felt: værdien må *ikke* omkredses af ' tegn (eksempel - rigtigt: 1 .. forkert: '1')
Tekst-felt: værdien *skal* omkredses af ' tegn (eksempel - rigtigt: 'noget' .. forkert: noget)
Avatar billede cronck Nybegynder
16. april 2004 - 17:03 #29
kimovitch, hvis du henter .rar filen, kan du selv se det.. :D
Avatar billede cronck Nybegynder
16. april 2004 - 17:07 #30
de formularer som kun indeholder tal er: strlevel og strhits...
Men, data-typen i DB'en er lavet til tekst, så den burde være ligeglad?
Avatar billede eagleeye Praktikant
16. april 2004 - 17:14 #31
Prøv for test at tilføje et par linjer som udskriver din SQL sætning som altid er en god ide også. Prøv evt. at vise den her, så kan vi måske bedre se hvad der mangler.

Så ret dennelinje:

Conn.Execute(strSQL)

Til disse:

response.write strSQL
response.end
Conn.Execute(strSQL)
Avatar billede thesurfer Nybegynder
16. april 2004 - 17:15 #32
Hvis den ikke virker med "'" & request.form("strlevel") & "'", prøv med CStr(request.form("strlevel"))

CStr: omdanner en værdi til en streng.
Avatar billede kimovitch Nybegynder
16. april 2004 - 17:20 #33
Har rettet inputtet til ja/nej felterne
Dette virker hos mig:

<%
response.buffer = true

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("cgi-bin/itemsandmonsters.mdb")
Conn.Open DSN

strSQL = "Insert into tbl_monsters ("

strSQL = strSQL & "[name], "                    ' 1
strSQL = strSQL & "location, "                    ' 2
strSQL = strSQL & "[level], "                    ' 3
strSQL = strSQL & "member, "                    ' 4
strSQL = strSQL & "hits, "                    ' 5
strSQL = strSQL & "loot_common, "                ' 6
strSQL = strSQL & "loot_rare, "                    ' 7
strSQL = strSQL & "loot_permanent, "                ' 8
strSQL = strSQL & "examine, "                    ' 9
strSQL = strSQL & "agressive, "                    ' 10
strSQL = strSQL & "quest) "                    ' 11

strSQL = strSQL & "values('"

strSQL = strSQL & Request.Form("strname") & "','"        ' 1
strSQL = strSQL & Request.Form("strlocation") & "','"        ' 2
strSQL = strSQL & Request.Form("strlevel") & "',"        ' 3
strSQL = strSQL & Request.Form("strmember") & ",'"        ' 4
strSQL = strSQL & Request.Form("strhits") & "','"        ' 5
strSQL = strSQL & Request.Form("strloot_common") & "','"    ' 6
strSQL = strSQL & Request.Form("strloot_rare") & "','"        ' 7
strSQL = strSQL & Request.Form("strloot_permanent") & "','"    ' 8
strSQL = strSQL & Request.Form("strexamine") & "',"        ' 9
strSQL = strSQL & Request.Form("stragressive") & ","        ' 10
strSQL = strSQL & Request.Form("strquest") & ")"        ' 11

Conn.Execute(strSQL)

Conn.Close
Set Conn = Nothing
%>
Avatar billede cronck Nybegynder
16. april 2004 - 17:30 #34
Var det ja/nej felterne der lavede alle disse problemer!?
Avatar billede eagleeye Praktikant
16. april 2004 - 17:36 #35
Har du en Ja/Nej kolonne. Ja det kan drille lidt da man ikke bruger ' omkring en ja/nej kolonne.
Avatar billede kimovitch Nybegynder
16. april 2004 - 17:37 #36
Det var en kombination af at du havde brugt reserverede ord til kolonne-navne og at du havde apostroffer omkring ja/nej værdierne.
Avatar billede cronck Nybegynder
16. april 2004 - 17:44 #37
ok... Takker tusinde gange for hjælpen.. Vil du ha' point? så indsend svar... :D
Avatar billede eagleeye Praktikant
16. april 2004 - 17:55 #38
Nu vi nogle stykker som har hjulpet så hvem mener du?
men her et svar fra mig, hvis ikke det var mig så bare afvis.
Avatar billede kimovitch Nybegynder
16. april 2004 - 18:05 #39
Og her er et fra mig... :o)
Avatar billede thesurfer Nybegynder
16. april 2004 - 19:11 #40
Ingen fra mig ;-)
Avatar billede cronck Nybegynder
16. april 2004 - 20:04 #41
Well... I begge har hjulpet en hel del, så jeg splitter dem... ;-)
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