Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung VB for Applications

GELÖST

Arraywert läßt sich nicht in Datei schreiben

Mitglied: Gurkenhobel

Gurkenhobel (Level 1) - Jetzt verbinden

21.10.2012, aktualisiert 20:04 Uhr, 3565 Aufrufe, 4 Kommentare

Hallo,

ich arbeite mit kommaseparierten Datendateien (CSV). Hin und wider kommt mir mal eine Datei mit über 200 Datensätzen unter, die weniger Datenfelder als üblich (hier 18) enthält. Das letzte Feld ist immer das Datum in der üblichen Schreibeweise (TT.MM.JJJJ). Manchmal fehlt dies auch (es sind also nur 17 Datenfelder) und mein Skript bricht mit dem Typunverträglichkeitsfehler ab.

So möchte ich also die Ausgabe in eine andere Datei in der Art manipulieren, daß bei einer Anzahl der Datenfelder kleiner als 18 (UBound) ein String in die Ausgabedatei geschrieben wird. Leider kommt immer wieder bei dem "kürzeren Datensatz" der obige Fehler. Was kann man tun ? CStr und CDate funktioneren nicht. Hier Teile des Codes:

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
 
03.
If fso.FileExists(EingabeDatei) Then 
04.
Set objEingabe = fso.OpenTextFile(EingabeDatei, 1) 
05.
Set objAusgabe = fso.CreateTextFile(Ausgabedatei, 2) 
06.
objEingabe.Skipline ' Die erste Zeile weglassen 
07.
 
08.
Do While not objEingabe.AtEndOfLine 
09.
Inhalt=objEingabe.ReadLine ' ReadAll 
10.
 
11.
arrFeld=Split(Inhalt, ";") ' in Arrays aufsplitten 
12.
 
13.
 .... 
14.
 
15.
' mit UBound prüfen ob 18 Datenfelder vorhanden 
16.
 
17.
Zahl=Ubound(arrFeld) ' Die höchste Zahl 
18.
 If Zahl=17 Then  
19.
  Datum=CDate(arrFeld(17)) ' <------------ Typen unverträglich 
20.
 else 
21.
  Datum=" Datum fehlt !" 
22.
 end if 
23.
 
24.
MsgBox Datum ' zur Kontrolle ! 
25.
 
26.
accNamen=arrFeld(10) & ";" & arrFeld(15) & ";" & arrFeld(11) & ";" & arrFeld(12) & ";" & Datum & ";1920x1080;D;" & UCase(arrFeld(16)) & ";" 
27.
 
28.
objAusgabe.WriteLine accNamen 
29.
 
30.
Loop 
31.
 
32.
objEingabe.Close 
33.
objAusgabe.Close 
34.
 
35.
Set objAusgabe = Nothing 
36.
Set objEingabe = Nothing 
37.
Set fso = Nothing 
38.
 
Eine andere Möglichkeit wäre wohl gewesen, über objEingabe.Readline zu prüfen ob das vierte Zeichen von rechts eine 2 ist. Aber das wäre auch gescheitert, denn das vorletzte Datenfeld kann manchmal auch Zahlen enthalten.

Freundliche Grüße

GH

Mitglied: bastla
21.10.2012 um 21:10 Uhr
Hallo Gurkenhobel!

Du könntest vorweg den Feldinhalt auf "Datumswert" prüfen:
If IsDate(arrFeld(17)) Then ...
- schließlich weist die Fehlermeldung darauf hin, dass eben doch nicht immer, wenn es ein 18. Feld im Datensatz gibt, auch ein Datum drin steht ...

Grüße
bastla
Bitte warten ..
Mitglied: Gurkenhobel
22.10.2012, aktualisiert um 15:00 Uhr
Hallo bastla,

Danke für Deine Hilfe:

Zitat von bastla:
- schließlich weist die Fehlermeldung darauf hin, dass eben doch nicht immer, wenn es ein 18. Feld im Datensatz gibt, auch ein Datum drin steht ...

die Abfrage von Dir übernimmt keine löscht ungültigen Datumsformate (z.B. 31.11.2011), d.h. das Feld in der neuen Datei blieb frei. Ich habe den Code im Block (Zeile 17 bis 22) etwas abgewandelt. Das ist nun meine endgültige Lösung:

01.
Zahl=Ubound(arrFeld) ' Die höchste Zahl 
02.
 If Zahl=17 Then 
03.
  if IsDate (arrFeld(17)) then 
04.
   Datum=CDate(arrFeld(17)) 
05.
  else 
06.
   Datum="ungültiges Datum" 
07.
  end if 
08.
 else 
09.
  Datum="fehlendes Datum" 
10.
 end if
Danke und Tschüs

GH

<edit> 15:00: kleine Korrektur</>
Bitte warten ..
Mitglied: bastla
22.10.2012, aktualisiert um 12:26 Uhr
Hallo Gurkenhobel!

Abgesehen davon, dass eine Abfrage nix löscht, war das ohnehin etwa so gemeint, wie Du es jetzt umgesetzt hast ...

Grüße
bastla
Bitte warten ..
Mitglied: Gurkenhobel
22.10.2012 um 15:07 Uhr
Hi bastla,
abschließend habe ich meine Falschaussage noch mal revidiert.
Ich wünsche Dir noch einen schönen Tag ;-]

GH
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Schreiben eines Strings mit Leerzeichen in eine Datei
gelöst Frage von c20082005Batch & Shell6 Kommentare

Hallo, nach langem Rum- und Ausprobieren möchte ich Euch um Hilfe bitten für folgendes Problem: Ich möchte mit einer ...

Batch & Shell
Batch Eingabe in Datei schreiben
gelöst Frage von MedicalAdBatch & Shell2 Kommentare

Hallo Leute, ich habe folgendes Problem, ich möchte ein Batch Programm was nacheinander > Computername, IP Adresse, Aufstellungsort und ...

Batch & Shell
Bestimmte Zeile aus mehreren Dateien in eine neue Datei schreiben
gelöst Frage von Oggy76Batch & Shell5 Kommentare

Hallo zusammen, meine Kenntnisse in Sachen batch/shell sind ehr auf Anfängerniveau zu sehen. Grund -basics im CMD-Prompt sind vorhanden, ...

Windows 10
Mit einer batch Datei etwas in eine andere batch Datei schreiben und ausführen
Frage von RaphaelStockWindows 105 Kommentare

Hey Administratoren!! Ich habe ein Problem: Ich möchte alle 40 sek etwas in eine batch Datei schreiben und ausführen ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall10 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS9 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...

Windows Netzwerk
Zugriff auf den Desktop Ordner eines anderen Rechners in der gleichen Domäne
gelöst Frage von JensNomaWindows Netzwerk6 Kommentare

Guten Abend, ich war neulich mit unserem Admin am Tisch gesessen. Er an seinem Notebook angemeldet mit dem Domänen-Admin, ...