Avatar billede ducks Nybegynder
24. juli 2004 - 13:40 Der er 12 kommentarer og
1 løsning

Problemer med at udskrive en record fra databasen

Når jeg prøver at udskrive et felt fra databasen der er tomt, får jeg følg fejl:
  Microsoft OLE DB Provider for ODBC Drivers error '80020009'

  Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

  /Brugere/Profil.asp, line 0

Jeg prøver at hente recorden med <%=RS("felt")%> og åbner databasen med:
  Set RS = Server.CreateObject("ADODB.Recordset")
  SQL = "Select * FROM brugere Where ID = "& Request.QueryString("ID")
  RS.Open SQL, Conn, 3, 3
ID er Unique så det kan ikke være fordi der er 2.

Feltet jeg prøver at udskrive fra, er af typen "text" og kan godt være null. Jeg bruger MySQL.

Jeg er lidt fortabt, da jeg synes jeg har gjort alt. Og det kan godt være at der er noget jeg skal forklare lidt bedre?
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 14:12 #1
Skriv den store til sidst, OG tag dem i rækkefølge

  SELECT felt1,felt2,felt3,felt FROM ...

Det er netop fordi det er en "stor" felttype
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 14:14 #2
tag dem i rækkefølge:

  rs("felt1")
  rs("felt2")
  rs("felt3")
  rs("felt")

og ikke noget med at blande dem.
Avatar billede ducks Nybegynder
24. juli 2004 - 15:18 #3
Nu tager jeg den med Text til sidst, men så får jeg:

error '80020009'
Exception occurred.

Når jeg vil udskrive den.
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 15:20 #4
Vis hvad du gør.
Avatar billede ducks Nybegynder
24. juli 2004 - 15:26 #5
brugernavn er varchar
ID er int
email er varchar
info er text

Set RS = Server.CreateObject("ADODB.Recordset")
SQL = "Select brugernavn,ID,email,info Where ID = "& Request.QueryString("ID")
RS.Open SQL, Conn, 3, 3

<%=RS("brugernavn")%>
<%=RS("ID")%>
<%=RS("email")%>
<%
  If RS("info") = "" Or isNull(RS("info")) Then
%>
    Ingen info.
<%
  Else
    Response.Write(RS("info"))
  End If
%>
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 15:32 #6
Du må heller ikke spørge på et stort felt mere end een gang.

  a = rs("info")

og brug så "a"
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 15:33 #7
(alle disse "regler" afhænger ganske vist af din driver, men for portabilitetens
skyld bør man altid overholde dem)
Avatar billede ducks Nybegynder
24. juli 2004 - 15:38 #8
Hvis jeg retter det til

<%
  a = RS("info")
  If a = "" Or isNull(a) Then
%>
    Ingen info.
<%
  Else
    Response.Write(a)
  End If
%>

Får jeg

  Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

  Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

Sikkert fordi RS("info") ikke indeholder noget? (Den laver fejl i den linie med a = RS("info")
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 15:50 #9
Ja, det er synd du skal nøjes med den gamle teknologi i "Classic ASP".
Jeg kan ikke længere huske hvad man skal. Måske
a = "" & RS("info")
Så skal du ikke spørge på null efterfølgende
Avatar billede ducks Nybegynder
24. juli 2004 - 15:54 #10
Den gamle teknologi? Du mener at jeg ikke bruger ASP.NET?

Det virkede ikke :(
Avatar billede ducks Nybegynder
24. juli 2004 - 16:02 #11
Okay, jeg kan få det til at virke, hvis jeg sætter RS("info") til at være " " i databasen, hvis en bruger prøver at slette alt indhold. Altså minimum " "
Avatar billede erikjacobsen Ekspert
24. juli 2004 - 20:09 #12
Jah, ASP er vel efterhånden kun for arkæologisk interesserede - alt andet er bedre ;)

Du kan muligvis lave en IF i din SQL-sætning så du afleverer en tom streng, hvis den er null.
Avatar billede ducks Nybegynder
30. juli 2004 - 16:01 #13
.
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