Hallo und einen guten Tag zusammen.
Bei mir treten öfters Probleme mit der Accsess-Datenbank (Office 365 / 2016) und meinem VB-Programm auf.
Meist geschieht dies, wenn Microsoft Updates für Office übermittelt.
Mein Programm kann dann Datensätze nicht mehr richtig abspeichern. Bei Excelausdruck friert das Programm ein.
Repariere dann manuell die
Microsoft Accsess database engine 2010 (German) und die
Microsoft Office - de - de.
Danach funktioniert i.d.R. wieder die Kommunikation mit der Datenbank.
Der Exceldruck funktioniert meist nur aus der IDE. Mit Exe-Version habe ich ständig Probleme.
Bild2)
Es werden vier eMailkonten überprüft.
Tagesdaten sind Wetter, Benzin, Heizöl, Pelletspreise. Werden dann nicht abgespeichert.
Die Frage nun:
Kann man aus VB heraus die o.a. Programme automatisch reparieren lassen?
Vielleicht stimmt mit meinem Datenmodell was nicht, obwohl ich damit schon seit 10 Jahren arbeite.
Spoiler anzeigen
Beiträge zusammengefügt. ~Thunderbolt
Bei mir treten öfters Probleme mit der Accsess-Datenbank (Office 365 / 2016) und meinem VB-Programm auf.
Meist geschieht dies, wenn Microsoft Updates für Office übermittelt.
Mein Programm kann dann Datensätze nicht mehr richtig abspeichern. Bei Excelausdruck friert das Programm ein.
Repariere dann manuell die
Microsoft Accsess database engine 2010 (German) und die
Microsoft Office - de - de.
Danach funktioniert i.d.R. wieder die Kommunikation mit der Datenbank.
Der Exceldruck funktioniert meist nur aus der IDE. Mit Exe-Version habe ich ständig Probleme.
Bild2)
Es werden vier eMailkonten überprüft.
Tagesdaten sind Wetter, Benzin, Heizöl, Pelletspreise. Werden dann nicht abgespeichert.
Die Frage nun:
Kann man aus VB heraus die o.a. Programme automatisch reparieren lassen?
Vielleicht stimmt mit meinem Datenmodell was nicht, obwohl ich damit schon seit 10 Jahren arbeite.
VB.NET-Quellcode
- ''' <summary>
- ''' Aus Datentabelle lesen
- ''' </summary>
- ''' <param name="Banknummer"></param>
- ''' <param name="TabName"></param>
- ''' <param name="Auftrag"></param>
- Public Sub Laden(ByVal Banknummer As Integer, ByVal TabName As String, Optional ByVal Auftrag As String = "Select *")
- BNr = Banknummer
- NameTabelle = TabName
- If Auftrag = "Select *" Then
- VerbindungsAuftrag = Auftrag & " From " & TabName & " Order By ID"
- Else
- VerbindungsAuftrag = Auftrag
- End If
- Select Case Banknummer
- Case 1
- Verbindungsstring = Daten.Verbindungsstring_MBHome
- Datenverbindung = Daten.Verbindung_MBHome
- Case 2
- Verbindungsstring = Daten.Verbindungsstring_MBMein
- Datenverbindung = Daten.Verbindung_MBMein
- Case 3
- Verbindungsstring = Daten.Verbindungsstring_MBImob
- Datenverbindung = Daten.Verbindung_MBImob
- End Select
- Try
- Oeffnen()
- IstInitalisiert = False
- If PrimKeyName = Nothing Then PrimKeyName = "ID"
- If Nummer_Feld = Nothing Then Nummer_Feld = "Nummer"
- Using Datenverbindung = New OleDbConnection(Verbindungsstring)
- DataAdapter = New OleDbDataAdapter(VerbindungsAuftrag, Me.Datenverbindung)
- DataBuilder = New OleDbCommandBuilder(DataAdapter) With {.QuotePrefix = "[", .QuoteSuffix = "]"}
- DataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
- DataTabelle = New DataTable
- DataAdapter.FillSchema(DataTabelle, SchemaType.Mapped)
- DataAdapter.Fill(DataTabelle)
- DataTabelle.PrimaryKey = New DataColumn() {DataTabelle.Columns(PrimKeyName)}
- TabellenName = DataTabelle.TableName
- DataZeile = DataTabelle.NewRow
- IstInitalisiert = True
- WurdeInitalisiert = True
- If Not DataTabelle.Rows.Count < 1 Then
- ErsteZeile = DataTabelle.Rows(0)
- LetzteZeile = DataTabelle.Rows(DataTabelle.Rows.Count - 1)
- End If
- End Using
- Catch ex As Exception
- Daten.Steuerung.Fehler.Schreiben(Now, "Daten Lesen", DataTabelle.TableName, Datenverbindung.State, ex.Message)
- End Try
- Schliessen()
- MeinInstall()
- End Sub
VB.NET-Quellcode
- ''' <summary>
- ''' Datenverbindung Öffnen
- ''' </summary>
- Private Sub Oeffnen()
- If Not Daten.Steuerung.Einstellung.VerbindungOeffnen Then Exit Sub
- Try
- If Datenverbindung.State <> ConnectionState.Open Then
- If Datenverbindung.State <> ConnectionState.Connecting Then
- Datenverbindung.Open()
- End If
- End If
- Catch ex As Exception
- Daten.Steuerung.Fehler.Schreiben(Now, "Daten Oeffnen", DataTabelle.TableName, Datenverbindung.State, ex.Message)
- End Try
- End Sub
VB.NET-Quellcode
- ''' <summary>
- ''' Speichert die Datentabelle in der Datenbank
- ''' </summary>
- Public Sub Speichern()
- Try
- Oeffnen()
- DataAdapter.Update(DataTabelle)
- Catch ex As Exception
- Daten.Steuerung.Fehler.Schreiben(Now, "Daten Speichern", DataTabelle.TableName, Datenverbindung.State, ex.Message, True)
- End Try
- Schliessen()
- End Sub
- Private _IdentityCommand As New OleDbCommand("SELECT @@IDENTITY")
- Private Sub _RowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs) Handles DataAdapter.RowUpdated
- If Not Daten.Steuerung.Einstellung.ZeileIdent Then Exit Sub
- If e.StatementType = StatementType.Insert Then
- _IdentityCommand.Connection = e.Command.Connection
- _IdentityCommand.Transaction = e.Command.Transaction
- e.Row(e.Row.Table.PrimaryKey(0)) = CInt(_IdentityCommand.ExecuteScalar())
- End If
- End Sub
VB.NET-Quellcode
- ''' <summary>
- ''' Datenverbindung Schliessen, Absolut ohne Beachtung der Einstellungen
- ''' </summary>
- ''' <param name="Absolut"></param>
- Public Sub Schliessen(Optional ByVal Absolut As Boolean = False)
- If Absolut Then
- Try
- Datenverbindung.Close()
- Catch ex As Exception
- Daten.Steuerung.Fehler.Schreiben(Now, "Daten Schliessen (Absolut)", DataTabelle.TableName, Datenverbindung.State, ex.Message)
- End Try
- Exit Sub
- End If
- If Not Daten.Steuerung.Einstellung.VerbindungSchliessen Then Exit Sub
- Try
- Datenverbindung.Close()
- Catch ex As Exception
- Daten.Steuerung.Fehler.Schreiben(Now, "Daten Schliessen", DataTabelle.TableName, Datenverbindung.State, ex.Message)
- End Try
- End Sub
Beiträge zusammengefügt. ~Thunderbolt
Gruß Markus
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Thunderbolt“ ()