Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS-Script verursacht eine Fehlermeldung!

Frage Entwicklung VB for Applications

Mitglied: costello

costello (Level 1) - Jetzt verbinden

14.01.2008, aktualisiert 15.01.2008, 7375 Aufrufe, 4 Kommentare

Hallo zusammen,

meine Geburtstag-Erinnerung .vbs Datei verursacht die folgende Fehlermeldung:
01.
Skript:        C:\Daten\birthday.vbs 
02.
Zeile:          36 
03.
Zeichen:      7 
04.
Fehler:        Typen unverträglich: 'DateValue' 
05.
Code:         800A000D 
06.
Quelle:        Laufzeitfehler in Microsoft VBScript
und hier die Quelle:
01.
Dim objFileSystem 
02.
Dim objFile 
03.
Dim objTextStream 
04.
Dim szConfigFile 
05.
Dim szBirthday, szName, szThisYear, szNextYear, szComparisonDate 
06.
Dim szMessage 
07.
Dim iTime 
08.
Dim iDifference 
09.
 
10.
' Standardwerte für einige Variablen 
11.
szConfigFile = "C:\DATEN\BIRTHDAY.INI" 
12.
iTime        = 5 
13.
 
14.
szMessage    = "" 
15.
szThisYear   = CStr(Year(date)) 
16.
szNextYear   = CStr(Year(date)+1) 
17.
 
18.
Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
19.
 
20.
' Config-Datei ermitteln, ... 
21.
If objFileSystem.FileExists(szConfigFile) Then 
22.
 
23.
   ' ... öffnen... 
24.
   Set objFile = objFileSystem.OpenTextFile(szConfigFile) 
25.
 
26.
   ' ... und zeilenweise abarbeiten 
27.
   Do until objFile.atEndOfStream 
28.
    
29.
      ' Geburtstag und Name des Geburtstagskindes lesen 
30.
      szBirthday = objFile.read(6) 
31.
      szName = objFile.readLine 
32.
 
33.
      ' Wieviele Tage sind es noch bis zum nächsten Geburtstag? 
34.
      szComparisonDate = szBirthday & szThisYear 
35.
      iDifference = DateDiff("y", date, DateValue(szComparisonDate)) 
36.
       
37.
      ' Falls der nächste Geburtstag allerdings erst im nächsten Jahr liegt 
38.
      if (CInt(iDifference) < 0) then 
39.
         szComparisonDate = szBirthday & szNextYear 
40.
         iDifference = DateDiff("y", date, DateValue(szComparisonDate))    
41.
      end if 
42.
 
43.
      ' Wenn die Anzahl der Tage innerhalb der Frist liegt 
44.
      if (CInt(iDifference) <= iTime) then 
45.
         szMessage = szMessage & szName & " am " & szComparisonDate & " - noch " & iDifference & " Tage" & Chr(10)   
46.
      end if 
47.
       
48.
   Loop 
49.
   objFile.close 
50.
    
51.
else 
52.
   MsgBox "Die Config-Datei " & szConfigFile & " ist nicht vorhanden!", vbCritical, "Fehler" 
53.
end if 
54.
 
55.
' Falls vorhaben, Liste der nächsten Geburtstage ausgeben 
56.
If szMessage<>"" Then 
57.
   MsgBox szMessage, vbInformation, "Die nächsten Geburtstage" 
58.
End If
Die .ini Datei sieht z.B. wie folgt aus:
01.
01.01. ich  
02.
02.02. du
als birthday.ini gespeichert.
OS ist WinXP SP2.Die Frage wäre ob die Datei noch zum reparieren ist.
Falls jemand eine Lösung hätte dann würde ich mich sehr freuen!
Ich muss auch zugeben das meine Programmierkenntnise gleich null sind!

Schöne Grüsse,
costello
Mitglied: bastla
15.01.2008 um 00:40 Uhr
Hallo costello!

Mein Tipp wäre eine fehlerhafte Zeile in der "birthday.ini" ...

Zum Testen könntest Du nach
01.
szName = objFile.readLine
die Zeile
01.
WScript.Echo szBirthday & " " & szName
einfügen und das Script von der Kommandozeile (Start / Ausführen... / cmd) wie folgt starten:
01.
cscript //nologo "C:\Scripts\Birthday.vbs"
(sinnvoller Weise solltest Du statt "C:\Scripts\Birthday.vbs" den Pfad zu Deinem Script verwenden ).

So kannst Du erkennen, nach welchem Datum / Namen der Fehler eintritt.

Grüße
bastla

P.S.: Bitte zum Posten von Code < code> / < /code>-Tags (ohne Leerzeichen) verwenden - dann wäre hoffentlich auch ersichtlich, ob das Script mit einer Leerzeile beginnt, da sich ansonsten die Zeilenangabe 36 schwer nachvollziehen lässt. Dies gilt auch für das Zeichen 7 - hier hätte ich eigentlich 1 erwartet.
Bitte warten ..
Mitglied: costello
15.01.2008 um 02:14 Uhr
Hallo Bastla,

danke für die schnelle Antwort.Für das Posten muss ich sagen Mea Culpa, habe nicht geachtet, jetzt weiss ich!Das Script beginnt tatsächlich mit einer Leerzeile.Dann ist hier der Hund begraben (mehr oder weniger):
01.
      
02.
      iDifference = DateDiff("y", date, DateValue(szComparisonDate))
