Schani: wie kann man 'undefined' abfragen

Hallo zusammen,

folgendes Problem, bekomme bei rsList("datum") öfters undefined zurück.
Möchte das Abfragen in der Form:
if (rsList("datum") == undefined)  Response.Write("blabla")
so gehts aber nicht auch Versuche mit isNothing() waren nicht erfolgreich, da rsList("datum") kein Objekt ist und deshalb die Methode nicht kennt.
Auch =='' oder =="" geht nicht.
Weiss wer wies geht (in JSCRIPT, VBScript hilft mir aber wahrscheinlich auch weiter)

Danke,
Schani

  1. Hallo zusammen,

    folgendes Problem, bekomme bei rsList("datum") öfters undefined zurück.
    Möchte das Abfragen in der Form:
    if (rsList("datum") == undefined)  Response.Write("blabla")
    so gehts aber nicht auch Versuche mit isNothing() waren nicht erfolgreich, da rsList("datum") kein Objekt ist und deshalb die Methode nicht kennt.
    Auch =='' oder =="" geht nicht.
    Weiss wer wies geht (in JSCRIPT, VBScript hilft mir aber wahrscheinlich auch weiter)

    Danke,
    Schani

    Hi Schani,

    versuch mal bitte auch zu sagen, was du machen willst (insgesamt) - so geheim wird es nicht sein, oder? ;-)

    auch etwas Quelltext wäre nicht schlecht, den der Teufel steckt meist im Detail.

    Response.Write funzt bei dir mit Klammern, wundert mich stark, ich bekomme dann immer kompilier-Fehler..

    Okay, warte auf deine Erläuterung.

    Frank

    1. Hallo,

      ok hier teile meines Quelltextes:

      objConnection = Server.CreateObject("ADODB.Connection")
      objConnection.open("mediadb")
      s=Request.Form("begriff")
      stmt2="SELECT [Media Library].* FROM [Media Library] WHERE Titel LIKE '"+ s + "'"
      rsList = objConnection.Execute(stmt2)
      ...
      if (rsList("datum")== '') Response.Write(" ")

      ich habe eine SQL-Abfrage von einer Tabelle, wo nicht alle Felder gefüllt sind. Bei diesen nicht gefüllten Feldern, will ich ein Leerzeichen ausgeben.
      Ich will aber grundsätzlich wissen, wie man undefined Abfragen kann, darum bitte ich euch sich nicht zu sehr auf den Code zu konzentrieren.

      Zu den Klammern: ich schreib in JScript, da sind Klammern glaub ich sogar notwendig, in VBScript schauts wahrscheinlich anders aus.

      Vielleicht hilft euch das weiter

      Schani

      Hallo zusammen,

      folgendes Problem, bekomme bei rsList("datum") öfters undefined zurück.
      Möchte das Abfragen in der Form:
      if (rsList("datum") == undefined)  Response.Write("blabla")
      so gehts aber nicht auch Versuche mit isNothing() waren nicht erfolgreich, da rsList("datum") kein Objekt ist und deshalb die Methode nicht kennt.
      Auch =='' oder =="" geht nicht.
      Weiss wer wies geht (in JSCRIPT, VBScript hilft mir aber wahrscheinlich auch weiter)

      Danke,
      Schani

      Hi Schani,

      versuch mal bitte auch zu sagen, was du machen willst (insgesamt) - so geheim wird es nicht sein, oder? ;-)

      auch etwas Quelltext wäre nicht schlecht, den der Teufel steckt meist im Detail.

      Response.Write funzt bei dir mit Klammern, wundert mich stark, ich bekomme dann immer kompilier-Fehler..

      Okay, warte auf deine Erläuterung.

      Frank

      1. Hallo,

        ok hier teile meines Quelltextes:

        objConnection = Server.CreateObject("ADODB.Connection")
        objConnection.open("mediadb")
        s=Request.Form("begriff")
        stmt2="SELECT [Media Library].* FROM [Media Library] WHERE Titel LIKE '"+ s + "'"
        rsList = objConnection.Execute(stmt2)
        ...
        if (rsList("datum")== '') Response.Write(" ")

        ich habe eine SQL-Abfrage von einer Tabelle, wo nicht alle Felder gefüllt sind. Bei diesen nicht gefüllten Feldern, will ich ein Leerzeichen ausgeben.
        Ich will aber grundsätzlich wissen, wie man undefined Abfragen kann, darum bitte ich euch sich nicht zu sehr auf den Code zu konzentrieren.

        =============================================

        was issn das für ne DB??? SQL, Access, Oracle?? Der findet vielleicht keine DB und kann daher auch keine "defined" Ergebnisse liefern. deshalb kommt immer undefined raus, würde ich schätzen.

        Leg dir doch eine Datei DSN an, definierst du über Systemssteuerung -> ODBC-Datenquellen...

        dann hättest du schon auf jeden fall eine "gültige" Verbindung.
        "Undefined" fields gibt es nich, entweder isNull oder isNotNull
        Und ein Leerzeichen schreibst du am besten mit der Uni-Code übersetzung, weil dann isses fest und kein etwaiges Whitespace:
        ->Response.Write "&#160"

        Ein "SELECT * FROM <Tabelle>" würde auch ausreichen
        Muß der Feldeintrag genau übereinstimmen mit der Formulareingabe? Sonst -> Like '%" & s & "%'"  dann sucht es im Feld nach der Zeichenkette = miniVolltextsuche.

        Andere generelle Frage, kriegst du mit der DB überhaupt schon ein Ergebnis??

        Andere Frage, warum JScript? ADO-Objekte sind doch eh VBScript? Hmm??

        Gruß, Frank

        1. Hallo,

          ok hier teile meines Quelltextes:

          objConnection = Server.CreateObject("ADODB.Connection")
          objConnection.open("mediadb")
          s=Request.Form("begriff")
          stmt2="SELECT [Media Library].* FROM [Media Library] WHERE Titel LIKE '"+ s + "'"
          rsList = objConnection.Execute(stmt2)
          ...
          if (rsList("datum")== '') Response.Write(" ")

          ich habe eine SQL-Abfrage von einer Tabelle, wo nicht alle Felder gefüllt sind. Bei diesen nicht gefüllten Feldern, will ich ein Leerzeichen ausgeben.
          Ich will aber grundsätzlich wissen, wie man undefined Abfragen kann, darum bitte ich euch sich nicht zu sehr auf den Code zu konzentrieren.

          =============================================

          was issn das für ne DB??? SQL, Access, Oracle?? Der findet vielleicht keine DB und kann daher auch keine "defined" Ergebnisse liefern. deshalb kommt immer undefined raus, würde ich schätzen.

          Leg dir doch eine Datei DSN an, definierst du über Systemssteuerung -> ODBC-Datenquellen...

          dann hättest du schon auf jeden fall eine "gültige" Verbindung.
          "Undefined" fields gibt es nich, entweder isNull oder isNotNull
          Und ein Leerzeichen schreibst du am besten mit der Uni-Code übersetzung, weil dann isses fest und kein etwaiges Whitespace:
          ->Response.Write " "

          Ein "SELECT * FROM <Tabelle>" würde auch ausreichen
          Muß der Feldeintrag genau übereinstimmen mit der Formulareingabe? Sonst -> Like '%" & s & "%'"  dann sucht es im Feld nach der Zeichenkette = miniVolltextsuche.

          Andere generelle Frage, kriegst du mit der DB überhaupt schon ein Ergebnis??

          Andere Frage, warum JScript? ADO-Objekte sind doch eh VBScript? Hmm??

          Gruß, Frank

          Es is Access-DB über ODBC. Es funkt eh alles, nur gewisse Felder sind eben leer (nicht immer manchmal), die Ausgabe ist auch in Ordnung, nur bei Netscape werden leere Felder nicht dargestellt und deshalb will ich das Leerzeichen einfügen. Aber eben nur dann, weil sonst macht es ab und zu einen Zeilenumbruch.

          JSript deshalb, weil ich das kann, VBScript nicht, aber verstehen tu ichs meistens schon. Bei Objekten ist es eh egal, in welcher Sprache, nur die Syntax ist eben ein wenig unterschiedlich.

          Ciao
          Schani

    2. Hallo,

      Response.Write funzt bei dir mit Klammern, wundert mich stark, ich bekomme dann immer kompilier-Fehler..

      Interessant ;-)
      Ohne klammern habe ich es noch gar nie probiert. (Bis jetzt)
      Bei mir funktioniert es sowohl als auch. Standard Script Sprache ist VBScript. IIS 4 vom Optionpack 4.

      Grüsse an alle

      HaPe (derimmernochmitliestaberkaumzeithatumzuantworten)

  2. Hallo auch,

    folgendes Problem, bekomme bei rsList("datum") öfters undefined zurück.
    Möchte das Abfragen in der Form:
    if (rsList("datum") == undefined)  Response.Write("blabla")
    so gehts aber nicht auch Versuche mit isNothing() waren nicht erfolgreich, da rsList("datum") kein Objekt ist und deshalb die Methode nicht kennt.
    Auch =='' oder =="" geht nicht.
    Weiss wer wies geht (in JSCRIPT, VBScript hilft mir aber wahrscheinlich auch weiter)

    Ich habe gerade in der JScript.chm geschmökert und bin dabei auf den Befehl typeof gestoßen.
    <cite>
    typeof-Operator
    Beschreibung:
    Gibt eine Zeichenfolge zurück, die den Datentyp eines Ausdrucks angibt.
    Syntax
    typeof [ ( ] Ausdruck [ ) ] ;
    Das Argument Ausdruck ist ein beliebiger Ausdruck, zu dem Typeninformationen benötigt werden.

    Anmerkungen
    Der typeof-Operator gibt Typeninformationen als Zeichenfolge zurück. Es gibt sechs mögliche Werte, die typeof zurückgibt: "Number", "String", "Boolean", "Object", "Function" und "undefined".
    In der typeof-Syntax sind die Klammern optional.

    </cite>

    Ob es die Lösung ist weiß ich jetzt auch nicht. Aber vielleicht hilfts. Lass es uns bitte wissen.

    Gruß HaPe (derheuteeinenneuentagesrekordaufgestellthatimantworten)

    1. Hallo auch,

      folgendes Problem, bekomme bei rsList("datum") öfters undefined zurück.
      Möchte das Abfragen in der Form:
      if (rsList("datum") == undefined)  Response.Write("blabla")
      so gehts aber nicht auch Versuche mit isNothing() waren nicht erfolgreich, da rsList("datum") kein Objekt ist und deshalb die Methode nicht kennt.
      Auch =='' oder =="" geht nicht.
      Weiss wer wies geht (in JSCRIPT, VBScript hilft mir aber wahrscheinlich auch weiter)

      Ich habe gerade in der JScript.chm geschmökert und bin dabei auf den Befehl typeof gestoßen.
      <cite>
      typeof-Operator
      Beschreibung:
      Gibt eine Zeichenfolge zurück, die den Datentyp eines Ausdrucks angibt.
      Syntax
      typeof [ ( ] Ausdruck [ ) ] ;
      Das Argument Ausdruck ist ein beliebiger Ausdruck, zu dem Typeninformationen benötigt werden.

      Anmerkungen
      Der typeof-Operator gibt Typeninformationen als Zeichenfolge zurück. Es gibt sechs mögliche Werte, die typeof zurückgibt: "Number", "String", "Boolean", "Object", "Function" und "undefined".
      In der typeof-Syntax sind die Klammern optional.

      </cite>

      Ob es die Lösung ist weiß ich jetzt auch nicht. Aber vielleicht hilfts. Lass es uns bitte wissen.

      Gruß HaPe (derheuteeinenneuentagesrekordaufgestellthatimantworten)

      Soo,

      das ist es, in meinen Fall waren die Variablen überraschenderweise doch tlw. undefined tlw. Objekte mit null. Deshabl hab ich es so gelöst:
      <% if (typeof(rsList("DW").value) != "string") Response.Write(" ") %>  <% Response.Write(rsList("DW").value) %> </font></td><% } %>

      und das funkt !
      typeof ist die Funktion, die ich gesucht habe

      Danke nochmals

  3. Hallo Schani

    if (rsList("datum") == undefined)  Response.Write("blabla")
    so gehts aber nicht auch Versuche mit isNothing() waren nicht erfolgreich, da rsList("datum") kein Objekt ist und deshalb die Methode nicht kennt.
    Auch =='' oder =="" geht nicht.
    Weiss wer wies geht (in JSCRIPT, VBScript hilft mir aber wahrscheinlich auch weiter)

    Versuch es mal mit:
       if (isNull(rsList("datum"))        ' für VBScript
    oder
       if(typeOf(rsList("datum")) == "undefined")      // für JScript, wie HaPe und Du schon beschrieben hat.
       // Die direkte Abfrage nach "undifined" ist insofern besser, denn falls das Feld eine Zahl enthält, gibt typeOf() den String "number" zurück.

    Ansonsten hier noch ein guter Link zu einer vollständigen ASP-, JScript- und VBScript-Dokumentation, inklusive ADO-Objekte etc. :http://www.chilisoft.com/caspdoc/

    Grüsse
    Tom