| |
VB.NET - FortgeschritteneProgramm 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 | |
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. | |
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 | |
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 | |
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? | |
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. | |
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 | |
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. | |
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 | |
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 | |
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 | |
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. | |
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. | |
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 | |
| 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 |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|