tuning4you
Gebruiker
- Lid geworden
- 3 jun 2007
- Berichten
- 328
Ik heb een applicatie geschreven dat data wegschrijft naar een access database.
Deze applicatie leest data uit bestanden en schrijft dit weg in een tabel wanneer het ID nog niet beschikbaar is. Er wordt een update uitgevoerd wanneer het ID wel beschikbaar is. Dit voor 3 tabellen.
Wanneer ik mijn applicatie draai kan het 3 bestanden verwerken per seconde. Wanneer de database zelf geopend staat, dan wordt er slechts 1 bestand verwerkt gedurende meerdere seconden. Deze verwerking is dus uiterst traag.
Ik heb volgende code in mijn eerste routine:
strSQL = "select specialistnr,id1 from specialisten where id1 = '" & objGegevens.SpecialistADT & "'"
objGegevens.SpecialistDB = DatabaseBewerking(objConnection, objGegevens, strSQL, 1)
objGegevens is a class where i collect my data for the database.
Volgende functie is nodig om na te gaan indien de data reeds beschikbaar is. Indien dit het geval is zal er een update mogelijks uitgevoerd worden als de optional blnUpdate true is. Indien de data niet beschikbaar is zal de data worden toegevoegd.
Private Function DatabaseBewerking(ByVal objConnection As OleDbConnection, ByVal objGegevens As Gegevens, ByVal strSQL As String, Optional ByVal intTable As Integer = 0, Optional ByVal blnUpdate As Boolean = False) As Integer
Dim objDataAdapter As New OleDbDataAdapter(strSQL, objConnection)
Dim objCommandBuilder As New OleDbCommandBuilder(objDataAdapter)
Dim objDataSet As New DataSet
objDataAdapter.Fill(objDataSet, "Table")
If objDataSet.Tables("Table").Rows.Count = 1 Then
DatabaseBewerking = objDataSet.Tables("Table").Rows(0).Item(0).ToString
If blnUpdate = True Then
Dim objDataRow As DataRow
objDataRow = objDataSet.Tables("Table").Rows(0)
DatabaseVullen(objGegevens, objDataRow, intTable)
objDataAdapter.Update(objDataSet.Tables("Table"))
End If
Else
Dim objDataRow As DataRow
objDataRow = objDataSet.Tables("Table").NewRow
DatabaseVullen(objGegevens, objDataRow, intTable)
objDataSet.Tables("Table").Rows.Add(objDataRow)
objDataAdapter.Update(objDataSet.Tables("Table"))
DatabaseBewerking = DatabaseBewerking(objConnection, objGegevens, strSQL)
End If
Return DatabaseBewerking
End Function
De laatste functie DatabaseVullen is nodig om de data toe te voegen of up te daten.
Private Sub DatabaseVullen(ByVal objGegevens As Gegevens, ByRef objDataRow As DataRow, ByRef intUpdate As Integer)
Select Case intUpdate
Case 1
objDataRow("id1") = objGegevens.SpecialistADT
End Select
End Sub
Iemand een idee hoe ik dit kan verbeteren?
Deze applicatie leest data uit bestanden en schrijft dit weg in een tabel wanneer het ID nog niet beschikbaar is. Er wordt een update uitgevoerd wanneer het ID wel beschikbaar is. Dit voor 3 tabellen.
Wanneer ik mijn applicatie draai kan het 3 bestanden verwerken per seconde. Wanneer de database zelf geopend staat, dan wordt er slechts 1 bestand verwerkt gedurende meerdere seconden. Deze verwerking is dus uiterst traag.
Ik heb volgende code in mijn eerste routine:
strSQL = "select specialistnr,id1 from specialisten where id1 = '" & objGegevens.SpecialistADT & "'"
objGegevens.SpecialistDB = DatabaseBewerking(objConnection, objGegevens, strSQL, 1)
objGegevens is a class where i collect my data for the database.
Volgende functie is nodig om na te gaan indien de data reeds beschikbaar is. Indien dit het geval is zal er een update mogelijks uitgevoerd worden als de optional blnUpdate true is. Indien de data niet beschikbaar is zal de data worden toegevoegd.
Private Function DatabaseBewerking(ByVal objConnection As OleDbConnection, ByVal objGegevens As Gegevens, ByVal strSQL As String, Optional ByVal intTable As Integer = 0, Optional ByVal blnUpdate As Boolean = False) As Integer
Dim objDataAdapter As New OleDbDataAdapter(strSQL, objConnection)
Dim objCommandBuilder As New OleDbCommandBuilder(objDataAdapter)
Dim objDataSet As New DataSet
objDataAdapter.Fill(objDataSet, "Table")
If objDataSet.Tables("Table").Rows.Count = 1 Then
DatabaseBewerking = objDataSet.Tables("Table").Rows(0).Item(0).ToString
If blnUpdate = True Then
Dim objDataRow As DataRow
objDataRow = objDataSet.Tables("Table").Rows(0)
DatabaseVullen(objGegevens, objDataRow, intTable)
objDataAdapter.Update(objDataSet.Tables("Table"))
End If
Else
Dim objDataRow As DataRow
objDataRow = objDataSet.Tables("Table").NewRow
DatabaseVullen(objGegevens, objDataRow, intTable)
objDataSet.Tables("Table").Rows.Add(objDataRow)
objDataAdapter.Update(objDataSet.Tables("Table"))
DatabaseBewerking = DatabaseBewerking(objConnection, objGegevens, strSQL)
End If
Return DatabaseBewerking
End Function
De laatste functie DatabaseVullen is nodig om de data toe te voegen of up te daten.
Private Sub DatabaseVullen(ByVal objGegevens As Gegevens, ByRef objDataRow As DataRow, ByRef intUpdate As Integer)
Select Case intUpdate
Case 1
objDataRow("id1") = objGegevens.SpecialistADT
End Select
End Sub
Iemand een idee hoe ik dit kan verbeteren?