Guys,
Ben ik weer eens. Heb me vandaag de hele dag rot zitten zoeken en proberen maar kom niet op een oplossing. Misschien dat iemand weet hoe het precies moet, of me in de richting duwen van.
Ik heb dus een CSV bestand dat de laatste row uit een DB3 bestand haalt. Dit doet hij elke 10min (instelbaar). Zover werkt de code dat hij het bestand aanmaakt en de laatste row geschreven heeft. Echter moet ik ook een controle hebben dat als het bestand bestaat, hij (na die 10min, bij de volgende schrijf actie) eerst een nieuwe lijn doet en dan de nieuwe row toevoegd.
Code zover:
En dan het volgende. Ik dacht (even snel) een progressbar te gebruiken bij het inladen van de data in een dataset. Dit deed ik als volgt:
Maar het gekke is, hij stopt bij ongeveer 3/4 van het laden van de bar en dan stopt het programma in zijn geheel. Maximum is 100, minimum is 0, step is 1.
Als iemand een idee heeft op het eerste, of me kan zeggen wat bij tweede probleem fout is, please tell me!
Ben ik weer eens. Heb me vandaag de hele dag rot zitten zoeken en proberen maar kom niet op een oplossing. Misschien dat iemand weet hoe het precies moet, of me in de richting duwen van.
Ik heb dus een CSV bestand dat de laatste row uit een DB3 bestand haalt. Dit doet hij elke 10min (instelbaar). Zover werkt de code dat hij het bestand aanmaakt en de laatste row geschreven heeft. Echter moet ik ook een controle hebben dat als het bestand bestaat, hij (na die 10min, bij de volgende schrijf actie) eerst een nieuwe lijn doet en dan de nieuwe row toevoegd.
Code zover:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| Public Sub exportDGVToCSV(ByVal strExportFileName As String, ByVal DataGridView As DataGridView) Try Dim strDelimiter As String = ";" Dim strRowData As String = "" Dim indexRow As Integer = DataGridView.RowCount() - 1 Dim aantalKol As Integer = DataGridView.ColumnCount - 1 Dim datum As String = Regex.Match(DataGridView.Rows(indexRow).Cells(0).Value.ToString, "[0-9]{1,}/[0-9]{1,}/[0-9]{2,}").ToString Dim jaar As String = Year(datum) Dim maand As String = MonthName(Month(DateTime.Parse(datum))) Dim dag As String = DateTime.Parse(datum).DayOfWeek Dim path As String = System.IO.Path.GetDirectoryName(destination.FileName) & "\" & jaar & "\" & maand Directory.CreateDirectory(path) Dim bestandsNaam As String = dag & "-" & maand & "-" & jaar strExportFileName = path & "\" & bestandsNaam & ".csv" Dim myWriter As StreamWriter If Not File.Exists(strExportFileName) Then myWriter = File.CreateText(strExportFileName) Else 'append de nieuwe rij End If strRowData = "" For i = 0 To aantalKol Step 1 strRowData = strRowData & DataGridView.Rows(indexRow).Cells(i).Value.ToString & strDelimiter & " " Next myWriter.WriteLine(strRowData) myWriter.Flush() myWriter.Close() MessageBox.Show("Klaar met schrijven!" & vbCrLf & "Bestand is opgeslagen in: " & path, "Succes", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) Catch ex As Exception frmMain.throwErrorMsg(9, "Error") End Try End Sub |
En dan het volgende. Ik dacht (even snel) een progressbar te gebruiken bij het inladen van de data in een dataset. Dit deed ik als volgt:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| Public Sub mnuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpen.Click Dim openFile As New OpenFileDialog openFile.Filter = "DB3 files (*.db3)|*.db3" If (openFile.ShowDialog() = Windows.Forms.DialogResult.OK) Then Dim con As SQLiteConnection = New SQLiteConnection("Data Source=" & openFile.FileName & ";") Dim da As SQLiteDataAdapter = New SQLiteDataAdapter("SELECT * FROM data_items", con) Dim ds As DataSet = New DataSet While da.Fill(ds, "data_items") pbarLoad.PerformStep() If pbarLoad.Value = pbarLoad.Maximum Then pbarLoad.Value = 0 End If End While dgvMain.DataSource = ds.Tables(0) con.Close() con.Dispose() pbarLoad.Value = 0 End If End Sub |
Maar het gekke is, hij stopt bij ongeveer 3/4 van het laden van de bar en dan stopt het programma in zijn geheel. Maximum is 100, minimum is 0, step is 1.
Als iemand een idee heeft op het eerste, of me kan zeggen wat bij tweede probleem fout is, please tell me!