Avatar billede wilweb Nybegynder
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.
Avatar billede wilweb Nybegynder
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
Avatar billede mr.meincke Nybegynder
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
Avatar billede wilweb Nybegynder
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
Avatar billede coltau Juniormester
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.
Avatar billede medions Nybegynder
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

%>
Avatar billede wilweb Nybegynder
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?
Avatar billede medions Nybegynder
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
Avatar billede wilweb Nybegynder
15. februar 2002 - 20:18 #8
jeg prøver lige engang:)
Avatar billede medions Nybegynder
15. februar 2002 - 20:26 #9
Fair nok.. hvadsågo.... ;-)
Avatar billede wilweb Nybegynder
15. februar 2002 - 20:34 #10
jeg er lige nød til at tjekke mine variabler for nu skrives der ikke til DB overhoved!
Avatar billede mr.meincke Nybegynder
15. februar 2002 - 20:38 #11
jeg kom til at bytte om på set rs og rs.close ... sorry
Avatar billede wilweb Nybegynder
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.:)
Avatar billede wilweb Nybegynder
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?
Avatar billede medions Nybegynder
15. februar 2002 - 21:16 #14
Thx 4 poinz!

//>Rune
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