Just nu i M3-nätverket
Gå till innehåll

Knepig databaskoppling... eller så!


Coffer

Rekommendera Poster

Hejsan!

 

Hittills har jag haft ett antal rätt så enkla problem som folk på finurliga sätt hjälpt mig att lösa, men nu har jag sprungit på ett problem som jag inte alls har en aning om hur jag skall lösa.

 

Jag har gjort ett databassystem som gör det möjligt att lista alla filmer, musikskivor och böcker jag har i min ägo. Jag vet sedan tidigare tester att funktionen för att lagra information i databasen fungerar. Men nu har jag lagt till en liten funktion som gör det möjligt att sortera listan under kategorin "film" efter format på filmen, det vill säga, DVD, DV, osv.

 

Den funktionen fungerar alldeles utmärkt, men i och med att den funktionen aktiverats, så går det inte längre att spara ny information i databasen.

 

Själva kopplingen för att sortera i databasen ser ut som följer:

 

Set DBFilm = Server.CreateObject("ADODB.Recordset")

 

If Request.Querystring("sort") = "sortbyALL" Then

Showmovie = "SELECT * FROM Film ORDER BY ID ASC"

ElseIf Request.QueryString("sort") = "sortbyDV" Then

Showmovie = "SELECT * FROM Film WHERE Kategori = 'DV' ORDER BY ID ASC"

ElseIf Request.QueryString("sort") = "sortbyDVD" Then

Showmovie = "SELECT * FROM Film WHERE Kategori = 'DVD' ORDER BY ID ASC"

ElseIf Request.QueryString("sort") = "sortbyS-VHS" Then

Showmovie = "SELECT * FROM Film WHERE Kategori = 'S-VHS' ORDER BY ID ASC"

ElseIf Request.QueryString("sort") = "sortbyVHS" Then

Showmovie = "SELECT * FROM Film WHERE Kategori = 'VHS' ORDER BY ID ASC"

End If

 

DBFilm.Open Showmovie, Connect, adOpenStatic, adLockOptimistic

 

Funktionen för att skicka information ser ut som följer:

 

If Request.QueryString("action") = "savemovie" Then

Savemovie = "SELECT * FROM Film"

 

DBFilm.Open Savemovie, Connect, adOpenStatic, adLockOptimistic

 

DBFilm.AddNew

DBFilm("Titel") = Request.Form("strtitlemovie")

DBFilm("Beskrivning") = Request.Form("strdescmovie")

DBFilm("Betyg") = Request.Form("strgrademovie")

DBFilm("Kategori") = Request.Form("strcatmovie")

 

If Request.Form("strstatmovie") <> "" Then

 

DBFilm("Status") = Request.Form("strstatmovie")

 

Else

 

DBFilm("Status") = "Nej"

 

End If

 

DBFilm.Update

 

Response.Redirect "addressen till sidan.asp?cat=movie&sort=sortbyALL"

 

DBFilm.Close

 

End If

 

När man försöker att spara så möts man av följande felmeddelande:

 

ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

 

adressen till sidan.asp, line 172

 

Detta motsvarar följande rad som hittas efter sorteringsfunktionen:

 

DBFilm.Open Showmovie, Connect, adOpenStatic, adLockOptimistic

 

Filen adovbs.inc finns inkluderad i kodens huvud.

 

Var ligger felet och hur kommer jag runt det?

 

MVH

// Kristofer

Länk till kommentar
Dela på andra webbplatser

Är du säker på att du inte kan spara saker i databasen? Som jag fattar det är det eftera tt du lagt in informationen och gjort din redirect till sidan.asp?cat=movie&sort=sortbyALL som felet uppstår. Alltså är problemet med den funktionen som du säger funkar?!

 

Kan du inte skriva ut din SQL-sats och se om den är felaktig på något sätt?

response.write Showmovie

Verkar ju iofs bero på dina andra argument (adOpenStatic, adLockOptimistic) Men du säger ju att du har adovbs.inc i headern så det verkar skumt.

 

Testa att lägga följande överst på sidan istället för adovbs.inc:

<!--METADATA TYPE="typelib" FILE="C:\Program Files\Common Files\System\ado\msado15.dll"-->

 

Sökvägen kan skilja sig åt lite mellan olika språkversioner på servern.

 

/Niklas

 

Länk till kommentar
Dela på andra webbplatser

Hejsan... det hjälpte inte. Filen...

 

<!--METADATA TYPE="typelib" FILE="C:\Program Files\Common Files\System\ado\msado15.dll"-->

 

fungerade heller inte. =( Jag håller med om att felet måste ligga någonstans i redirect... jag är säker på att det inte går att spara. Det gick innan jag lade in sorteringsfunktionen, men nu har den tvärdött. Istället får jag upp felmeddelandet som jag nämnde. Men hur skall jag skriva redirect-koden för att den skall hitta här i SQL-satsen?

 

// Kristofer

 

Länk till kommentar
Dela på andra webbplatser

Lägg in hela koden så ska vi se om det går att hitta något klurigt.

 

Framförallt skulle det vara intressant att se formuläret som skickar data till lägg till funktionen. Du ska ju ha action="sidan.asp?action=savemovie" där bland annat. Det kan ju vara så att du när du lagt till funktioner (på samma sida antar jag) att du missat någon

elseif request.querystring("action") = ...

så att när du skickar formuläret så kommer det inte till rätt del av sidan.

 

/Niklas

[inlägget ändrat 2002-10-22 00:25:25 av ns]

Länk till kommentar
Dela på andra webbplatser

Hur skickar du infon till denna asp-sidan? Jag hoppas iallafall du skickar all info i själva "adresen" eftersom du använder Request.Querystring.

 

Du har kontrollerat att du får ett värde från Request.Querystring("sort")?

 

Redigerat: Ojsan, upptäckte att du hade skickat infon i själva adressen. Men kolla iallafall så att du får med ett värde från Request.Querystring och att något av värdena i din if sats funkar.

För är det inte något som matchar i din if-sats så kommer du att få ett fel. Mitt tips är att du lägger till ett default värde (else-sats) i din if-sats.

 

/MVH Muad’dib

Poäng för bra inlägg mottages...

-=*Socialt liv? Var laddar man ner det?*=-

 

 

[inlägget ändrat 2002-10-22 16:07:33 av Muaddib]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...