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
Annonceindlæg fra XFlow
11. september 2004 - 15:16
#1
det er nok denne sætning der er noget galt med strSQL = strSQL & "rs("id") )"
11. september 2004 - 15:18
#2
Ja der skal stå hvilket kolonne navn det skal ind i eks: strSQL = strSQL & "id)"
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.
11. september 2004 - 15:27
#4
Så det sådan her: strSQL = strSQL & rs("id") & ")"
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
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 %>
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')"
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)
11. september 2004 - 15:35
#9
strSQL = strSQL & "');" Conn.Execute(strSQL) %> <% ' Gå til næste Record i rs rs.MoveNext
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 :)
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.
11. september 2004 - 15:43
#12
det bliver 3 forskelige poster med forskelligt ID nr
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)
11. september 2004 - 15:46
#14
>>det bliver 3 forskelige poster med forskelligt ID nr Ja det gør det.
11. september 2004 - 15:48
#15
jeg prøver lige og lægge det ind og se hvad der sker
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 %>
11. september 2004 - 16:00
#17
jo det er det.
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
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)
Kurser inden for grundlæggende programmering