Hier noch einmal die Quelle (hoffentlich gut formatiert!!!).Die eingefügte Zeile hat nach der überprüfung allen Datum / Namen Einträgen die selbe Fehlermeldung wie oben beschrieben gebracht.
Noch einmal danke für deine Hilfe!
Schöne Grüsse,
costello

01.
 
02.
Dim objFileSystem 
03.
Dim objFile 
04.
Dim objTextStream 
05.
Dim szConfigFile 
06.
Dim szBirthday, szName, szThisYear, szNextYear, szComparisonDate 
07.
Dim szMessage 
08.
Dim iTime 
09.
Dim iDifference 
10.
 
11.
' Standardwerte für einige Variablen 
12.
szConfigFile = "C:\DATEN\BIRTHDAY.INI" 
13.
iTime        = 5 
14.
 
15.
szMessage    = "" 
16.
szThisYear   = CStr(Year(date)) 
17.
szNextYear   = CStr(Year(date)+1) 
18.
 
19.
Set objFileSystem = CreateObject("Scripting.FileSystemObject") 
20.
 
21.
' Config-Datei ermitteln, ... 
22.
If objFileSystem.FileExists(szConfigFile) Then 
23.
 
24.
   ' ... öffnen... 
25.
   Set objFile = objFileSystem.OpenTextFile(szConfigFile) 
26.
 
27.
   ' ... und zeilenweise abarbeiten 
28.
   Do until objFile.atEndOfStream 
29.
    
30.
      ' Geburtstag und Name des Geburtstagskindes lesen 
31.
      szBirthday = objFile.read(6) 
32.
      szName = objFile.readLine 
33.
       
34.
      ' Wieviele Tage sind es noch bis zum nächsten Geburtstag? 
35.
      szComparisonDate = szBirthday & szThisYear 
36.
      iDifference = DateDiff("y", date, DateValue(szComparisonDate)) 
37.
       
38.
      ' Falls der nächste Geburtstag allerdings erst im nächsten Jahr liegt 
39.
      if (CInt(iDifference) < 0) then 
40.
         szComparisonDate = szBirthday & szNextYear 
41.
         iDifference = DateDiff("y", date, DateValue(szComparisonDate))    
42.
      end if 
43.
 
44.
      ' Wenn die Anzahl der Tage innerhalb der Frist liegt 
45.
      if (CInt(iDifference) <= iTime) then 
46.
         szMessage = szMessage & szName & " am " & szComparisonDate & " - noch " & iDifference & " Tage" & Chr(10)   
47.
      end if 
48.
       
49.
   Loop 
50.
   objFile.close 
51.
    
52.
else 
53.
   MsgBox "Die Config-Datei " & szConfigFile & " ist nicht vorhanden!", vbCritical, "Fehler" 
54.
end if 
55.
 
56.
' Falls vorhaben, Liste der nächsten Geburtstage ausgeben 
57.
If szMessage<>"" Then 
58.
   MsgBox szMessage, vbInformation, "Die nächsten Geburtstage" 
59.
End If
Bitte warten ..
Mitglied: bastla
15.01.2008 um 07:49 Uhr
Hallo costello!

Das Script beginnt tatsächlich mit einer Leerzeile.
... dann kommt zumindest einmal die Position des Fehlers bei Zeichen 7 hin ...

Den Fehler kann ich reproduzieren, allerdings nur mit einer ini-Zeile der Art "02.22. du", also einem ungültigen Datumsbestandteil.

Die eingefügte Zeile hat nach der überprüfung allen Datum / Namen Einträgen die selbe Fehlermeldung wie oben beschrieben gebracht.
Die eingefügte Zeile soll dabei helfen, die (vor)letzte korrekte Zeile der ini zu finden, da nach Verarbeitung einer fehlerhaften Zeile das Script abbricht - insofern darf diese Zeile keine Fehlermeldung verursachen.

Falls Deine ini-Datei sehr umfangreich sein sollte, kannst Du die Bildschirmausgabe des Scripts auch in eine Datei umleiten, indem Du es wie folgt aufrufst:
01.
cscript //nologo "C:\Scripts\Birthday.vbs" > C:\Protokoll.txt
Falls Du mit freiem Auge tatsächlich kein fehlerhaftes Datum erkennen kannst, müssen wir eine Prüfung der Daten per Script versuchen ...

Grüße
bastla

P.S.: Danke für die Formatierung.
Bitte warten ..
Mitglied: costello
15.01.2008 um 21:13 Uhr
Hallo Bastla,

Herzlichen Dank für deine kompetente Hilfsbereitschaft.Nach viel Rumbastlerei und Suche nach selbst eingebauten Fehlern funktioniert das Script!

Mein Tipp wäre eine fehlerhafte Zeile in der "birthday.ini" ...

Hier hast du Recht gehabt!Nachdem ich vieles versucht habe und nichts funktioniert hat, habe mich entschlossen die .ini Datei neu zu editieren und zwar habe ich eine kopie der Datei erstellt, die originale umbenannt (beliebig) und angefangen mit den einzelnen "Datum / Namen" einzutragen. Nachdem keine Fehlermeldung zu sehen war habe ich die anderen "Datum / Namen" Einträgen mit copy / paste dazugefügt.Weshalb die original .ini Datei beschädigt war bleibt mir (mindestens) ein Rätsel!

Schöne Grüsse,

costello
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

VB for Applications
gelöst VBS Script kann Prgramm nicht starten (15)

Frage von C.Boerner zum Thema VB for Applications ...

Windows Server
Aufgabenplanung bringt bei VBS Script immer 0x41301 (14)

Frage von 116480 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...