vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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 - Fortgeschrittene
Programm kann die Datei nicht verarbeiten 
Autor: ERBRU
Datum: 25.06.17 10:16

OK Hallo zusammen,

ich lade txt Datei in mein Programm, nun möchte ich das dass Programm erkennt das es auch die entsprechende Struktur "Datenfelder hat" ansonsten Meldung die Datei kann nicht verarbeitet werden.

  Dim FileName As String = ""
 
        With OpenFileDialog1
            .DefaultExt = "txt"
            .Filter = "TXT Dateien|*.txt"
            .FileName = ""
            .InitialDirectory = SavePath
        End With
 
        Dim res As DialogResult
 
        res = OpenFileDialog1.ShowDialog
 
        If res = DialogResult.Abort Or res = DialogResult.Cancel Then
            Exit Sub
        Else
            Me.Cursor = Cursors.WaitCursor
            txtdokinarbeit.Text = OpenFileDialog1.FileName
            ToolStripStatusLabel1.Text = "Lade Daten aus " & _
              OpenFileDialog1.FileName
            Application.DoEvents()
            DatenLaden(OpenFileDialog1.FileName)
            ToolStripStatusLabel1.Text = "Datensätze: " & dt1.Rows.Count
            Me.Cursor = Cursors.Default
            Application.DoEvents()
        End If
Struktur der Tabelle >> Filname einlesen
 Private Sub DatenLaden(ByVal FileName As String)
 
 
        dt1.Clear()
 
        Dim sr As New System.IO.StreamReader(FileName)
        Dim Zeile As String = Nothing
        Dim i As Integer = 0
 
        Dim arr() As String = Nothing
 
        Do While Not sr.EndOfStream
            Zeile = sr.ReadLine()
 
            arr = Zeile.Split(",")
            If Not arr(0).Contains("Seriennummer") Then
 
                Dim newRow As DataRow = dt1.NewRow
                i = i + 1
 
                newRow("ID") = i
                newRow("Seriennummer") = arr(0)
                newRow("Bauteil") = arr(1)
                newRow("Baudatum") = arr(2)
                newRow("Status") = String.Empty
                newRow("Fahrgestellnummer") = String.Empty
 
                dt1.Rows.Add(newRow)
 
            End If
        Loop
 
        sr.Close()
 
        Application.DoEvents()
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: Manfred X
Datum: 25.06.17 17:16

Hallo!

Poste solche trivialen Fragen bitte im Einsteiger-Forum
oder - besser noch - schau mal in ein gutes Lehrbuch zu VB.

Du willst wissen, ob eine Zeichenfolge sich in eine Abfolge
von typisierten Datenfeldern einer Datarow eintragen läßt?
Prüfe nach dem "Split" die Länge des resultierenden Array
und nutze z.B. die jeweils nötigen "TryParse"-Methode, zur Prüfung,
ob der gelesene Feldinhalt (Zeichenfolge) in den geforderten Spalten-
Datentyp transformierbar ist.
Alles ist im Einsteiger-Forum bereits etliche Male erläutert
worden.

Welches Schema eigentlich?
Die Datarows werden teilweise nicht oder per Code gefüllt.
Du zerlegst nur die jeweils gelesene Zeile in drei Zeichenketten.
Welchen Kriterien diese Felder genügen müssen, gibst Du nicht an.

Nutze "Option Strict On" für typsicheres Programmieren.

Beitrag wurde zuletzt am 25.06.17 um 17:33:38 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: effeff
Datum: 25.06.17 21:34

Du hast von mir ein Beispiel erhalten, in welchem dargelegt ist, dass erst die DataTable erstellt wird und dann die Daten dort hinein geladen werden; Beachte dieses bitte!

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: ERBRU
Datum: 27.06.17 06:27

Manfred X schrieb:
Zitat:

Hallo!
Welches Schema eigentlich?
Die Datarows werden teilweise nicht oder per Code gefüllt.
Du zerlegst nur die jeweils gelesene Zeile in drei
Zeichenketten.
Welchen Kriterien diese Felder genügen müssen, gibst Du nicht
an.

Nutze "Option Strict On" für typsicheres
Programmieren.


Hallo Manfred X,
bzgl, Thema gebe ich dir Recht da bin ich wohl hier nicht fortgeschritten, habe keine Erfahrungen damit.
deine Frage und Anmerkung kann ich nicht ganz folgen, habe zuvor nicht mit Dateitypen gearbeitet

Schema der txt Datei sieht so aus: 3 Spalten Trennung ,
ohne Überschriftenzeile
im Programm sind die als Strings deklariert
ist Schema OK einlesen ansonsonsten Meldung Schema entspricht nicht der Vorgabe? das soll mein Programm erkennen


AHEF4WJ,5Q0512013JG,15.05.201723:38:10
AHEF4WK,5Q0512013JG,15.05.201723:38:10
AHEF4WL,5Q0512013JG,15.05.201723:38:23
AHEF4WM,5Q0512013JG,15.05.201723:38:23
AHEF4WN,5Q0512013JG,15.05.201723:38:49
AHEF4WO,5Q0512013JG,15.05.201723:38:49
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: ERBRU
Datum: 27.06.17 06:33

