Avatar billede luzker Nybegynder
19. november 2000 - 15:44 Der er 30 kommentarer og
3 løsninger

Jeg har et problem med Insert Into

Den skriver der er en syntaksfejl i insert into sætningen. Jeg kan ikke finde fejlen! En kop kaffe til den der kan hjælpe!

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRS, strQ, strConn, objRecordset, strQuery

  set objRecordset = Server.CreateObject(\"ADODB.Recordset\")
  set objConn = Server.CreateObject(\"ADODB.Connection\")
  strConn = \"Data Source=Job;User ID=sa;Password=;\"
  objConn.Open strConn

strQ = \"INSERT INTO TJob (Titel, Firmanavn, Adresse, By, Telefon, Start, Timetal, Alder, Løn, Beskrivelse) VALUES \"
strQ = strQ & \"(\'%\" & strTitel & \"%\', \'%\" & strFirmanavn & \"%\', \'%\" & strAdresse & \"%\', \'%\" & strBy & \"%\', \'%\" & strTelefon & \"%\', \'%\" & strStart & \"%\', \'%\" & strTimetal & \"%\', \'%\" & strAlder & \"%\', \'%\" & strBetaling & \"%\', \'%\" & strBeskrivelse & \"%\')\"
objConn.Execute strQ


Dim strTitel, strFirmanavn, strAdresse, strBy, strTelefon, strStart, strTimetal, strAlder
Dim strBetaling, strBeskrivelse

strTitel = Request.QueryString(\"FTitel\")
strFirmanavn = Request.QueryString(\"FFirmanavn\")
strAdresse = Request.QueryString(\"FAdresse\")
strBy = Request.QueryString(\"FBy\")
strTelefon = Request.QueryString(\"FTelefon\")
strStart = Request.QueryString(\"FStart\")
strTimetal = Request.QueryString(\"FTimetal\")
strAlder = Request.QueryString(\"FAlder\")
strBetaling = Request.QueryString(\"FBetaling\")
strBeskrivelse = Request.QueryString(\"FBeskrivelse\")
%>
Avatar billede stigc Nybegynder
19. november 2000 - 15:49 #1
skal dine sql-sætning ligger efter dine request sætninger?
Avatar billede dudal Nybegynder
19. november 2000 - 15:51 #2
Fjern alle % tegn. Dem er der ikke nogen grund til at have.

/Jesper :-)
Avatar billede luzker Nybegynder
19. november 2000 - 15:52 #3
kan du ikke uddybe dit svar
Avatar billede stigc Nybegynder
19. november 2000 - 15:56 #4
du bruger by som er et reserveret ord i SQL!

Brug \"city\" istedet for!
Avatar billede luzker Nybegynder
19. november 2000 - 15:57 #5
OK... Nu ser det sådan ud:

<%
Option Explicit
Response.Expires = 0
Dim objConn, objRS, strQ, strConn, objRecordset, strQuery

  set objRecordset = Server.CreateObject(\"ADODB.Recordset\")
  set objConn = Server.CreateObject(\"ADODB.Connection\")
  strConn = \"Data Source=Job;User ID=sa;Password=;\"
  objConn.Open strConn




Dim strTitel, strFirmanavn, strAdresse, strBy, strTelefon, strStart, strTimetal, strAlder
Dim strBetaling, strBeskrivelse

strTitel = Request.QueryString(\"FTitel\")
strFirmanavn = Request.QueryString(\"FFirmanavn\")
strAdresse = Request.QueryString(\"FAdresse\")
strBy = Request.QueryString(\"FBy\")
strTelefon = Request.QueryString(\"FTelefon\")
strStart = Request.QueryString(\"FStart\")
strTimetal = Request.QueryString(\"FTimetal\")
strAlder = Request.QueryString(\"FAlder\")
strBetaling = Request.QueryString(\"FBetaling\")
strBeskrivelse = Request.QueryString(\"FBeskrivelse\")

strQ = \"INSERT INTO TJob (Titel, Firmanavn, Adresse, By, Telefon, Start, Timetal, Alder, Løn, Beskrivelse) VALUES \"
strQ = strQ & \"(\'\" & strTitel & \"\', \'\" & strFirmanavn & \"\', \'\" & strAdresse & \"\', \'\" & strBy & \"\', \'\" & strTelefon & \"\', \'\" & strStart & \"\', \'\" & strTimetal & \"\', \'\" & strAlder & \"\', \'\" & strBetaling & \"\', \'\" & strBeskrivelse & \"\')\"
objConn.Execute strQ

%>

Men fejlen er den samme...
Avatar billede dudal Nybegynder
19. november 2000 - 15:57 #6
Prøv dette:

<%
Option Explicit
Response.Expires = 0

Dim strTitel, strFirmanavn, strAdresse, strBy, strTelefon, strStart, strTimetal, strAlder
Dim strBetaling, strBeskrivelse

strTitel = Request.QueryString(\"FTitel\")
strFirmanavn = Request.QueryString(\"FFirmanavn\")
strAdresse = Request.QueryString(\"FAdresse\")
strBy = Request.QueryString(\"FBy\")
strTelefon = Request.QueryString(\"FTelefon\")
strStart = Request.QueryString(\"FStart\")
strTimetal = Request.QueryString(\"FTimetal\")
strAlder = Request.QueryString(\"FAlder\")
strBetaling = Request.QueryString(\"FBetaling\")
strBeskrivelse = Request.QueryString(\"FBeskrivelse\")


Dim objConn, objRS, strQ, strConn, objRecordset, strQuery

  set objRecordset = Server.CreateObject(\"ADODB.Recordset\")
  set objConn = Server.CreateObject(\"ADODB.Connection\")
  strConn = \"Data Source=Job;User ID=sa;Password=;\"
  objConn.Open strConn

strQ = \"INSERT INTO TJob (Titel, Firmanavn, Adresse, By, Telefon, Start, Timetal, Alder, Løn, Beskrivelse) VALUES \"
strQ = strQ & \"(\'\" & strTitel & \"\', \'\" & strFirmanavn & \"\', \'\" & strAdresse & \"\', \'\" & strBy & \"\', \'\" & strTelefon & \"\', \'\" & strStart & \"\', \'\" & strTimetal & \"\', \'\" & strAlder & \"\', \'\" & strBetaling & \"\', \'\" & strBeskrivelse & \"\')\"
objConn.Execute strQ



%>

/Jesper
Avatar billede dudal Nybegynder
19. november 2000 - 15:58 #7
Too fast.. :-)

Prøv at skrive Response.Write strQ lige før objconn.Execute og så post den streng her. Så er det lidt nemmere at se.

/Jesper
Avatar billede dudal Nybegynder
19. november 2000 - 15:59 #8
Oh btw. Hvis Telefon er et nummerisk felt må der ikke være \' omkring værdien.
Avatar billede stigc Nybegynder
19. november 2000 - 16:00 #9
Der er \"by\" som du bruger! Det er et reserveret ord og det må ikke benyttes som navn!!!!!!!!!!!!!!!

.--------------------------------------
Avatar billede sp Nybegynder
19. november 2000 - 16:06 #10
En hjælp til at chekke om strengen er korrekt og indholdet af variablerne bliver overført som de skal, kan du slå Execute fra og udskrive strengen

\'objConn.Execute strQ
Response.write strQ


Avatar billede stigc Nybegynder
19. november 2000 - 16:09 #11
Der er ikke noget i vejen med din sql-sætning! Har du byttet om på dine request og sql? Har du udskiftet by med et andet navn, også i din database?

Så skulle det virke!
Avatar billede dudal Nybegynder
19. november 2000 - 16:10 #12
Han kan da også bare bruge [by] så skulle det også virke :-)

/Jesper
Avatar billede luzker Nybegynder
19. november 2000 - 16:11 #13
Ok.. jeg har ændret lidt i skidtet, så det ser sådan her ud:


<%
Option Explicit
Response.Expires = 0

Dim strTitel, strFirmanavn, strAdresse, strCity, strTelefon, strStart, strTimetal, strAlder
Dim strBetaling, strBeskrivelse

strTitel = Request.QueryString(\"FTitel\")
strFirmanavn = Request.QueryString(\"FFirmanavn\")
strAdresse = Request.QueryString(\"FAdresse\")
strCity = Request.QueryString(\"FCity\")
strTelefon = Request.QueryString(\"FTelefon\")
strStart = Request.QueryString(\"FStart\")
strTimetal = Request.QueryString(\"FTimetal\")
strAlder = Request.QueryString(\"FAlder\")
strBetaling = Request.QueryString(\"FBetaling\")
strBeskrivelse = Request.QueryString(\"FBeskrivelse\")


Dim objConn, objRS, strQ, strConn, objRecordset, strQuery

  set objRecordset = Server.CreateObject(\"ADODB.Recordset\")
  set objConn = Server.CreateObject(\"ADODB.Connection\")
  strConn = \"Data Source=Job;User ID=sa;Password=;\"
  objConn.Open strConn

strQ = \"INSERT INTO TJob (Titel, Firmanavn, Adresse, City, Telefon, Start, Timetal, Alder, Betaling, Beskrivelse) VALUES \"
strQ = strQ & \"(\'\" & strTitel & \"\', \'\" & strFirmanavn & \"\', \'\" & strAdresse & \"\', \'\" & strCity & \"\', \'\" & strTelefon & \"\', \'\" & strStart & \"\', \'\" & strTimetal & \"\', \'\" & strAlder & \"\', \'\" & strBetaling & \"\', \'\" & strBeskrivelse & \"\')\"
Response.Write strQ
objConn.Execute strQ



%>


<HTML>
<HEAD>
<TITLE>2</TITLE>
<META NAME=\"Generator\" CONTENT=\"Stone\'s WebWriter 3\">
</HEAD>
<body>

<FORM ACTION=\"default2.asp\" METHOD=\"get\">
<input type=\"text\" name=\"FTitel\" value=\"<%=strTitel%>\">
<input type=\"text\" name=\"FFirmanavn\" value=\"<%=strFirmanavn%>\">
<input type=\"text\" name=\"FAdresse\" value=\"<%=strAdresse%>\">
<input type=\"text\" name=\"FCity\" value=\"<%=strCity%>\">
<input type=\"text\" name=\"FTelefon\" value=\"<%=strTelefon%>\">
<input type=\"text\" name=\"FStart\" value=\"<%=strStart%>\">
<input type=\"text\" name=\"FTimetal\" value=\"<%=strTimetal%>\">
<input type=\"text\" name=\"FAlder\" value=\"<%=strAlder%>\">
<input type=\"text\" name=\"FBetaling\" value=\"<%=strBetaling%>\">
<input type=\"text\" name=\"FBeskrivelse\" value=\"<%=strBeskrivelse%>\">
<input type=\"submit\" name=\"Submit\" value=\"Send\">
</FORM>

Og den brokker sig over:
feltet \"TJob.Titel\" kan ikke have en streng af længden nul
Avatar billede stigc Nybegynder
19. november 2000 - 16:17 #14
Ja den har jho heller ikke noget at putte i!

Lav din form på en anden side, som du submitter til denne her side! Start derefter med først at køre den nye side!
Avatar billede luzker Nybegynder
19. november 2000 - 16:32 #15
nu har jeg flyttet min form til en anden side, men Values er tom, når jeg har sendt...
Avatar billede stigc Nybegynder
19. november 2000 - 16:36 #16
hvad skriver den ud lige inden?

Altså med \"Response.Write strQ\" ?
Avatar billede luzker Nybegynder
19. november 2000 - 16:39 #17
Den skriver:

INSERT INTO TJob (Titel, Firmanavn, Adresse, City, Telefon, Start, Timetal, Alder, Betaling, Beskrivelse) VALUES (\'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\', \'\')
Avatar billede sp Nybegynder
19. november 2000 - 16:39 #18
Response.write strQ viser hvad strengen indeholder som er indhold overført fra variablerne.
Avatar billede stigc Nybegynder
19. november 2000 - 16:40 #19
det er jo ikke godt! Har du fyldt noget i formen på den første side? Der skal være et indhold!
Avatar billede sp Nybegynder
19. november 2000 - 16:42 #20
Ja du skal sætte variablerne til noget bestemt. Det er jo indholdet du skal kunne se.
Avatar billede luzker Nybegynder
19. november 2000 - 16:43 #21
Jeg har tastet noget ind i formen... (bare sådan noget *krimskrams*) !
Avatar billede sp Nybegynder
19. november 2000 - 16:43 #22
Udfylder du input boxene?
Avatar billede luzker Nybegynder
19. november 2000 - 16:44 #23
... altså textfelterne...?
Avatar billede sp Nybegynder
19. november 2000 - 16:46 #24
Request.QueryString(\"FBeskrivelse\")

Det hedder ikke QueryString når det er form.
Men Request eller Request.form er nok.
Det er nok derfor at variablerne ikke bliver overfør.
QueryString bruges til at sende forespørgsler via URL\'s

Avatar billede sp Nybegynder
19. november 2000 - 16:46 #25
Ja input text-felterne;-)
Avatar billede sp Nybegynder
19. november 2000 - 16:47 #26
Altså en af de 2 kan du bruge:
Request(\"FBeskrivelse\")
Request.form(\"FBeskrivelse\")
Avatar billede sp Nybegynder
19. november 2000 - 16:49 #27
Så ved at udskrive strQ, fandt du ud af at strengen faktisk ikke indeholdt noget. Og det var derfor at den brokkede sig over at streng ikke kunne være en Nul-streng...

Logisk nok:)
Avatar billede sp Nybegynder
19. november 2000 - 16:51 #28
Skal du f.eks. bruge
Request.QueryString(\"FBeskrivelse\")
Bliver det overført med URL\'s eks:
default.asp?strBeskrivelse=blablabla
Avatar billede luzker Nybegynder
19. november 2000 - 16:51 #29
... Ok det lysner, men den siger:

[Microsoft][ODBC Microsoft Access-driver] Et indeks eller en primær nøgle kan ikke indeholde en Null-værdi.
Avatar billede sp Nybegynder
19. november 2000 - 16:56 #30
Hvad bruger du en primærnøgle til?
Er den ikke på autonummerereing???
Det må være fordi du ikke indsætter noget som primærnøgle... Det ser det ikkke ud til, så den skal bare på auto!
Avatar billede luzker Nybegynder
19. november 2000 - 16:59 #31
duuh ... den glemte jeg sq i svinget...
Avatar billede luzker Nybegynder
19. november 2000 - 17:01 #32
O yeah!!  Den virker... 
Avatar billede sp Nybegynder
19. november 2000 - 17:07 #33
Jeg bruger tit Response.write til at finde fejl med. Man kan også finde indholdet i variabler og se om det er korrekt. m.v.
Så man faktisk kan se hele vejen igennem scriptet at det hele går som det skal...
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