15. februar 2002 - 16:52
Der er
11 kommentarer og 3 løsninger
Problem med skriv til DB
Jeg sender 3 variabler fra en Flash side til min asp fil der skal skrive en record i min database. dato som er en string variabel (indeholder 12-02-2002) navn som er en string variabel (indeholder et navn, pudsigt nok) og til sidst high som skulle være af typen integer 'ASP code--------------- dim strNavn, intHigh, dDato dim DNS, strSQL, rs, Conn dDato = CDate(request.form("dato")) strNavn = request.form("navn") intHigh = request.form("high") 'ini database Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath ("../data/bull2000.mdb") Conn.Open DSN 'skriver til DB strSQL = "Insert into tbl_highscore(dDato, strNavn, intHighscore)" & " Values (dDato, strNavn, intHigh)" Set rs = Conn.Execute(strSQL) 'Luk database Conn.Close Set Conn = Nothing %> er der nogen der kan se hvad jeg gør forkert? jeg får ingen fejl... men der skrives heller ikke.
Annonceindlæg fra Cognizant
AI er ikke problemet. Eksekvering er.
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
15. februar 2002 - 16:53
#1
dDato er af kort dato format i DB strNavn er af typen tekst intHighscore er af tal typen i tabellen tbl_highscore
15. februar 2002 - 17:01
#2
prøv dette istedet: <% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../data/bull2000.mdb") SQL = "SELECT * FROM tbl_highscore" Set rs = Server.CreateObject("ADODB.RecordSet") rs.AddNew rs("dDato") = dDato rs("strNavn") = strNavn rs("intHighscore") = intHighscore rs.Update rs.Close Set rs = nothing %> Det skulle virke (hvis felterne er rigtigt opgivet)... MVH Mr.Meincke
15. februar 2002 - 18:44
#3
jeg har lige hardkodet nogle variabler for at bare teste om der så kan skrives. Det med fører ny fejl '----asp siden------- 'dDato = "12-02-2002" strNavn = "Erik Hansen" intHighscore = "178" 'ini database Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data/bull2000.mdb") SQL = "SELECT * FROM tbl_highscore" Set rs = Server.CreateObject("ADODB.RecordSet") rs.AddNew 'rs("dDato") = dDato rs("strNavn") = strNavn rs("intHighscore") = intHighscore rs.Update response.write dDato & "/" & strNavn & "/" & intHighscore rs.Close Set rs = nothing %> fejlkode: ADODB.Recordset error '800a0e78' Operation is not allowed when the object is closed. /skriv_highscore.asp, line 32 linje 32: rs.AddNew
15. februar 2002 - 19:54
#4
Dit første spørgsmål: Du mangler # omkring dato- tildelingen. At du bruger kort datoformat har intet at sige når du insætter datoer i en tabel. Du skal altid indsætte datoen i formatet: MM-DD-YYYY. Formatet angivet i Access betyder blot hvordan du vil se datoen i Access. Ikke hvordan du skal bruge den i ASP. Problemet med mr.meincke løsning eller din løsning nummer 2 er at du ikke åbner til access-databasen inde du indsætter en ny. Du mangler en linie som denne: RS.Open "select * from tbl_highscore", Conn, 1, 3 ' adOpenKeyset, adLockOptimistic inden du anvender RS.AddNew.
15. februar 2002 - 19:55
#5
----asp siden------- 'dDato = "12-02-2002" strNavn = "Erik Hansen" intHighscore = "178" 'ini database Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data/bull2000.mdb") SQL = "SELECT * FROM tbl_highscore" Set rs = Server.CreateObject("ADODB.RecordSet") rs.AddNew 'rs("dDato") = dDato rs("strNavn") = strNavn rs("intHighscore") = intHighscore rs.Update response.write dDato & "/" & strNavn & "/" & intHighscore Set rs = nothing rs.Close %>
15. februar 2002 - 20:08
#6
coltau :> hvad er det nu lige det betyder at åbne, særligt den med ,Conn, 1, 3 ' adOpenKeyset, adLockOptimistic <% dDato = CDate(request.form("dato")) strNavn = request.form("navn") intHigh = request.form("high") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../data/bull2000.mdb") SQL = "SELECT * FROM tbl_highscore" Set rs = Server.CreateObject("ADODB.RecordSet") RS.Open "select * from tbl_highscore", Conn, 1, 3 rs.AddNew rs("dDato") = #dDato# rs("strNavn") = strNavn rs("intHighscore") = intHighscore rs.Update rs.Close Set rs = nothing %> Ville det virke?
15. februar 2002 - 20:12
#7
dDato = CDate(request.form("dato")) strNavn = request.form("navn") intHigh = request.form("high") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../data/bull2000.mdb") SQL = "SELECT * FROM tbl_highscore" Set rs = Server.CreateObject("ADODB.RecordSet") SQL = "select * from tbl_highscore" rs.Open SQL, Conn, 1, 3 rs.AddNew rs("dDato") = #dDato# rs("strNavn") = strNavn rs("intHighscore") = intHighscore rs.Update rs.Close Set rs = nothing Det her skulle gerne virke! //>Rune
15. februar 2002 - 20:18
#8
jeg prøver lige engang:)
15. februar 2002 - 20:26
#9
Fair nok.. hvadsågo.... ;-)
15. februar 2002 - 20:34
#10
jeg er lige nød til at tjekke mine variabler for nu skrives der ikke til DB overhoved!
15. februar 2002 - 20:38
#11
jeg kom til at bytte om på set rs og rs.close ... sorry
15. februar 2002 - 20:49
#12
medions :> nu får jeg denne fejl! HTTP 500 - Internal server error Internet Explorer mr.meincke :> det er sq da også rigtig.:)
15. februar 2002 - 21:11
#13
Det virker hvis 'DB feltet rs("dDato")' laves om til tekst i databasen, alså når jeg behandler dDato som en string og ikke som en dato. lidt surt dato ryger men jeg kan vel leve med? <% dDato = request.form("dato") strNavn = request.form("navn") intHigh = request.form("high") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("data/bull2000.mdb") SQL = "SELECT * FROM tbl_highscore" Set rs = Server.CreateObject("ADODB.RecordSet") SQL = "select * from tbl_highscore" rs.Open SQL, Conn, 1, 3 rs.AddNew rs("dDato") = dDato rs("strNavn") = strNavn rs("intHighscore") = intHigh rs.Update rs.Close Set rs = nothing %> Er det ok at jeg dele point på medions og coltau, for det var jo deres løsning der næste kom i brug?
15. februar 2002 - 21:16
#14
Thx 4 poinz! //>Rune
Kurser inden for grundlæggende programmering