emetiel: ASP Fehler 800a000d bzw. 800a0bb9

Hi,

ich habe ein Problem bei welchem ich nicht wirklich weiter komme.

Es geht um ASP und folgende Fehlermeldungen

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'HostName'
/TxtAndMail.asp, line 126

bzw.

ADODB.Fields error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/TxtAndMail.asp, line 135

Die erste Meldung erhalte ich, wenn ich mit "call HostName()" folgende Prozedur aufrufe.

sub HostName()
    dim pc
    Set pc = CreateObject( "Wscript.Network" )
    compname = pc.Computername
  end sub

Die Zweite bekomme ich, wenn ich innerhalb von TxtAndMail.asp anstelle  "call HostName()"
das hier:
    dim pc
    Set pc = CreateObject( "Wscript.Network" )
    compname = pc.Computername

eiingebe.
Die Variable compname ist innerhalb von TxtAndMail.asp einfach nur mit Dim compname angelegt. Wo liegt mein Denkfehler.

gruß
emetiel

  1. Wo liegt mein Denkfehler.

    Ich bin in VBS nicht mehr so fit. Wenn ich nicht falsch liege, liegt es daran, dass du versuchst ein Objekt aus einem Procedure-Level in eine Variable auf Script-Level zu schreiben.

    1. Hallo suit,

      Ich bin in VBS nicht mehr so fit. Wenn ich nicht falsch liege, liegt es daran, dass du versuchst ein Objekt aus einem Procedure-Level in eine Variable auf Script-Level zu schreiben.

      ich ging ja von globalen Variablen aus, aber Deine Vermutung könnte ins Schwarze treffen. Falls jedoch

      Option Explicit

      nicht angegeben ist, sollte VBScript die verwendete Variable einfach anlegen (weswegen sie außerhalb der Prozedur noch lange nicht zur Verfügung steht). Im Gutfall wird kein Objekt zugewiesen, sondern eine Zeichenkette, siehe http://msdn.microsoft.com/en-us/library/wck0hkd7(v=VS.85).aspx.

      Freundliche Grüße

      Vinzenz

      1. Tja manchmal...

        ...kann das Leben so einfach sein :)

        Man sollte einfach nicht in mehreren Dateien, welche dann in einer gemeinsamen includet werden Variable mehrfach definieren :))

        1. Hallo,

          Tja manchmal...
          ...kann das Leben so einfach sein :)

          Man sollte einfach nicht in mehreren Dateien, welche dann in einer gemeinsamen includet werden Variable mehrfach definieren :))

          oh ja, also globale Variablen und keine wirkliche Fehlerbehandlung. Bei

          On Error Resume Next

          ist direkt nach Aktionen, die fehlschlagen können, das Err.Objekt zu prüfen.
          Beachte:

          <zitat>
              An On Error Resume Next statement becomes inactive when another procedure
              is called, so you should execute an On Error Resume Next statement in each
              called routine if you want inline error handling within that routine.
          </zitat>

          Falls in den Subs kein "On Error Resume Next" enthalten ist, gibt es in diesen Prozeduren *kein* Errorhandling - und danach sehen Deine Fehlermeldungen ebenfalls aus.

          Einziger Trost: man kann's fast nur besser machen ;-)

          Freundliche Grüße

          Vinzenz

          1. Falls in den Subs kein "On Error Resume Next" enthalten ist, gibt es in diesen Prozeduren *kein* Errorhandling - und danach sehen Deine Fehlermeldungen ebenfalls aus.

            Schieben wir's wieder auf die Straße und hoffen, dass es nicht noch einmal passiert.

  2. Hallo,

    Es geht um ASP und folgende Fehlermeldungen
    Microsoft VBScript runtime error '800a000d'

    Die erste Meldung erhalte ich, wenn ich mit "call HostName()" folgende Prozedur aufrufe.

    sub HostName()
        dim pc
        Set pc = CreateObject( "Wscript.Network" )
        compname = pc.Computername
      end sub

    Prozeduren, die keinerlei Fehlerbehandlung enthalten :-)
    Implementiere die Fehlerbehandlung. Dazu kannst Du in VB-Script "On Error" nutzen.

    Es ist zusätzlich eine hervorragende Idee, Funktionen mit Rückgabewerten anstelle von Prozeduren und der brandgefährlichen Zuweisung von Werten an globale Variablen zu nutzen.

    Weitere Hinweise:
    ASP ist seit Jahren tot. Sein Nachfolger ist ASP.NET. VBScript und JScript werden nicht weiterentwickelt. ASP zu nutzen, ist daher eine Sackgasse.

    Freundliche Grüße

    Vinzenz

    1. ASP ist seit Jahren tot.

      Nicht wirklich - es hält sich hartnäckig :)

      Sein Nachfolger ist ASP.NET.

      Ja.

      VBScript und JScript werden nicht weiterentwickelt.

      Das ist afaik nicht richtig - die (bisher) letzte Version von VBScript ist 5.8 und erschien mit dem IE8 und hielt auch in Windows 7 Einzug.

      Es ist weiterhin ein wichtiger Bestandteil für Windows- und Office-Scripting und auch vollumfänglich in ASP.NET nutzbar - man muss VBS nicht zwangläufig durch VB.NET ersetzen - für kleine dinge wie etwa Scheduled Tasks ist VBS sehr praktisch.

      Aufgrund der Tatsache, dass der OP das WScript-Objekt nutzt, denke ich dass es sich wohl nicht um ASP bzw. eine Webanwendung handelt sondern um den verbreiteten Irrglauben, ASP und VBS sei dasselbe. Ich kann mich mangels Informationen aber auch täuschen.

      ASP zu nutzen, ist daher eine Sackgasse.

      ASP ja, VBScript nein.

    2. Mahlzeit Vinzenz Mai,

      ASP ist seit Jahren tot.

      Das erkläre mal diversen Manager - gern auch meinen Chefs ...

      ASP zu nutzen, ist daher eine Sackgasse.

      In die aber hier und da gerne weiterhin mit Vollgas hineingefahren wird ...

      MfG,
      EKKi

      --
      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    3. Hallo Vinzenz,

      Prozeduren, die keinerlei Fehlerbehandlung enthalten :-)
      Implementiere die Fehlerbehandlung. Dazu kannst Du in VB-Script "On Error" »» nutzen.

      Das ist nun einmal so vorhanden und ich darf es verschlimmbessern :)
      <% On Error Resum Next %> ist bei uns als Standart Behandlung überall eingetragen

      Weitere Hinweise:
      ASP ist seit Jahren tot. Sein Nachfolger ist ASP.NET. VBScript und JScript »» werden nicht weiterentwickelt. ASP zu nutzen, ist daher eine Sackgasse.

      Mag sein, aber ich muss nehmen was da ist. Ich darf ja nicht entwickeln sondern nur anpassen :)

      Sollte eine Neuentwicklung genehmigt werden ist .Net ja auch angedacht

      gruß
      emetiel

      1. <% On Error Resum Next %> ist bei uns als Standart Behandlung überall eingetragen

        Schieben wir ihn wieder auf die Straße und hoffen, dass es nicht nochmal passiert :D

        Btw: es heisst "Standard"