Gibt es eine Möglichkeit installierte Programme automatisch aus VB heraus zu ändern/reparieren?

  • VB.NET
  • .NET (FX) 4.5–4.8

    Gibt es eine Möglichkeit installierte Programme automatisch aus VB heraus zu ändern/reparieren?

    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

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Aus Datentabelle lesen
    3. ''' </summary>
    4. ''' <param name="Banknummer"></param>
    5. ''' <param name="TabName"></param>
    6. ''' <param name="Auftrag"></param>
    7. Public Sub Laden(ByVal Banknummer As Integer, ByVal TabName As String, Optional ByVal Auftrag As String = "Select *")
    8. BNr = Banknummer
    9. NameTabelle = TabName
    10. If Auftrag = "Select *" Then
    11. VerbindungsAuftrag = Auftrag & " From " & TabName & " Order By ID"
    12. Else
    13. VerbindungsAuftrag = Auftrag
    14. End If
    15. Select Case Banknummer
    16. Case 1
    17. Verbindungsstring = Daten.Verbindungsstring_MBHome
    18. Datenverbindung = Daten.Verbindung_MBHome
    19. Case 2
    20. Verbindungsstring = Daten.Verbindungsstring_MBMein
    21. Datenverbindung = Daten.Verbindung_MBMein
    22. Case 3
    23. Verbindungsstring = Daten.Verbindungsstring_MBImob
    24. Datenverbindung = Daten.Verbindung_MBImob
    25. End Select
    26. Try
    27. Oeffnen()
    28. IstInitalisiert = False
    29. If PrimKeyName = Nothing Then PrimKeyName = "ID"
    30. If Nummer_Feld = Nothing Then Nummer_Feld = "Nummer"
    31. Using Datenverbindung = New OleDbConnection(Verbindungsstring)
    32. DataAdapter = New OleDbDataAdapter(VerbindungsAuftrag, Me.Datenverbindung)
    33. DataBuilder = New OleDbCommandBuilder(DataAdapter) With {.QuotePrefix = "[", .QuoteSuffix = "]"}
    34. DataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
    35. DataTabelle = New DataTable
    36. DataAdapter.FillSchema(DataTabelle, SchemaType.Mapped)
    37. DataAdapter.Fill(DataTabelle)
    38. DataTabelle.PrimaryKey = New DataColumn() {DataTabelle.Columns(PrimKeyName)}
    39. TabellenName = DataTabelle.TableName
    40. DataZeile = DataTabelle.NewRow
    41. IstInitalisiert = True
    42. WurdeInitalisiert = True
    43. If Not DataTabelle.Rows.Count < 1 Then
    44. ErsteZeile = DataTabelle.Rows(0)
    45. LetzteZeile = DataTabelle.Rows(DataTabelle.Rows.Count - 1)
    46. End If
    47. End Using
    48. Catch ex As Exception
    49. Daten.Steuerung.Fehler.Schreiben(Now, "Daten Lesen", DataTabelle.TableName, Datenverbindung.State, ex.Message)
    50. End Try
    51. Schliessen()
    52. MeinInstall()
    53. End Sub


    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Datenverbindung Öffnen
    3. ''' </summary>
    4. Private Sub Oeffnen()
    5. If Not Daten.Steuerung.Einstellung.VerbindungOeffnen Then Exit Sub
    6. Try
    7. If Datenverbindung.State <> ConnectionState.Open Then
    8. If Datenverbindung.State <> ConnectionState.Connecting Then
    9. Datenverbindung.Open()
    10. End If
    11. End If
    12. Catch ex As Exception
    13. Daten.Steuerung.Fehler.Schreiben(Now, "Daten Oeffnen", DataTabelle.TableName, Datenverbindung.State, ex.Message)
    14. End Try
    15. End Sub

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Speichert die Datentabelle in der Datenbank
    3. ''' </summary>
    4. Public Sub Speichern()
    5. Try
    6. Oeffnen()
    7. DataAdapter.Update(DataTabelle)
    8. Catch ex As Exception
    9. Daten.Steuerung.Fehler.Schreiben(Now, "Daten Speichern", DataTabelle.TableName, Datenverbindung.State, ex.Message, True)
    10. End Try
    11. Schliessen()
    12. End Sub
    13. Private _IdentityCommand As New OleDbCommand("SELECT @@IDENTITY")
    14. Private Sub _RowUpdated(ByVal sender As Object, ByVal e As OleDbRowUpdatedEventArgs) Handles DataAdapter.RowUpdated
    15. If Not Daten.Steuerung.Einstellung.ZeileIdent Then Exit Sub
    16. If e.StatementType = StatementType.Insert Then
    17. _IdentityCommand.Connection = e.Command.Connection
    18. _IdentityCommand.Transaction = e.Command.Transaction
    19. e.Row(e.Row.Table.PrimaryKey(0)) = CInt(_IdentityCommand.ExecuteScalar())
    20. End If
    21. End Sub

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Datenverbindung Schliessen, Absolut ohne Beachtung der Einstellungen
    3. ''' </summary>
    4. ''' <param name="Absolut"></param>
    5. Public Sub Schliessen(Optional ByVal Absolut As Boolean = False)
    6. If Absolut Then
    7. Try
    8. Datenverbindung.Close()
    9. Catch ex As Exception
    10. Daten.Steuerung.Fehler.Schreiben(Now, "Daten Schliessen (Absolut)", DataTabelle.TableName, Datenverbindung.State, ex.Message)
    11. End Try
    12. Exit Sub
    13. End If
    14. If Not Daten.Steuerung.Einstellung.VerbindungSchliessen Then Exit Sub
    15. Try
    16. Datenverbindung.Close()
    17. Catch ex As Exception
    18. Daten.Steuerung.Fehler.Schreiben(Now, "Daten Schliessen", DataTabelle.TableName, Datenverbindung.State, ex.Message)
    19. End Try
    20. End Sub



    Beiträge zusammengefügt. ~Thunderbolt
    Bilder
    • DB_Setup.png

      117,54 kB, 3.840×2.160, 39 mal angesehen
    • Datenbankfehler.png

      114,25 kB, 3.840×2.160, 36 mal angesehen
    Gruß Markus

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Thunderbolt“ ()