SQL Datenbank Synchronisation als Ziel eine Datenbank im Netzwerk?

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    SQL Datenbank Synchronisation als Ziel eine Datenbank im Netzwerk?

    Guten Tag
    Ich bin hier gerade neu aber weil ich schon so oft hier gelandet bin, dachte ich mir registrier ich mich doch mal.
    Also mein Problem ist, ich habe ein fertiges Programm geschrieben mit einer Datenbank in welcher man unsere Mitarbeiter eintragen kann und beim nächsten Button hat man eine Gegenstandsliste in welcher man dann eingetragene Mitarbeiter als "Besitzer" hinzufügen kann.
    Nun habe ich schnell bemerkt das nicht anders möglich ist, als nur eine Datenbank zu haben, da momentan jeder der das Programm hat alles in seine eigene lokale Datenbank speichert.
    Ich habe gerade keine Ahnung wie ich das jetzt ändere. Ich dachte da, dass man die Datenbank für alle entweder im Firmennetz hätte oder auf einem FTP-Server.
    Kann mir da jemand Rat geben wie ich das nun am besten ändere?

    Visual Basic Version: 2010 Express
    Datenbank: Microsoft SQL Server Compact 3.5

    Danke schonmal im Vorraus für die Antworten.
    mfg

    Orion
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    jo, prinzipiell genau so.
    Eine für alle erreichbare DB aufsetzen, und im Programm einfach nur den ConnectionString ändern.
    Im Firmennetz kannste vlt. sogar bei SqlCe bleiben, im INet müssteste auf SqlServer oder eine anneres nicht dateibasiertes DB-System umsteigen.

    Problematisch ist eiglich immer die Sicherheitsfrage, wenn mehrere Leuts dieselbe DB nutzen
    Habe das Problem ganz einfach gelöst, das ich das Programm mitsamt allen Daten auf den Server kopiert habe und jedem per Logon Script eine Verknüpfung erstellt habe. Aber seither, habe ich ein seltsames Problem das wenn ich einen neuen Gegenstand eintrage mit der Tabelle schreibe ich das ungefähr so rein:
    Name: CTWN133;
    Modell: Folio 9470m Ultrabook;
    Typ: Notebook;
    Seriennummer: *******;
    usw.

    Wenn ich nun aber in die nächste Spalte gehe oder speichern möchte dann schreibt mir die Tabelle alles um in

    Name: Folio 9470m Ultrabook;
    Modell: Folio 9470m Ultrabook;
    Typ: Notebook;
    Seriennummer: Notebook;
    usw.

    Im 2. Fenster mit der Mitarbeiter Verwaltung läuft alles so wie es sollte.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Danke heirfür, werds mir mal anschauen. Ich probiere noch ein bisschen selbst was aus schliesslich muss ich das ganze sowieso mal genauer anschauen, hab noch nicht viel mit VB gearbeitet.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Ja ok, haben es getestet und es funktioniert nicht einwandfrei. Schlussendlich ist es aber auch egal weil wir uns entschieden haben, das nur jeweils eine Person seine Daten einträgt. Also bisher läuft das Programm so ohne Probleme. Bis auf eines bei dem ich gerade planlos bin wie ich dies realisieren soll. also im Moment sieht es so aus, das sich zuerst sozusagen der Launcher öffnet auf dem 2 Buttons sind. der erste führt zur Mitarbeiter Verwaltung und der zweite zur Gegenstands Verwaltung.
    In der Gegenstands Verwaltung kann man nun die Daten zu einem Gegenstand reinschreiben und am Schluss per Combobox die mit der Mitarbeiter-Verwaltung verknüpft ist einen bereits gespeicherten Mitarbeiter auswählen.
    Wie ermögliche ich jetzt, das eine 2. Tabelle in der Gegenstands Verwaltung ist, bei der man zuerst einen Mitarbeiter per Combobox auswählt und danach angezeigt bekommt, welche Gegenstände dem angewählten Mitarbeiter gehören?

    PS: Ich bin hier Lehrling und mache es nur weil es schöner als Excel ist und momentan an internen Sachen arbeite ^^
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    L.Orion schrieb:

    Wie ermögliche ich jetzt, das eine 2. Tabelle in der Gegenstands Verwaltung ist, bei der man zuerst einen Mitarbeiter per Combobox auswählt und danach angezeigt bekommt, welche Gegenstände dem angewählten Mitarbeiter gehören?
    Dassis ein ParentChildView, und sowas ist in "Datenbank in 10 Minuten" auf Movie-Tuts ja genau vorgeführt.
    Nur statt des linken DGVs bindest du halt an eine Combobox.

    ParentChildViews mit Combobox kriegst du auch in meim allgemeinen Tut zu sehen: vier Views
    Da ist auch ein Download bei oder verlinkt, sodass du dich vonne Funktionalität überzeugen kannst.
    Auch ParentChildViews sind in Viele DbSamples - teilweise auch mit Comboboxen.

    Wie gesagt: ob Combo, Listbox oder DGV ist vonne Datenverarbeitung her irrelevant - es ist ein ParentChild-View.
    Ich habe es irgendwie hinbekommen nach langem probieren ^^ Nun habe ich noch diesen Bug mit den Tücken der Comboboxen. Dazu gibts ja diesen Post hier:
    Comboboxen Tücken

    Aber ich blicke nicht wie genau man vorgehen muss. Ich bin da irgendwie gerade zu blöd für. Ich hab einfach mal ein MyBase.Reload() in die Buttons "Schliessen" und "Zurück" gesetzt. Funktioniert aber nicht und ich weiss auch nicht ob das überhaupt Sinn hat.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Tut mir Leid das ichs nicht besser beschreiben konnte. Also manchmal wenn ich nachdem speichern von Daten das Programm schliesse gibt er mir ca 30 Error Fenster aus und löscht scheinbar die Comboboxen. Manchmal wenn ich schliesse erhalte ich diesen Fehler:
    System.ArgumentException: Der DataGridViewComboBoxCell-Wert ist ungültig.

    Nun wie ich in dem Thread da gelesen habe sollten das diese Tücken sein:
    Tücke beim Laden: Dataset.ReadXml kümmert sich nicht um die Reihenfolge, in der die Tabellen geladen werden. Dadurch sind im DGV schon Daten drin - die Combos sind aber noch garnet bereit.
    Daher wird in Reload() für alle DataTables zeitweilig tb.BeginLoadData() aufgerufen - ein Mechanismus, der alle Databindings aussetzt.
    Diese Methode beschleunigt gleichzeitig den LadeVorgang erheblich.

    Tücke beim Schließen: WinForms hat den Bug, dass beim Schließen erst die Components disposed werden (also auch die BindingSources), danach erst die Controls. Da meckern dann die ComboColumns rum, wenn ihnen ihre DataSource unterm Hintern weg-disposed wird.
    Deshalb die Methode frmPhonebook_FormClosed()

    Weiter weiss ich leider nicht x.x
    Ausserdem habe ich gar keine ReadXml Datei erstellt, muss ich dies nachholen?
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Na, das die Methode frmPhonebook_FormClosed() angewendet wird, nur steh ich gerade voll auf dem Schlauch und hab keine Ahnung was ich mit diesen 2 Wörtern machen soll x.x
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Ok, habe es hinbekommen^^ ich war glaub ich nur gerade an einem Blackout. Also ja es funktioniert soweit. Aber ein neuer Fehler ist aufgetaucht -.- wenn ich bei den Gegenständen nun aus im Dropdown einen Besitzer zuweise ( welcher aus der Mitarbeiter Liste die Namen lädt.) erscheint folgender Fehler:
    Spoiler anzeigen

    Brainfuck-Quellcode

    1. Informationen über das Aufrufen von JIT-Debuggen
    2. anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.
    3. ************** Ausnahmetext **************
    4. System.InvalidOperationException: Für ein Update ist ein gültiger UpdateCommand erforderlich, wenn eine DataRow-Auflistung mit modifizierten Zeilen weitergegeben wird.
    5. bei WindowsApplication1._SQL_KDataSetTableAdapters.TableAdapterManager.UpdateAll(_SQL_KDataSet dataSet) in C:\Users\dgerbd.CENTAURY\Desktop\Inventariesierung Stable\WindowsApplication1\WindowsApplication1\_SQL_KDataSet.Designer.vb:Zeile 2833.
    6. bei WindowsApplication1.Form3.GegenstandBindingNavigatorSaveItem_Click(Object sender, EventArgs e) in C:\Users\dgerbd.CENTAURY\Desktop\Inventariesierung Stable\WindowsApplication1\WindowsApplication1\Form3.vb:Zeile 6.
    7. bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    8. bei System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
    9. bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    10. bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    11. bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    12. bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    13. bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    14. bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    15. bei System.Windows.Forms.Control.WndProc(Message& m)
    16. bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    17. bei System.Windows.Forms.ToolStrip.WndProc(Message& m)
    18. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    19. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    20. bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    21. ************** Geladene Assemblys **************
    22. mscorlib
    23. Assembly-Version: 4.0.0.0.
    24. Win32-Version: 4.0.30319.18033 built by: FX45RTMGDR.
    25. CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.
    26. ----------------------------------------
    27. Inventarisierung 0.3
    28. Assembly-Version: 1.0.0.0.
    29. Win32-Version: 1.0.0.0.
    30. CodeBase: file:///P:/Inventarisierung/V0.3%20unstable/Inventarisierung%200.3.exe.
    31. ----------------------------------------
    32. Microsoft.VisualBasic
    33. Assembly-Version: 10.0.0.0.
    34. Win32-Version: 11.0.50709.17929 built by: FX45RTMREL.
    35. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
    36. ----------------------------------------
    37. System
    38. Assembly-Version: 4.0.0.0.
    39. Win32-Version: 4.0.30319.18033 built by: FX45RTMGDR.
    40. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
    41. ----------------------------------------
    42. System.Core
    43. Assembly-Version: 4.0.0.0.
    44. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    45. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.
    46. ----------------------------------------
    47. System.Windows.Forms
    48. Assembly-Version: 4.0.0.0.
    49. Win32-Version: 4.0.30319.18037 built by: FX45RTMGDR.
    50. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
    51. ----------------------------------------
    52. System.Drawing
    53. Assembly-Version: 4.0.0.0.
    54. Win32-Version: 4.0.30319.18022 built by: FX45RTMGDR.
    55. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
    56. ----------------------------------------
    57. System.Runtime.Remoting
    58. Assembly-Version: 4.0.0.0.
    59. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    60. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
    61. ----------------------------------------
    62. System.Data
    63. Assembly-Version: 4.0.0.0.
    64. Win32-Version: 4.0.30319.18033 built by: FX45RTMGDR.
    65. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll.
    66. ----------------------------------------
    67. System.Xml
    68. Assembly-Version: 4.0.0.0.
    69. Win32-Version: 4.0.30319.18033 built by: FX45RTMGDR.
    70. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
    71. ----------------------------------------
    72. System.Windows.Forms.resources
    73. Assembly-Version: 4.0.0.0.
    74. Win32-Version: 4.0.30319.18010 built by: FX45RTMGDR.
    75. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
    76. ----------------------------------------
    77. System.Data.DataSetExtensions
    78. Assembly-Version: 4.0.0.0.
    79. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    80. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.DataSetExtensions/v4.0_4.0.0.0__b77a5c561934e089/System.Data.DataSetExtensions.dll.
    81. ----------------------------------------
    82. System.Numerics
    83. Assembly-Version: 4.0.0.0.
    84. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    85. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll.
    86. ----------------------------------------
    87. System.Data.SqlServerCe
    88. Assembly-Version: 3.5.1.0.
    89. Win32-Version: 3.5.8080.0.
    90. CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Data.SqlServerCe/3.5.1.0__89845dcd8080cc91/System.Data.SqlServerCe.dll.
    91. ----------------------------------------
    92. System.Transactions
    93. Assembly-Version: 4.0.0.0.
    94. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    95. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll.
    96. ----------------------------------------
    97. System.Configuration
    98. Assembly-Version: 4.0.0.0.
    99. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    100. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
    101. ----------------------------------------
    102. System.Data.resources
    103. Assembly-Version: 4.0.0.0.
    104. Win32-Version: 4.0.30319.18010 built by: FX45RTMGDR.
    105. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Data.resources.dll.
    106. ----------------------------------------
    107. System.EnterpriseServices
    108. Assembly-Version: 4.0.0.0.
    109. Win32-Version: 4.0.30319.17929 built by: FX45RTMREL.
    110. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll.
    111. ----------------------------------------
    112. mscorlib.resources
    113. Assembly-Version: 4.0.0.0.
    114. Win32-Version: 4.0.30319.18010 built by: FX45RTMGDR.
    115. CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
    116. ----------------------------------------
    117. ************** JIT-Debuggen **************
    118. Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
    119. Konfigurationsdatei der Anwendung oder des Computers
    120. (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
    121. Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.
    122. Zum Beispiel:
    123. <configuration>
    124. <system.windows.forms jitDebugging="true" />
    125. </configuration>
    126. Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
    127. Ausnahmen an den JIT-Debugger gesendet, der auf dem
    128. Computer registriert ist, und nicht in diesem Dialogfeld behandelt.

    Aber im Debugging Modus erscheint dieser nicht. Liegt das vielleicht daran, das ich das Programm bei uns ins NetzLaufwerk erstellt habe?
    Ich vermute das es an den SQL Pfaden liegt. Habe auch versucht die zu ändern aber mir wird gesagt das NetzPfade nicht möglich sind, wobei ja eigentlich das ganze Programm im Netz steht.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Ok, habs nochmal ausprobiert indem ich mal mehrere Daten eingegeben habe also ca 5 User und Gegenstände. Nun ist der Fehler auch in der Debug Version aufgekommen. Es gibt den Text aus:

    VB.NET-Quellcode

    1. Me.TableAdapterManager.UpdateAll(Me._SQL_KDataSet)

    Für ein Update ist ein gültiger UpdateCommand erforderlich, wenn eine DataRow-Auflistung mit modifizierten Zeilen weitergegeben wird.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    ja, das kannst du sicherlich überprüfen, im Dataset-Designer.
    Da sind unten an den DataTables die TableAdapter "drangeklebt" dargestellt, und in letztererer Properties kannstedir auch die generierten Commands angugge - da wird bei mindestens einem das UpdateCommand fehlen.
    Meist fehlts aufgrund von Datenbank-Fehlern, nämlich wenn kein Primkey für die Tabelle definiert ist.
    Ok, Ich habe gar keine Prim Keys gemacht... und bei allen ist kein UpdateCommand definiert.
    Was sollte da alles editiert sein?
    habe jetzt auf allen einen Command ohne Daten erstellt.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)