effeff schrieb:
Zitat:

Du hast von mir ein Beispiel erhalten, in welchem dargelegt
ist, dass erst die DataTable erstellt wird und dann die Daten
dort hinein geladen werden; Beachte dieses
bitte!


Danke effeff,

wie oder was kann ich dabei beachten das nun das Programm erkennt Anwender hat eine falsche txt Datei erwischt die das Programm so nicht verarbeiten kann oder Schema entspricht nicht der Datatable?

das wollte ich hier fragen, da habe ich keinerlei Erfahrungen mit. Die txt Datei hat keine Überschriften Zeile wie du weißt. Somit kann ich die Columns nicht prüfen Richtig?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: Manfred X
Datum: 27.06.17 08:47

Hallo!

[I]deine Frage und Anmerkung kann ich nicht ganz folgen,
habe zuvor nicht mit Dateitypen gearbeitet.[/I]

Jetzt werde ich mal deutlich.
Willst Du uns verarschen?

Wenn Du nach all dem, was Dir in diesem Forum erklärt und demonstriert
worden ist, nicht in der Lage bist,
- die Länge eines Split-Array zu prüfen
- in der Doku oder der Foren-Suchmaschine Dich über "TryParse" zu informieren,
dann erfüllst Du nicht die Voraussetzungen, um Dich an einem
Programmier-Forum beteiligen zu können.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: effeff
Datum: 27.06.17 11:14

OK, da hatte ich Dich jetzt falsch verstanden...

Was Du machen kannst:

1. Du kannst beim Splitten einer zu importierenden Zeile der Textdatei prüfen, ob die Anzahl der Array-Elemente Deiner Erwartung entspricht.

2. Du kannst prüfen, ob das erste Array-Element einer Seriennummer entspricht (zumindestens die Textlänge dieses Elementes).

3. Du kannst die anderen Array-Elemente prüfen, ob die dafür gültigen Konventionen eingehalten werden; Z. B., ob das Array-Element mit dem Baudatum denn auch wirklich ein gültiges Datum enthält.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: Franki
Datum: 28.06.17 02:40

Hallo,

du musst grundsätzlich prüfen, ob es sich bei der einzulesenden Datei auch um den richtigen Typ handelt. Benenne ich meine Datei Ulaubsfoto.jpg in Urlaubsfoto.txt um und deine Anwendung wird damit gefüttert, mußt du erkennen, dass es sich nicht um eine Textdatei handelt.

Wenn doch, dann mußt du alle relevanten Kriterien hierarchisch prüfen um feststellen zu können, ob der Aufbau richtig ist entsprechend deinen Anforderungen an die txt Datei.

Erst wenn das zu 100% gewährleistet ist macht eine weitere Verarbeitung überhaupt Sinn. Denn dann erst kannst du die Datei genau analysieren und weiter mit ihr arbeiten.

Das gilt nicht nur für Textdateien sondern ganz allgemein.
Geh mal im Winddows Explorer beispielsweise auf eine *.jpg Datei mit der rechten Maustaste, dann Öffnen mit und dann wählst du den Editor. (Bitte nicht das Häkchen stzen bei immer öffnen mit)

Was du dann siehst im Editor würde dem entsprechen, wenn du in deiner Anwendung eine "falsch" Textdatei einliest.

Ich hoffe, du verstehst was ich meine. Eine Dateiendung alleine sagt rein gar nichts über deren Inhalt, geschweige denn Aufbau aus.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: Manfred X
Datum: 28.06.17 07:42

Hallo!

Eine 100%-tig sichere Vorab-Überprüfung, ob der Inhalt einer
Datei bestimmten Anforderungen genügt, ist in den meisten Fällen
nicht möglich.

Z.B. kann eine JPG-Datei ungültige Verweise/Zeiger auf bestimmte Daten-
Bereiche enthalten, was beim Lesen (mit manchen älteren Routinen) sogar
zum Programm-Absturz führt.

Gewöhnlich werden vor dem Lesen nur einige Grund-Bestandteile der
Datenstruktur (sog. "magic bytes") gecheckt.
Beim strukturierten Inhalt von Zeichenfolgen-Dateien (txt, csv, xml, ....)
sind in der Regel solche Indikatoren/Identifier nicht verfügbar.
(Man kann eine Kennung an den Anfang des Dateiinhalts setzen:
erzeugendes Programm, Version, ...)

Eine gewisse Sicherheit bieten Verfahren, die beim Erstellen der Datei
eine Checksumme berechnen, die vor dem Einlesen zur Kontrolle des
Inhalts herangezogen werden kann.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: ERBRU
Datum: 28.06.17 15:41

na ja Jungs, das ist mir dann doch alles zu viel Aufwand.

was passiert denn wenn man die falsche "Datei" erwischt also dem Schema nicht entspricht?

mehr wollte ich nicht, und mit Nachdruck würde mir nie erlauben einen von euch zu verarschen!

