Avatar billede jmarkling Nybegynder
13. marts 2002 - 00:39 Der er 17 kommentarer og
1 løsning

True og False

Jeg har noget som jeg simpelt hen ikke kan forstå...

Følgende virker... og if betingelsen opfyldes hvis aktiv er false...
Værdien er gemt som en boolean i Databasen(access, Xp, dk)
Når jeg udskriver værdierne fra objRS("aktiv") så skrives de ud som True og False....

<%while(!objRS.EOF){   
    Response.Write(objRS("aktiv"));
    aktiv = objRS("aktiv");
        if(aktiv == false).......%>

Hvorfor vil følgende så ikke virke, den udskriver bare løs....don't care about true og false bare hele moloviten....
<%while(!objRS.EOF){   
    Response.Write(objRS("aktiv"));
    aktiv = objRS("aktiv");
        if(!aktiv).......%>


       
Avatar billede coltau Juniormester
13. marts 2002 - 08:44 #1
Gælder det begge eksempler. ?
Avatar billede jmarkling Nybegynder
13. marts 2002 - 09:19 #2
Første eksempel virker helt fint, men andet eksempel virker ikke...
Det er if betingelsen, den er gal med...
Avatar billede medions Nybegynder
13. marts 2002 - 10:18 #3
<%while(!objRS.EOF){   
    Response.Write(objRS("aktiv"));
    aktiv = objRS("aktiv");
        if(aktiv).......%>
Hmm... prøv at fjerne ! tegnet foran aktiv !

//>Rune
Avatar billede jmarkling Nybegynder
13. marts 2002 - 10:44 #4
Hvis det gøres sker følgende...
Den udskriver alle records fra tabellen, både sande og falske...
Så variablen "aktiv", er som sand uanset hvad objRS("aktiv") er...
Avatar billede jmarkling Nybegynder
13. marts 2002 - 10:45 #5
PS, det er jo meningen at den skal udskrive alle dem som er false...
Avatar billede coltau Juniormester
13. marts 2002 - 11:47 #6
Måske SKAL du skrive før det virker:

if (!aktiv == true) then ...

Men i VBScript er man ikke tvunget til det.
Avatar billede jmarkling Nybegynder
13. marts 2002 - 13:25 #7
Det er ikke fordi min kode ikke virker for det gør det, som det første eksempel, men jeg vil bare gerne have at der skal stå...(!aktiv) da det ser pænere ud... Problemet er jo, at man ikke definere datatyper med ASP, hvilket er irreterende ud over alle grænser...
Eksempelvis er jeg ofte nødt til at sætte +"" efter en streng jeg henter fra databsen, for at kunne sammenligne den med en anden streng variabel, så derfor tænkte jeg om man ikke kunne gøre noget ligende med boolean værdier for at få programmet til at forstå det korrekt, som koden læses nu tror compileren jo at "aktiv" er en streng og ikke en boolean værdi...
Nu, er jeg blevet så nysgerrig at jeg øger points til 100, til den der kan komme med en løsning...
Avatar billede mr.meincke Nybegynder
13. marts 2002 - 18:18 #8
er det ikke php???
i ASP burde det da se sådan her ud:

<%
do until (objRS.eof or objRS.bof)
Response.Write(objRS("aktiv"))
aktiv = objRS("aktiv")
objRS.MoveNext
loop
?>

MVH
Mr.Meincke
Avatar billede mr.meincke Nybegynder
13. marts 2002 - 18:18 #9
ups:

<%
do until (objRS.eof or objRS.bof)
Response.Write(objRS("aktiv"))
aktiv = objRS("aktiv")
objRS.MoveNext
loop
%>
Avatar billede coltau Juniormester
13. marts 2002 - 18:38 #10
Her er lidt hjælp til fejlfinding.

if (!aktiv) .......

Dit eksempel fejler ikke noget i ovenstående linie. Jeg mener: Syntaxen er god nok. Fejlen må ligge et andet sted. ?

Jeg har prøvet denne kode og den fungere korrekt.

<% @ Language=JScript%>
<%
aktiv = false; ' jeg har skiftet mellem true/false
if(!aktiv) {
  Response.Write("false")
} else {
  Response.Write("true")
}
%>

Kan du selv komme i tanke om andre steder der kan have indflydelse på linien:
1. objRS("aktiv") er empty eller andet. ?
2. Du har stirret dig blind på det eksempel du arbejder med. Prøv at lave et nyt.

I øvrigt vil jeg give dig ret i at ASP's struktur er "for nem." Det kan sommetider snyde når man er vandt til Delphi eksempelvis.
Avatar billede jmarkling Nybegynder
13. marts 2002 - 21:25 #11
-->Mr meincke
Det er asp, brmk <%%> jeg bruger bare javascript istedet for ASP...
Avatar billede jmarkling Nybegynder
13. marts 2002 - 21:36 #12
Din kode virker osse her coltau...
1.objRS("aktiv") er ikke tom, jeg udskriver den jo...
2.Ja, du har nok ret... men det jeg har lavet virker jo med første eksempel...
3.Godt der er flere der deler min holdning...

--
Hvis jeg prøver følgende
<%while(!objRS.EOF){   
    Response.Write(objRS("aktiv"));
   
    if(objRS("aktiv")){...%>

udskriver den både true og false værdierne...mærkligt ikke...
Så objRS("aktiv") opfater kompileren som True, uanset værdien i databasen...
..hvis jeg skriver
<%while(!objRS.EOF){   
    Response.Write(objRS("aktiv"));
   
    if(!objRS("aktiv")){...%>

udskriver den intet...
altså....værdien af objRS("aktiv") er True....

Det er noget underligt noget...kan fejlen ligge på webserveren's database driver...???
Avatar billede jmarkling Nybegynder
13. marts 2002 - 21:37 #13
Vil i se hele koden?
Avatar billede jmarkling Nybegynder
13. marts 2002 - 21:39 #14
Her er den...
Den virker fino og udskriver alle dem som er false i databasen...
<% @Language = JavaScript %>
<% Response.Buffer = true %>
<% Response.Expires = -1; %>

<HTML>
<HEAD>
<TITLE>Registrering_adm</TITLE>


</HEAD>

   
<!-- midlertidig funktion til at skabe kontakt til tabellen i databasen -->
<%  function openDB(){   
        objConn = Server.CreateObject("ADODB.Connection");   
        str1    = "Driver={Microsoft Access Driver (*.mdb)};DBQ="
        str2    = Server.MapPath("cgi-bin/GRINDBRUGER.mdb");
        str        = str1 + str2;           
        objConn.open(str);
    }
%>

<BODY>
<BR>   
<BR>

<!-- funtkionen der åbner databasen kaldes -->
<%openDB(); %>
<%objRS  = Server.CreateObject("ADODB.Recordset");%>
<% sql = sqlCall = "select * from Bruger";%>
<% objRS.cursorType=0;%>
<% objRS.open(sql,objConn);%>

<!-- Nedenstående udskriver dem som har søgt om medlemskab siden sidst -->
<%while(!objRS.EOF){   
    //Response.Write(objRS("aktiv"));
   
    if(aktiv == false){%>
        <%Response.Write(objRS("aktiv"));%>
        <BR>
        brugernavn: <%Response.Write(objRS("brugernavn"));%>
        <BR>
        forretning: <%Response.Write(objRS("forr_navn"));%>
        <BR>
        <%brugernavn = objRS("brugernavn");%>
        <a href="aktiver_forhandler_adm.asp?forhandler=<%=brugernavn%>" style="text-decoration:none">Se data og aktiver bruger</a>
        <BR>
        <hr>
  <%
  }
objRS.MoveNext();
}

%>

</BODY>
</HTML>
Avatar billede coltau Juniormester
13. marts 2002 - 21:45 #15
Ok - jeg æder ordene i mig igen efter at have testet nedenstående som kommer ud med true uanset om feltet "online" er true eller false.

aktiv = rs("online");

if (!aktiv) {
  Response.Write("false" + "<br>")
} else {
  Response.Write("true" + "<br>")
}

Jeg må jo gi' dig ret i at den umiddelbart tror at det er en string. ?
Avatar billede coltau Juniormester
13. marts 2002 - 22:03 #16
Jeg har prøvet alt hvad jeg kan komme i tanke om for at konvertere varianten "aktiv" til en bolsk variabel - men den vil ikke. !#¤

1. I VBScript kan man anvende funktionen: CBool - men den melder ukendt objekt.
aktiv = CBool(rs("online"));
2. Denne her virker heller ikke.
aktiv = rs("online") == "Sand"; Hvis jeg udskrive et bolsk sandt udtryk med Response.Write får jeg jo: "Sand"

MEN - MEN ----------------------

Mens jeg skrev det her så prøvede jeg lige denne her:

aktiv = rs("online") == true;

Hvis du bruger den kan du anvende dit "smukke" kode bagefter uden problemer:

if (!aktiv) {

Men - det understreger jo blot at ASP er en sprog hvor variabler er sent bundet - meget sent.

----------------------------------

aktiv = rs("online");
if (!aktiv) {    ' Tolkes af compileren som en string der ikke er tom. !
Avatar billede jmarkling Nybegynder
13. marts 2002 - 22:41 #17
Det må jeg sige...
Alletiders...
jeg vil gøre brug af aktiv = objRS("aktiv") == true;
Så kommer der styr på skønheden i det igen, :)
Tak for din interesse...

-ASP finder først ud af datatypen i det sekund man eksempelvis bruger det i en sammenligning... i det aller første eksempel med (aktiv == false)
Der virker det jo som en bolsk value..., ellers ville det kun være sandt hvis (aktiv == "false")....
Så der skal en sammenligning til... på '==' maner...
Så det med at forkorte det ned til (!aktiv)...
Avatar billede coltau Juniormester
13. marts 2002 - 22:49 #18
Ja - sjovt nok så ændre variablen type alt efter den sammenhæng den anvedes i. Den type holder den så indtil den anvendes i en anden sammenhæng.

Men det er jo også Bill der har lavet ASP.
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