Springen naar inhoud


- - - - -
DB .NET

Datareader Haalt Eerste Rij Niet Op

.NET

  • Log in a.u.b. om te beantwoorden
Er zijn 4 reacties in dit onderwerp

#1 dbschaaf

dbschaaf

    Senior Developer

  • Leden
  • PipPipPip
  • 119 berichten
    Laatst bezocht 20 sep 2016 16:42

Geplaatst op 11 juli 2016 - 18:03

Hallo!
Voor het eerst sinds lange tijd weer op deze site. Ik hoopte dat er al een oplossing voor dit probleem  op de site stond. Kan het echter niet vinden. Ben toch niet de eerste die  hier  tegen aan loopt.
Wat is het probleem:
Ik  heb een *.txt bestand en lees dit regel voor regel in en voer de data in in een Access tabel.
De eerste regel met data van het *.txt bestand wordt  echter consequent overgeslagen. Wat ik tot nog toe gevonden heb op het  web geeft mij geen oplossing.
Zo ziet mijn testcode eruit:

        Code:
Dim StrPath As String = "c:\Users\Dick van der Schaaf\Desktop\"

		Dim Conn As New OdbcConnection("Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + StrPath + ";Extensions=asc,csv,tab,txt")
		Dim Command As New Odbc.OdbcCommand("SELECT * FROM transactions1.txt", Conn)


		Conn.Open()
		Dim oDataReader As OdbcDataReader = Command.ExecuteReader(CommandBehavior.SequentialAccess)


		Call DataTableInAccessZetten(oDataReader)
(in de laatste procedure zit de volgende  loop: )
	  

While oDataReader.Read
			Dim sql As String
			sql = "INSERT INTO TblTransacties ( "
			sql += "ClientID, "
			sql += "IBAN, "
			sql += "Datum, "
			sql += "Debet_Credit, "
			sql += "Bedrag, "
			sql += "Tegenrekening, "
			sql += "TenaamstellingRekening, "
			sql += "Datum2, "
			sql += "Soort, "
			sql += "Omschrijving) "
			'
			sql += " VALUES("
			'
			' Alle items zijn alfanumeriek tenzij anders vermeld.
			'sql += Chr(34) & FrmHoofdmenu.DgvClienten.CurrentRow.Cells(0).Value.ToString & Chr(34)
			sql += Chr(34) & "89876" & Chr(34)
			sql += ", " & Chr(34) & oDataReader.GetValue(0).ToString & Chr(34)
			' Datum item
			sql += ", " & Chr(39) & GoedDatumFormaat(oDataReader.GetValue(2).ToString) & Chr(39)
			sql += ", " & Chr(34) & oDataReader.GetValue(3).ToString & Chr(34)
			' Numeriek item
			sql += ", " & oDataReader.GetValue(4).ToString
			sql += ", " & Chr(34) & oDataReader.GetValue(5).ToString & Chr(34)
			sql += ", " & Chr(34) & oDataReader.GetValue(6).ToString & Chr(34)
			' Datum item
			sql += ", " & Chr(39) & GoedDatumFormaat(oDataReader.GetValue(7).ToString) & Chr(39)
			sql += ", " & Chr(34) & oDataReader.GetValue(8).ToString & Chr(34)
			sql += ", " & Chr(34) & oDataReader.GetValue(10).ToString & Chr(34)
			sql += ")"
			Call DatabaseBewerken(sql, "Insert")

		End While

Alvast zeer bedankt voor het meedenken. Groeten van Dick van der Schaaf
It's only one step from the jungle to the zoo.

#2 Hansiebebe

Hansiebebe

    Professional Developer

  • Leden
  • PipPipPipPip
  • 259 berichten
    Laatst bezocht 11 apr 2017 07:43

Geplaatst op 12 juli 2016 - 16:54

Ik gebruik meestal de Streamreader voor tekstbestanden
Onderstaande zou moeten werken.

Code:
Dim objReader As New System.IO.StreamReader("c:\Users\Dick van der Schaaf\Desktop\")
	 Do While objReader.Peek() - 1
		 Dim textLine As String = objReader.ReadLine()
		 Dim SplitRegel As Array = Split(textLine, ";")
		 Dim sql As String
		 sql = "INSERT INTO TblTransacties ( "
		 sql += "ClientID, "
		 sql += "IBAN, "
		 sql += "Datum, "
		 sql += "Debet_Cr<span class="searchlite">edi</span>t, "
		 sql += "Bedrag, "
		 sql += "Tegenrekening, "
		 sql += "TenaamstellingRekening, "
		 sql += "Datum2, "
		 sql += "Soort, "
		 sql += "Omschrijving) "
		 '
		 sql += " VALUES("
		 '
		
		 'sql += Chr(34) & FrmHoofdmenu.DgvClienten.CurrentRow.Cells(0).Value.ToString & Chr(34)
		 sql += Chr(34) & "89876" & Chr(34)
		 sql += ", " & Chr(34) & SplitRegel(0).ToString & Chr(34)
		 ' Datum item
		 sql += ", " & Chr(39) & GoedDatumFormaat(SplitRegel.GetValue(2).ToString) & Chr(39)
		 sql += ", " & Chr(34) & SplitRegel.GetValue(3).ToString & Chr(34)
		 ' Numeriek item
		 sql += ", " & SplitRegel.GetValue(4).ToString
		 sql += ", " & Chr(34) & SplitRegel.GetValue(5).ToString & Chr(34)
		 sql += ", " & Chr(34) & SplitRegel.GetValue(6).ToString & Chr(34)
		 ' Datum item
		 sql += ", " & Chr(39) & GoedDatumFormaat(SplitRegel.GetValue(7).ToString) & Chr(39)
		 sql += ", " & Chr(34) & SplitRegel.GetValue(8).ToString & Chr(34)
		 sql += ", " & Chr(34) & SplitRegel.GetValue(10).ToString & Chr(34)
		 sql += ")"
		 Call DatabaseBewerken(sql, "Insert")


What is, That is

#3 dbschaaf

dbschaaf

    Senior Developer

  • Leden
  • PipPipPip
  • 119 berichten
    Laatst bezocht 20 sep 2016 16:42

Geplaatst op 12 juli 2016 - 17:09

Ik  ben ook  nog weer verder gaan zoeken en kwam via dezesite met een TextFieldParser die dedicated een komma delimited bestand inleest uiteindelijk goed uit.
Dank voor het meedenken en ik ga zeker ook de gegeven oplossing nog controleren. Het blijft wat mij betreft vreemd dat de ODBC reader op de tweede regel begint.
Het topic mag door de moderator worden afgesloten.
Tot spoedig,
Dick.
It's only one step from the jungle to the zoo.

#4 Damic

Damic

    Master Developer

  • Leden
  • PipPipPipPipPip
  • 514 berichten
    Laatst bezocht gisteren, 13:15
  • LocatieMechelen (BE)

Geplaatst op 17 september 2016 - 11:38

Ik zou ook die dim's buiten je loop definieren omdat je dan telkens (normaal gezien) met dezelfde memory space bezig bent
Visual Basic Code:
Dim objReader As New System.IO.StreamReader("c:\Users\Dick van der Schaaf\Desktop\")
Dim textLine As String
Dim SplitRegel As Array
Dim sql As String
Do While objReader.Peek() - 1
		 textLine = objReader.ReadLine()
		 SplitRegel = Split(textLine, ";")
'...
loop
sql = nothing
SplitRegel=nothing
textLine=nothing


#5 dbschaaf

dbschaaf

    Senior Developer

  • Leden
  • PipPipPip
  • 119 berichten
    Laatst bezocht 20 sep 2016 16:42

Geplaatst op 20 september 2016 - 16:44

Dank je wel voor deze algemene tip om "netter" te programmeren.
Groeten van Dick
It's only one step from the jungle to the zoo.





Ook met taq DB .NET, .NET voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[DB .NET] Untitled 1

Met dank aan PascalBianca die tot op heden alles bijhoud sinds anno dec 2010)
Met dank aan J├╝rgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
vbib.be - vbnet.be - vbdotnet.be - visualbasic.be