also bis denne ich schau evtl. bald mal wieder rein
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: Franki
Datum: 29.06.17 03:06

Hallo ERBRU
Zitat:


was passiert denn wenn man die falsche "Datei"
erwischt also dem Schema nicht entspricht?


Dann passiert genau das was im Betreff deiner Frage steht, nämlich dass dein Programm die Datei nicht (oder nicht korrekt) verarbeiten kann.

Zitat:


mehr wollte ich nicht


Du wolltest schon mehr, ich vermute mal Lösungvorschläge wie du das verhindern kannst, dass eine falsche Datei verarbeitet werden kann bzw. du dem User einen Hinweis geben kannst dass er eine falsche Datei ausgewählt hat zur Verarbeitung.

Und da sind halt Kontrollen notwendig, da kommst du nicht drum herum. Wie weit die gehen ist deine Sache, Fakt ist halt, dass du gewisse Analysen selbst machen mußt um zu entscheiden, ob die Datei für dein Programm tauglich ist oder nicht.

Ein sehr hoher Prozentsatz der Programmierarbeit besteht nun mal darin INPUT woher auch immer zu prüfen/zu analysieren.

Je komplexer die eigene Anwendung wird desto höher wird dieser Aufwand.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: Franki
Datum: 29.06.17 03:18

Hallo Manfred
Zitat:



Gewöhnlich werden vor dem Lesen nur einige Grund-Bestandteile
der Datenstruktur gecheckt.
Beim strukturierten Inhalt von Zeichenfolgen-Dateien (txt,
csv, xml, ....) sind in der Regel solche Indikatoren/Identifier nicht
verfügbar.


Genau, aber wenn die Datei dann gelesen wird stellt sich ja schnell heraaus, dass die Struktur (allgemeine oder speziell) nicht stimmt. Und genau darauf wollte ich ja hinweisen, dass man in seinem eigenen Programm schon kontrollieren muss, ob die Daten den eigenen Anforderungen entsprechen.

Zitat:


Eine gewisse Sicherheit bieten Verfahren, die beim Erstellen
der Datei eine Checksumme berechnen, die vor dem Einlesen zur Kontrolle
des Inhalts herangezogen werden kann.


Ja aber das scheint mir nicht Thema der Fragestellung gewesen zu sein. Wenn Fremddateien eingelesen werden müssen, kann man sich ja sowieso nicht wirklich auf solche Merkmale wie Checksumme usw. verlassen, schon gar nicht bei txt usw.

Es ging ja eigentlich nur darum eine strukturierte Datei verarbeiten zu können, und da muss man halt prüfen, ob die Daten stimmen, (z.B. per Split ob die Anzahl stimmt usw.) Mehr wollte ich in meiner ursprünglichen Antwort eigentlich nicht sagen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: ERBRU
Datum: 29.06.17 06:14

Hallo Franki,

das ist sehr viel Input habe aber noch nicht begriffen wie ich es bun abfangen könnte dem Anwender übermittel "Datei kann nicht verarbeitet werden" ich habe das halt noch nie so gemacht mit Dateien verarbeiten meine ich. Nun wird wieder kommen (will ich euch verarschen) Nein bin nur ehrlich zu dem Thema. Du sagst ja selbst das es aufwendig ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: sv00010
Datum: 29.06.17 11:29

ERBRU schrieb:
Zitat:

Hallo Franki,

das ist sehr viel Input habe aber noch nicht begriffen wie
ich es bun abfangen könnte dem Anwender übermittel
"Datei kann nicht verarbeitet werden" ich habe das
halt noch nie so gemacht mit Dateien verarbeiten meine ich.
Nun wird wieder kommen (will ich euch verarschen) Nein bin
nur ehrlich zu dem Thema. Du sagst ja selbst das es aufwendig
ist.

Nein. Die grundsätzliche Frage ist doch, darfst du selber die Verarbeitungsweise ändern oder wird die dir von deinem Chef aufgezwungen?
Wenn die Antwort lautet, vom Chef aufgezwungen, dann muss man eben irgendwie eine Lösung zusammenpfuschen.
Wenn die Antwort lautet, dass du das selber entscheiden darfst, dann hat sich das Thema abspeichern als reine Textdatei vermutlich erledigt.
Du merkst ja selber, dass man sich einen abrackert und das Ergebnis nur Mangelhaft ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programm kann die Datei nicht verarbeiten 
Autor: effeff
Datum: 29.06.17 11:40

ERBRU braucht doch nur eine Textzeile einlesen und testen, ob diese den Vorgaben entspricht; Die Textzeile wird gesplittet und dann getestet, ob der erste Teil einer Seriennummer entspricht und der nächste Teil ein Datum ist und ob das resultierende Array von der Dimension her in Ordnung ist. ERBRU hat von mir Code erhalten, wie eine Textzeile aufgesplittet ist, ISDATE sollte er/sie/es kennen und da sie Seriennummern eine bestimmte Länge haben, kann man z. B genau das testen bzw. ob nur Zahlen und Ziffern im Test enthalten sind...

EALA FREYA FRESENA

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