27. december 2000 - 09:22Der er
17 kommentarer og 1 løsning
record vises ikke, hvorfor ?????
Jeg har følgende stump kode. i basen findes 1 post, et ubesvaret spm., alligevel får jeg hele tiden sætningen \"Der er ingen ubesvarede spørgsmål\" udskrevet. Dog, fjerner jeg ekspertsvar=\'\' så viser den posten som den skal, der er altså forbindelse til basen så hvorfor f***** vil den ikke vise den rigtigt ? <% if session(\"godkendt\") = true then set rs = server.createobject(\"ADODB.recordset\") sql = \"Select * from kassen Where (brugerspm<>\'\' AND EkspertSvar=\'\')\" rs.open sql, brevkasse if rs.bof or rs.eof then response.write \"<h3>Der er ingen ubesvarede spørgsmål</h3>\" else ....... mere kode. %>
Desvære, jeg får stadig ikke vist posten med det ubesvarede spm. både \"brugerspm\" og \"ekspertsvar\" er oprettet som Notat i databasen og ekspertsvar har fået attributterne tillad nullængde = ja og obligatorisk = nej hele kode til dette afsnit ser således ud: <% DBPath = \"DBQ=\" & server.mappath(\"brevkasse.mdb\") brevkasse = \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & DBPath
case \"admin\" if session(\"godkendt\") = true then set rs = server.createobject(\"ADODB.recordset\") sql = \"Select * from kassen Where (brugerspm<>\'\' AND EkspertSvar=\'\')\" rs.open sql, brevkasse, 3,3 if rs.eof then response.write \"<h3>Der er ingen ubesvarede spørgsmål</h3>\" else response.write \"<form action=\'opdate.asp\' method=\'post\'>\" response.write \"<input type=\'hidden\' name=\'ekspert\' value=\'\" & request(\"ekspert\") & \"\'>\" response.write \"<Table border=0>\" while not rs.eof response.write \"<input type=\'hidden\' name=\'id\' value=\'\" & rs(\"ID\") & \"\'>\" response.write \"<tr><td>Spørgsmål</td><td>\" & rs(\"Brugerspm\") & \"</td></tr>\" response.write \"<tr><td>Stillet af</td><td><a href=\'mailto:\" & rs(\"brugeremail\") &\"\'>\" & rs(\"brugernavn\") & \"</a></td></tr>\" response.write \"<tr><td>Svar:</td><td><textarea name=\'svar\' col=\'15\' row=\'10\'></textarea></td></tr>\" rs.movenext wend response.write \"<tr><td> </td><td><input type=\'submit\' value=\'send svar\'></td></tr>\" response.write \"</table></form>\" end if rs.close set rs=nothing else response.write \"<h3>Enten har du ikke adgang til denne side, eller også har du været inaktiv for længe.</h3>\" end if %>
Så må vi lige sikre os at tomme strenge og null-værdier opfattes ens - hvilket jeg ikke tror. Står der der Null i din database i de felter, hvor du ikke har noget stående?
Uha, hvorfor roder jeg mig også ud i den slags spørgsmål om Access, som jeg egentlig ikke har forstand på ;-) Jeg gætter som sagt på, at du har et lille problem med tomme strenge og udefinerede felter, men jeg har ikke tid til at lave en afprøvning. TDAUGAARD - hvor eeer du?
Jeg kan ikke lige teste, da min maskine går i ged når jeg prøver din kode mod en test Access base, men det du evt. kan gøre for at komme udenom Null problematikken, er at sætte en standard værdi i dit EkspertSvar f.eks. none og derefter ændre din TilladNullVærdi attribut til Nej. Så bliver du fri for at tjecke mod \'\' eller Null så kan du bruge denne kode : <% DBPath = \"DBQ=\" & server.mappath(\"brevkasse.mdb\") brevkasse = \"DRIVER={Microsoft Access Driver (*.mdb)}; \" & DBPath
case \"admin\" if session(\"godkendt\") = true then set rs = server.createobject(\"ADODB.recordset\") sql = \"Select * from kassen Where (brugerspm<>\'\' AND EkspertSvar=\'none\')\" rs.open sql, brevkasse, 3,3 if rs.eof then response.write \"<h3>Der er ingen ubesvarede spørgsmål</h3>\" else response.write \"<form action=\'opdate.asp\' method=\'post\'>\" response.write \"<input type=\'hidden\' name=\'ekspert\' value=\'\" & request(\"ekspert\") & \"\'>\" response.write \"<Table border=0>\" while not rs.eof response.write \"<input type=\'hidden\' name=\'id\' value=\'\" & rs(\"ID\") & \"\'>\" response.write \"<tr><td>Spørgsmål</td><td>\" & rs(\"Brugerspm\") & \"</td></tr>\" response.write \"<tr><td>Stillet af</td><td><a href=\'mailto:\" & rs(\"brugeremail\") &\"\'>\" & rs(\"brugernavn\") & \"</a></td></tr>\" response.write \"<tr><td>Svar:</td><td><textarea name=\'svar\' col=\'15\' row=\'10\'></textarea></td></tr>\" rs.movenext wend response.write \"<tr><td> </td><td><input type=\'submit\' value=\'send svar\'></td></tr>\" response.write \"</table></form>\" end if rs.close set rs=nothing else response.write \"<h3>Enten har du ikke adgang til denne side, eller også har du været inaktiv for længe.</h3>\" end if %>
Naturligvis, hvorfor har jeg dog ikke tænkt på det? Men det irriterer(?) mig stadig at det andet ikke virker. Hvis jeg fjerner ekspertsvar=\'\' skriver den jo posten som den skal og hvis jeg så udskriver henholdsvis værdi og længde af rs(\"ekspertsvar\"), giver det \'\' og ingen længde. Se selv på http://www.vordingborg.dk/john/admin.asp login som admin admin
Jamen det er klart at det ikke virker, det er fordi du sammenligner en streng med længden 0 med Null og det er to meget forskellige ting. Hvis du udelader din ekspertsvar og laver et tjeck for Null f.eks. sådan her : *************************************************** if rs.eof then if IsNull(rs(\"EkspertSvar\")) Then response.write \"Denne streng er ikke eksisterende, altså Null\" else response.write \"Joh denne streng findes se selv : \" & rs(\"EkspertSvar\") end if ..... Så vil du få \"Denne streng er ikke eksisterende, altså Null\" skrevet på skærmen *************************************************** Det kan sikkert godt lade sig gøre at lave f.eks. et IsNull tjeck inde i din sql men jeg kan ikke huske syntaksen, når det er en Access base, og jeg kan som sagt ikke afprøve det...! Håber det opklarede lidt det du ikke forstod...
P.S. : \'og hvis jeg så udskriver henholdsvis værdi og længde af rs(\"ekspertsvar\"), giver det \'\' og ingen længde.\' -> ingen længe er også tegn på en Null værdi ellers ville længden være 0......
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.