vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Array Index außerhalb des Arraybereichs 
Autor: Jenpet
Datum: 01.07.12 20:22

hallo ich habe eine frage zum index out of bound eines arrays.

ich lese viele csv daten in einer for-schleife ein
und speicher diese auf einem sql server

es gibt eine bestimmte anzahl spalten in der tabelle die sich nicht verändern darf
jedoch sind manche dateien fehlerhat und haben mehr spalten als die tabelle besitzten darf

also z.b. gibt es 21 spalten namen ala ID, Date, Name, ... etc.
und plötzlich taucht ein feld auf mit 24 spalten oder die komplett leer ist

das verursacht einen array overflow

ich muss aber dem server sagen
insert into tabelleA (ID,Date,Name,...) VALUES ('1','2012','Test',....)

das programm stürzt trotz try and catch ab
soll es aber nicht
es soll die fehlerhafte zeile einfach in eine andere tabelle speichern und
die nächsten zeilen wieder ganz normal weiter einlesen

wie schaffe ich es das ein programm nicht abstürzt sondern die fehlerhafte zeile überspringt

kann ich das einlesen der zeilen einfach in eine funktion stecken und diese dann im catchbereich aufrufen damit es weitergeht?
ich glaube aber eher das sowas schlecht wäre
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array Index außerhalb des Arraybereichs 
Autor: xirton
Datum: 01.07.12 20:34

Ohne deinen Code, welcher das lesen und parsen der CSV übernimmt, schwierig zu sagen. Ich schätze mal, dass du einen Streamreader zum einlesen der CSV nutzt. Wenn du weist, wie viele Spalten die CSV maximal haben darf, dann zähl diese doch einfach intern in deiner for-Schleife mit, und ignorier alles, was danach kommt. Leere Zeilen kannst du auch einfach überprüfen, ehe du das parsen versuchst.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array Index außerhalb des Arraybereichs 
Autor: Jenpet
Datum: 02.07.12 08:45

den code darf ich leider nicht veröffentlichen
aber ja du hast recht ich benutze einen streamreader

hab gehofft dass man das vielleicht anders lösen kann
aber ok dann mache ich das so

vielen dank!
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array Index außerhalb des Arraybereichs 
Autor: Manfred X
Datum: 02.07.12 10:06

Hallo!

Die einzelnen CSV-Zeilen kannst Du in einen String einlesen und diesen
String per Split(";"c) feldweise in ein String-Array übertragen,
dessen Länge geprüft werden kann (Length).
'Dateiinhalt lesen
Dim lines() As String = IO.File.ReadAllLines("....")
Dim geforderteFeldZahl As Integer = 5
 
'Und dann in einer Schleife die Zeilen checken
For i As Integer = 0 To lines.Length - 1
   If lines(i).trim = String.Empty OrElse _
      lines(i).Split(";"c).Length <> geforderteFeldZahl Then
                '.........
   End If
Next i
MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array Index außerhalb des Arraybereichs 
Autor: ModeratorFZelle (Moderator)
Datum: 02.07.12 10:21

Klar kann man das, aber dazu müsste man ja wissen was Du verbrochen hast.

Bei der Fehlermeldung würde ich erstmal davon ausgehen das Du:
1. Trotz bekanntermassen variabler Feldanzahl array statt List(of) benutzt.
2. Laut Sourcecode die Parameter in den SqlString frickelst.
3. Nicht so wirklich verstanden hast wie Exceptions funktionieren.

Aber wie gesagt, ohne Source ( was soll daran so geheim sein wenn es Modular/OOP benutzt ??) ist das schwer zu sagen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Array Index außerhalb des Arraybereichs 
Autor: Jenpet
Datum: 02.07.12 11:32

ich hab den fehler jetzt entdeckt
warum mein catch abstürzt und nicht abgefangen wird und die nächsten zeilen weitergelesen werden

es lag am rollback dieses hat nicht richtig funktioniert
jetzt kann ich die fehlerhaften zeilen einfach überspringen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel