Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:13 Der er 18 kommentarer og
1 løsning

skrive ´ned i database med INSERT INTO

Jeg vil gerne have at den skriver værdierne fra session(rs("id")) ned i tabellen Svar.


Do

TmpSvar = "Svar" & rs("id") & "mulighed1"
session(rs("id")) = replace(Request.Form(TmpSvar),"'","''")
TppSvar = rs("id") %>
<%
strSQL = "INSERT INTO Svar ("
       
      strSQL = strSQL & "rs("id") )"

            strSQL = strSQL & " values ( "

      strSQL = strSQL & "'" & session(rs("id"))
            strSQL = strSQL & "');"
%>


<%  ' Gå til næste Record i rs
  rs.MoveNext
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:16 #1
det er nok denne sætning der er noget galt med
strSQL = strSQL & "rs("id") )"
Avatar billede eagleeye Praktikant
11. september 2004 - 15:18 #2
Ja der skal stå hvilket kolonne navn det skal ind i eks:

strSQL = strSQL & "id)"
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:26 #3
første kolonne hedder 1
anden kolonne hedder 2 osv
det var derfor jeg ville bruge rs("id")
altså så første gang den køre igennem loopet skriver den session(rs("id")) ned i kolonne 1.
Avatar billede eagleeye Praktikant
11. september 2004 - 15:27 #4
Så det sådan her:

strSQL = strSQL & rs("id") & ")"
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:29 #5
tabellen Svar
har cellerne id, 1, 2, 3
så først skulle den udfylde celle 1 bagefter udfylde celle 2 osv
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:33 #6
den har ikke skrivet noget ned i tabellen Svar :
sciptet ser sådanb her ud :

<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("./db/db.mdb")
Conn.Open DSN
' SQL forespørgsel


strSQL = "Select * from sp"


' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do

TmpSvar = "Svar" & rs("id") & "mulighed1"
session(rs("id")) = replace(Request.Form(TmpSvar),"'","''") %>

<%
strSQL = "INSERT INTO Svar ("
       
    strSQL = strSQL & rs("id") & ")"

            strSQL = strSQL & " values ( "

      strSQL = strSQL & "'" & session(rs("id"))
            strSQL = strSQL & "');"
%>


<%  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)

Loop While Not rs.EOF


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing  %>
Avatar billede eagleeye Praktikant
11. september 2004 - 15:33 #7
Hvis du først indsætter med INSERT INTO i celle 1, og så vil indsætte  i celle 2 så skal man bruge en UPDATE..

Normalt sætte man ind i alle kolonner på en gang, smat ID er sikkert en autonummer kolonne så den skal ikke med:

"INSERT INTO svar (1,2,3) VALUES ('a','b','c')"
Avatar billede eagleeye Praktikant
11. september 2004 - 15:34 #8
Det kræver også du Execute din SQL sætning, så prøv at tilføje sådan en linje:

Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
11. september 2004 - 15:35 #9
strSQL = strSQL & "');"
Conn.Execute(strSQL)

%>


<%  ' Gå til næste Record i rs
  rs.MoveNext
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:40 #10
ja ID er et autonummer kolonne, meningen var også at tabellen ikke viste på forhånd ikke viste hvor mange celler der var i tabellen med oprettede dem der var brug for..

men du siger at man skal indføre værdierne på engang :)
Avatar billede eagleeye Praktikant
11. september 2004 - 15:42 #11
hvis du gør sådan her:
INSERT INTO Svar (1) values ('a')
INSERT INTO Svar (2) values ('b')
INSERT INTO Svar (3) values ('c')

bliver det 3 forksellige poster du får.
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:43 #12
det bliver 3 forskelige poster med forskelligt ID nr
Avatar billede eagleeye Praktikant
11. september 2004 - 15:45 #13
Men du kan stad gør det hvis du lave lidt om i kode :



strKol =""
strWHERE =""
Do

  TmpSvar = "Svar" & rs("id") & "mulighed1"
  session(rs("id")) = replace(Request.Form(TmpSvar),"'","''")
  strKol = strKol & "," & rs("id")   
  strWHERE = strWHERE & "," session(rs("id"))
%>
<%  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)

Loop While Not rs.EOF
strKol = mid(strKol,2)
strWHERE = mid(strWHERE,2)

strSQL = "insert into svar (" & strKol & ") values (" & strWHERE & ")"
Conn.Execute(strSQL)
Avatar billede eagleeye Praktikant
11. september 2004 - 15:46 #14
>>det bliver 3 forskelige poster med forskelligt ID nr
Ja det gør det.
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:48 #15
jeg prøver lige og lægge det ind og se hvad der sker
Avatar billede jacobs1 Nybegynder
11. september 2004 - 15:56 #16
er det ikke lettere at lægge det hele ind på samme tid, som du sagde før?

altså sådan her:
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("./db/db.mdb")
Conn.Open DSN
' SQL forespørgsel


strSQL = "Select * from sp"


' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do

TmpSvar = "Svar" & rs("id") & "mulighed1"
session(rs("id")) = replace(Request.Form(TmpSvar),"'","''") %>




<%  ' Gå til næste Record i rs

  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)

Loop While Not rs.EOF



      strSQL = "INSERT INTO Svar ("
       
            strSQL = strSQL & "1, "
            strSQL = strSQL & "2, "
      strSQL = strSQL & "3 )"

            strSQL = strSQL & " values ( "
      strSQL = strSQL & "'" & session("1") & "', "
            strSQL = strSQL & "'" & session("2") & "', "

      strSQL = strSQL & "'" & session("3")
            strSQL = strSQL & "');"
           
            set rs = Conn.Execute(strSQL)

' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing  %>
Avatar billede eagleeye Praktikant
11. september 2004 - 16:00 #17
jo det er det.
Avatar billede jacobs1 Nybegynder
11. september 2004 - 16:05 #18
vil du have nogle point, og tak for hjælpen..
lige hurtig en anden ting - skal man oprette alle cellerne på forhånd i databasen eller kan man oprette en ny celler i med kode
Avatar billede eagleeye Praktikant
11. september 2004 - 16:10 #19
Ok ;)

ja man kan tilføje flere fra koden også med SQL sådan her:

  SQL = "ALTER TABLE tabelnavn ADD kolonnenavn INTEGER"
  Conn.Execute(SQL)
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