Frage zu Aufruf eines DataSet in zwei unterschiedlichen Formen

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Sam85.

    Frage zu Aufruf eines DataSet in zwei unterschiedlichen Formen

    Hallo,

    ich stehe gerade an dem Problem ich habe eine DataSet und versuche es nun in einer weiteren Form anzuzeigen.
    Anbei der Code wie ich das DataSet lade und wie ich auf die weitere Form wechsele. In der ersten Form wird alles wie gewünscht in den DGVs dargestellt.
    Wenn ich nun auf der anderen Form bin, ist das DataSet nicht automatisch im DGV geladen und wenn ich Load auswähle passiert auch nichts.
    Vermutlich muss ich da anders vorgehen? Hat da jemand einen Hint für mich? Freue mich über jede Rückmeldung.
    Natürlich auch über weitere Hinweise.

    Spoiler anzeigen


    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.IO
    4. Public Class FrmMain
    5. Public _Inventory As New FileInfo("RehaWerkstatt.xml")
    6. Public Sub SaveDataTableChanges(
    7. ByVal FormName As Form,
    8. ByVal DataSetName As DataSet,
    9. ByVal FileName As FileInfo)
    10. FormName.Validate()
    11. DataSetName.WriteXml(FileName.FullName)
    12. DataSetName.AcceptChanges()
    13. End Sub
    14. Public Sub LoadDataTable(
    15. ByVal DataSetName As DataSet,
    16. ByVal FileName As FileInfo)
    17. DataSetName.Clear()
    18. If FileName.Exists Then DataSetName.ReadXml(FileName.FullName)
    19. End Sub
    20. Private Sub BtnLoad_Click(sender As Object, e As EventArgs) Handles BtnLoad.Click
    21. LoadDataTable(Me.RehaWerkstatt, _Inventory)
    22. End Sub
    23. Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
    24. SaveDataTableChanges(Me, Me.RehaWerkstatt, _Inventory)
    25. End Sub
    26. Private Sub BtnLieferant_Click(sender As Object, e As EventArgs) Handles BtnLieferant.Click
    27. FrmLieferant.Show(Me)
    28. End Sub
    29. End Class


    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class FrmLieferant
    4. Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
    5. FrmMain.SaveDataTableChanges(Me, FrmMain.RehaWerkstatt, FrmMain._Inventory)
    6. End Sub
    7. Private Sub BtnLoad_Click(sender As Object, e As EventArgs) Handles BtnLoad.Click
    8. FrmMain.LoadDataTable(FrmMain.RehaWerkstatt, FrmMain._Inventory)
    9. End Sub
    10. End Class




    EDIT:
    Ach,wenn man das FrmMain.LoadDataTable(FrmMain.RehaWerkstatt, FrmMain._Inventory) in Form 2 einfach in das FrmMain.LoadDataTable(Me.RehaWerkstatt, FrmMain._Inventory) ändert.
    Zumindest klappt es so nun. Hoffe das ist die richtige Herangehensweise. :)

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

    Naja, geht, ist aber ein bisken Overkill, die Daten zu speichern, um sie dann in einem anderen Form wieder zu laden. Ersetze einfach das Form2-tDS durch das Form1-tDS und alle BindingSources in Form2, die als DataSource das Form2-tDS haben, werden nochmal auf das Form1-tDS umgestöpselt, siehe z.B. die Threads von egon: #1, #2 (ab Post#22 geht's los). Aber genauso gibt es doch einige Tutorials vom EdR. Die sollten erste Anlaufstelle sein.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    So ich hab mir mal das im ersten Link angeschaut. Ich vermute du möchtest darauf hinaus kann das sein?

    Spoiler anzeigen


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. TdsHolder.Set(Me.DataSet1)
    4. End Sub
    5. End Class
    6. Friend Module TdsHolder
    7. Private _GlobalTds As DataSet1 = Nothing
    8. Friend Property GlobalTds As DataSet1
    9. Get
    10. Return _GlobalTds
    11. End Get
    12. Set(NewTds As DataSet1)
    13. If _GlobalTds Is Nothing Then _GlobalTds = NewTds
    14. End Set
    15. End Property
    16. End Module


    VB.NET-Quellcode

    1. Public Sub New(_ds As DataSet1, _TestClass As TestClass)
    2. MyBase.New()
    3. Me.InitializeComponent()
    4. Me.ds = _ds ' Ist NUR ein Referenzübergabe an die Membervariable!!
    5. Me.WertBindingSource.DataSource = Me.ds 'Soll nur zeigen was drin ist
    6. Me.NoiseSourceBindingSource.DataSource = Me.ds 'Soll nur zeigen was drin ist
    7. ' ########################
    8. Me.TestClass_Form2 = _TestClass
    9. End Sub




    Bei mir sieht das ganze noch sehr Anfängerhaft aus. Habe mal die Form2 und den dazugehörigen Designer Code eingestellt.
    Leider kann ich dem Kontext nicht so recht folgen, bzw. entnehmen wo der Overhead entsteht bzw. an welche Stelle in Form2 das DataSet beeinflussen kann.
    Spoiler anzeigen


    VB.NET-Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Public Class FrmLieferant
    4. Private Sub FrmLieferant_Load(sender As Object, e As EventArgs) Handles Me.Load
    5. FrmMain.LoadDataTable(Me.RehaWerkstatt, FrmMain._Inventory)
    6. End Sub
    7. Private Sub BtnSave_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
    8. FrmMain.SaveDataTableChanges(Me, FrmMain.RehaWerkstatt, FrmMain._Inventory)
    9. End Sub
    10. Private Sub BtnClose_Click(sender As Object, e As EventArgs) Handles BtnClose.Click
    11. Me.Close()
    12. End Sub
    13. End Class


    Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class FrmLieferant
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.components = New System.ComponentModel.Container()
    23. Dim IDLabel As System.Windows.Forms.Label
    24. Dim BezeichnungLabel As System.Windows.Forms.Label
    25. Dim KundennummerLabel As System.Windows.Forms.Label
    26. Me.ScLieferant = New System.Windows.Forms.SplitContainer()
    27. Me.GbMenu = New System.Windows.Forms.GroupBox()
    28. Me.TlpMenu = New System.Windows.Forms.TableLayoutPanel()
    29. Me.BtnSave = New System.Windows.Forms.Button()
    30. Me.BtnClose = New System.Windows.Forms.Button()
    31. Me.TlpLieferant = New System.Windows.Forms.TableLayoutPanel()
    32. Me.GbLieferant = New System.Windows.Forms.GroupBox()
    33. Me.TableLayoutPanel4 = New System.Windows.Forms.TableLayoutPanel()
    34. Me.LieferantDataGridView = New System.Windows.Forms.DataGridView()
    35. Me.DataGridViewTextBoxColumn2 = New System.Windows.Forms.DataGridViewTextBoxColumn()
    36. Me.DataGridViewTextBoxColumn3 = New System.Windows.Forms.DataGridViewTextBoxColumn()
    37. Me.LieferantBindingSource = New System.Windows.Forms.BindingSource(Me.components)
    38. Me.RehaWerkstatt = New RehaWerkstattApp.RehaWerkstatt()
    39. Me.TableLayoutPanel5 = New System.Windows.Forms.TableLayoutPanel()
    40. Me.IDTextBox = New System.Windows.Forms.TextBox()
    41. Me.BezeichnungTextBox = New System.Windows.Forms.TextBox()
    42. Me.KundennummerTextBox = New System.Windows.Forms.TextBox()
    43. Me.BtnAdd = New System.Windows.Forms.Button()
    44. Me.BtnDelete = New System.Windows.Forms.Button()
    45. Me.TableLayoutPanel3 = New System.Windows.Forms.TableLayoutPanel()
    46. Me.GbModell = New System.Windows.Forms.GroupBox()
    47. Me.ModellDataGridView = New System.Windows.Forms.DataGridView()
    48. Me.DataGridViewTextBoxColumn5 = New System.Windows.Forms.DataGridViewTextBoxColumn()
    49. Me.DataGridViewTextBoxColumn6 = New System.Windows.Forms.DataGridViewTextBoxColumn()
    50. Me.ModellBindingSource = New System.Windows.Forms.BindingSource(Me.components)
    51. Me.GbArtikel = New System.Windows.Forms.GroupBox()
    52. Me.ArtikelDataGridView = New System.Windows.Forms.DataGridView()
    53. Me.NummerDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
    54. Me.BezeichnungDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
    55. Me.PreisDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
    56. Me.PreisKategorieIDDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
    57. Me.ListenDatumDataGridViewTextBoxColumn = New System.Windows.Forms.DataGridViewTextBoxColumn()
    58. Me.ArtikelBindingSource = New System.Windows.Forms.BindingSource(Me.components)
    59. IDLabel = New System.Windows.Forms.Label()
    60. BezeichnungLabel = New System.Windows.Forms.Label()
    61. KundennummerLabel = New System.Windows.Forms.Label()
    62. CType(Me.ScLieferant, System.ComponentModel.ISupportInitialize).BeginInit()
    63. Me.ScLieferant.Panel1.SuspendLayout()
    64. Me.ScLieferant.Panel2.SuspendLayout()
    65. Me.ScLieferant.SuspendLayout()
    66. Me.GbMenu.SuspendLayout()
    67. Me.TlpMenu.SuspendLayout()
    68. Me.TlpLieferant.SuspendLayout()
    69. Me.GbLieferant.SuspendLayout()
    70. Me.TableLayoutPanel4.SuspendLayout()
    71. CType(Me.LieferantDataGridView, System.ComponentModel.ISupportInitialize).BeginInit()
    72. CType(Me.LieferantBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
    73. CType(Me.RehaWerkstatt, System.ComponentModel.ISupportInitialize).BeginInit()
    74. Me.TableLayoutPanel5.SuspendLayout()
    75. Me.TableLayoutPanel3.SuspendLayout()
    76. Me.GbModell.SuspendLayout()
    77. CType(Me.ModellDataGridView, System.ComponentModel.ISupportInitialize).BeginInit()
    78. CType(Me.ModellBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
    79. Me.GbArtikel.SuspendLayout()
    80. CType(Me.ArtikelDataGridView, System.ComponentModel.ISupportInitialize).BeginInit()
    81. CType(Me.ArtikelBindingSource, System.ComponentModel.ISupportInitialize).BeginInit()
    82. Me.SuspendLayout()
    83. '
    84. 'IDLabel
    85. '
    86. IDLabel.AutoSize = True
    87. IDLabel.Dock = System.Windows.Forms.DockStyle.Fill
    88. IDLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    89. IDLabel.Location = New System.Drawing.Point(3, 0)
    90. IDLabel.Name = "IDLabel"
    91. IDLabel.Size = New System.Drawing.Size(145, 48)
    92. IDLabel.TabIndex = 0
    93. IDLabel.Text = "ID:"
    94. '
    95. 'BezeichnungLabel
    96. '
    97. BezeichnungLabel.AutoSize = True
    98. BezeichnungLabel.Dock = System.Windows.Forms.DockStyle.Fill
    99. BezeichnungLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    100. BezeichnungLabel.Location = New System.Drawing.Point(3, 48)
    101. BezeichnungLabel.Name = "BezeichnungLabel"
    102. BezeichnungLabel.Size = New System.Drawing.Size(145, 48)
    103. BezeichnungLabel.TabIndex = 2
    104. BezeichnungLabel.Text = "Bezeichnung:"
    105. '
    106. 'KundennummerLabel
    107. '
    108. KundennummerLabel.AutoSize = True
    109. KundennummerLabel.Dock = System.Windows.Forms.DockStyle.Fill
    110. KundennummerLabel.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    111. KundennummerLabel.Location = New System.Drawing.Point(3, 96)
    112. KundennummerLabel.Name = "KundennummerLabel"
    113. KundennummerLabel.Size = New System.Drawing.Size(145, 48)
    114. KundennummerLabel.TabIndex = 4
    115. KundennummerLabel.Text = "Kundennummer:"
    116. '
    117. 'ScLieferant
    118. '
    119. Me.ScLieferant.Dock = System.Windows.Forms.DockStyle.Fill
    120. Me.ScLieferant.Location = New System.Drawing.Point(0, 0)
    121. Me.ScLieferant.Name = "ScLieferant"
    122. '
    123. 'ScLieferant.Panel1
    124. '
    125. Me.ScLieferant.Panel1.Controls.Add(Me.GbMenu)
    126. '
    127. 'ScLieferant.Panel2
    128. '
    129. Me.ScLieferant.Panel2.Controls.Add(Me.TlpLieferant)
    130. Me.ScLieferant.Size = New System.Drawing.Size(950, 554)
    131. Me.ScLieferant.SplitterDistance = 315
    132. Me.ScLieferant.TabIndex = 0
    133. '
    134. 'GbMenu
    135. '
    136. Me.GbMenu.Controls.Add(Me.TlpMenu)
    137. Me.GbMenu.Dock = System.Windows.Forms.DockStyle.Fill
    138. Me.GbMenu.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    139. Me.GbMenu.Location = New System.Drawing.Point(0, 0)
    140. Me.GbMenu.Name = "GbMenu"
    141. Me.GbMenu.Size = New System.Drawing.Size(315, 554)
    142. Me.GbMenu.TabIndex = 0
    143. Me.GbMenu.TabStop = False
    144. Me.GbMenu.Text = "Menü"
    145. '
    146. 'TlpMenu
    147. '
    148. Me.TlpMenu.ColumnCount = 1
    149. Me.TlpMenu.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    150. Me.TlpMenu.Controls.Add(Me.BtnSave, 0, 0)
    151. Me.TlpMenu.Controls.Add(Me.BtnClose, 0, 1)
    152. Me.TlpMenu.Dock = System.Windows.Forms.DockStyle.Fill
    153. Me.TlpMenu.Location = New System.Drawing.Point(3, 19)
    154. Me.TlpMenu.Name = "TlpMenu"
    155. Me.TlpMenu.RowCount = 2
    156. Me.TlpMenu.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    157. Me.TlpMenu.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    158. Me.TlpMenu.Size = New System.Drawing.Size(309, 532)
    159. Me.TlpMenu.TabIndex = 0
    160. '
    161. 'BtnSave
    162. '
    163. Me.BtnSave.Dock = System.Windows.Forms.DockStyle.Fill
    164. Me.BtnSave.Location = New System.Drawing.Point(3, 3)
    165. Me.BtnSave.Name = "BtnSave"
    166. Me.BtnSave.Size = New System.Drawing.Size(303, 260)
    167. Me.BtnSave.TabIndex = 0
    168. Me.BtnSave.Text = "Speichern"
    169. Me.BtnSave.UseVisualStyleBackColor = True
    170. '
    171. 'BtnClose
    172. '
    173. Me.BtnClose.Dock = System.Windows.Forms.DockStyle.Fill
    174. Me.BtnClose.Location = New System.Drawing.Point(3, 269)
    175. Me.BtnClose.Name = "BtnClose"
    176. Me.BtnClose.Size = New System.Drawing.Size(303, 260)
    177. Me.BtnClose.TabIndex = 1
    178. Me.BtnClose.Text = "Schließen"
    179. Me.BtnClose.UseVisualStyleBackColor = True
    180. '
    181. 'TlpLieferant
    182. '
    183. Me.TlpLieferant.ColumnCount = 1
    184. Me.TlpLieferant.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    185. Me.TlpLieferant.Controls.Add(Me.GbLieferant, 0, 0)
    186. Me.TlpLieferant.Controls.Add(Me.TableLayoutPanel3, 0, 1)
    187. Me.TlpLieferant.Dock = System.Windows.Forms.DockStyle.Fill
    188. Me.TlpLieferant.Location = New System.Drawing.Point(0, 0)
    189. Me.TlpLieferant.Name = "TlpLieferant"
    190. Me.TlpLieferant.RowCount = 2
    191. Me.TlpLieferant.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    192. Me.TlpLieferant.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    193. Me.TlpLieferant.Size = New System.Drawing.Size(631, 554)
    194. Me.TlpLieferant.TabIndex = 0
    195. '
    196. 'GbLieferant
    197. '
    198. Me.GbLieferant.Controls.Add(Me.TableLayoutPanel4)
    199. Me.GbLieferant.Dock = System.Windows.Forms.DockStyle.Fill
    200. Me.GbLieferant.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    201. Me.GbLieferant.Location = New System.Drawing.Point(3, 3)
    202. Me.GbLieferant.Name = "GbLieferant"
    203. Me.GbLieferant.Size = New System.Drawing.Size(625, 271)
    204. Me.GbLieferant.TabIndex = 0
    205. Me.GbLieferant.TabStop = False
    206. Me.GbLieferant.Text = "Lieferanten"
    207. '
    208. 'TableLayoutPanel4
    209. '
    210. Me.TableLayoutPanel4.AutoScroll = True
    211. Me.TableLayoutPanel4.ColumnCount = 2
    212. Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    213. Me.TableLayoutPanel4.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    214. Me.TableLayoutPanel4.Controls.Add(Me.LieferantDataGridView, 1, 0)
    215. Me.TableLayoutPanel4.Controls.Add(Me.TableLayoutPanel5, 0, 0)
    216. Me.TableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill
    217. Me.TableLayoutPanel4.Location = New System.Drawing.Point(3, 19)
    218. Me.TableLayoutPanel4.Name = "TableLayoutPanel4"
    219. Me.TableLayoutPanel4.RowCount = 1
    220. Me.TableLayoutPanel4.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    221. Me.TableLayoutPanel4.Size = New System.Drawing.Size(619, 249)
    222. Me.TableLayoutPanel4.TabIndex = 0
    223. '
    224. 'LieferantDataGridView
    225. '
    226. Me.LieferantDataGridView.AllowUserToOrderColumns = True
    227. Me.LieferantDataGridView.AutoGenerateColumns = False
    228. Me.LieferantDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
    229. Me.LieferantDataGridView.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.DataGridViewTextBoxColumn2, Me.DataGridViewTextBoxColumn3})
    230. Me.LieferantDataGridView.DataSource = Me.LieferantBindingSource
    231. Me.LieferantDataGridView.Dock = System.Windows.Forms.DockStyle.Fill
    232. Me.LieferantDataGridView.Location = New System.Drawing.Point(312, 3)
    233. Me.LieferantDataGridView.Name = "LieferantDataGridView"
    234. Me.LieferantDataGridView.RowHeadersVisible = False
    235. Me.LieferantDataGridView.Size = New System.Drawing.Size(304, 243)
    236. Me.LieferantDataGridView.TabIndex = 0
    237. '
    238. 'DataGridViewTextBoxColumn2
    239. '
    240. Me.DataGridViewTextBoxColumn2.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
    241. Me.DataGridViewTextBoxColumn2.DataPropertyName = "Bezeichnung"
    242. Me.DataGridViewTextBoxColumn2.HeaderText = "Bezeichnung"
    243. Me.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2"
    244. '
    245. 'DataGridViewTextBoxColumn3
    246. '
    247. Me.DataGridViewTextBoxColumn3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells
    248. Me.DataGridViewTextBoxColumn3.DataPropertyName = "Kundennummer"
    249. Me.DataGridViewTextBoxColumn3.HeaderText = "Kundennummer"
    250. Me.DataGridViewTextBoxColumn3.Name = "DataGridViewTextBoxColumn3"
    251. Me.DataGridViewTextBoxColumn3.Width = 133
    252. '
    253. 'LieferantBindingSource
    254. '
    255. Me.LieferantBindingSource.DataMember = "Lieferant"
    256. Me.LieferantBindingSource.DataSource = Me.RehaWerkstatt
    257. '
    258. 'RehaWerkstatt
    259. '
    260. Me.RehaWerkstatt.DataSetName = "RehaWerkstatt"
    261. Me.RehaWerkstatt.SchemaSerializationMode = System.Data.SchemaSerializationMode.IncludeSchema
    262. '
    263. 'TableLayoutPanel5
    264. '
    265. Me.TableLayoutPanel5.ColumnCount = 2
    266. Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    267. Me.TableLayoutPanel5.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    268. Me.TableLayoutPanel5.Controls.Add(IDLabel, 0, 0)
    269. Me.TableLayoutPanel5.Controls.Add(Me.IDTextBox, 1, 0)
    270. Me.TableLayoutPanel5.Controls.Add(BezeichnungLabel, 0, 1)
    271. Me.TableLayoutPanel5.Controls.Add(Me.BezeichnungTextBox, 1, 1)
    272. Me.TableLayoutPanel5.Controls.Add(KundennummerLabel, 0, 2)
    273. Me.TableLayoutPanel5.Controls.Add(Me.KundennummerTextBox, 1, 2)
    274. Me.TableLayoutPanel5.Controls.Add(Me.BtnAdd, 0, 3)
    275. Me.TableLayoutPanel5.Controls.Add(Me.BtnDelete, 1, 3)
    276. Me.TableLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill
    277. Me.TableLayoutPanel5.Location = New System.Drawing.Point(3, 3)
    278. Me.TableLayoutPanel5.Name = "TableLayoutPanel5"
    279. Me.TableLayoutPanel5.RowCount = 4
    280. Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0!))
    281. Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0!))
    282. Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20.0!))
    283. Me.TableLayoutPanel5.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40.0!))
    284. Me.TableLayoutPanel5.Size = New System.Drawing.Size(303, 243)
    285. Me.TableLayoutPanel5.TabIndex = 1
    286. '
    287. 'IDTextBox
    288. '
    289. Me.IDTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.LieferantBindingSource, "ID", True))
    290. Me.IDTextBox.Dock = System.Windows.Forms.DockStyle.Fill
    291. Me.IDTextBox.Enabled = False
    292. Me.IDTextBox.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    293. Me.IDTextBox.Location = New System.Drawing.Point(154, 3)
    294. Me.IDTextBox.Name = "IDTextBox"
    295. Me.IDTextBox.Size = New System.Drawing.Size(146, 22)
    296. Me.IDTextBox.TabIndex = 1
    297. '
    298. 'BezeichnungTextBox
    299. '
    300. Me.BezeichnungTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.LieferantBindingSource, "Bezeichnung", True))
    301. Me.BezeichnungTextBox.Dock = System.Windows.Forms.DockStyle.Fill
    302. Me.BezeichnungTextBox.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    303. Me.BezeichnungTextBox.Location = New System.Drawing.Point(154, 51)
    304. Me.BezeichnungTextBox.Name = "BezeichnungTextBox"
    305. Me.BezeichnungTextBox.Size = New System.Drawing.Size(146, 22)
    306. Me.BezeichnungTextBox.TabIndex = 3
    307. '
    308. 'KundennummerTextBox
    309. '
    310. Me.KundennummerTextBox.DataBindings.Add(New System.Windows.Forms.Binding("Text", Me.LieferantBindingSource, "Kundennummer", True))
    311. Me.KundennummerTextBox.Dock = System.Windows.Forms.DockStyle.Fill
    312. Me.KundennummerTextBox.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    313. Me.KundennummerTextBox.Location = New System.Drawing.Point(154, 99)
    314. Me.KundennummerTextBox.Name = "KundennummerTextBox"
    315. Me.KundennummerTextBox.Size = New System.Drawing.Size(146, 22)
    316. Me.KundennummerTextBox.TabIndex = 5
    317. '
    318. 'BtnAdd
    319. '
    320. Me.BtnAdd.Dock = System.Windows.Forms.DockStyle.Fill
    321. Me.BtnAdd.Location = New System.Drawing.Point(3, 147)
    322. Me.BtnAdd.Name = "BtnAdd"
    323. Me.BtnAdd.Size = New System.Drawing.Size(145, 93)
    324. Me.BtnAdd.TabIndex = 6
    325. Me.BtnAdd.Text = "Hinzufügen"
    326. Me.BtnAdd.UseVisualStyleBackColor = True
    327. '
    328. 'BtnDelete
    329. '
    330. Me.BtnDelete.Dock = System.Windows.Forms.DockStyle.Fill
    331. Me.BtnDelete.Location = New System.Drawing.Point(154, 147)
    332. Me.BtnDelete.Name = "BtnDelete"
    333. Me.BtnDelete.Size = New System.Drawing.Size(146, 93)
    334. Me.BtnDelete.TabIndex = 7
    335. Me.BtnDelete.Text = "Entfernen"
    336. Me.BtnDelete.UseVisualStyleBackColor = True
    337. '
    338. 'TableLayoutPanel3
    339. '
    340. Me.TableLayoutPanel3.ColumnCount = 2
    341. Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    342. Me.TableLayoutPanel3.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    343. Me.TableLayoutPanel3.Controls.Add(Me.GbModell, 0, 0)
    344. Me.TableLayoutPanel3.Controls.Add(Me.GbArtikel, 1, 0)
    345. Me.TableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill
    346. Me.TableLayoutPanel3.Location = New System.Drawing.Point(3, 280)
    347. Me.TableLayoutPanel3.Name = "TableLayoutPanel3"
    348. Me.TableLayoutPanel3.RowCount = 1
    349. Me.TableLayoutPanel3.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
    350. Me.TableLayoutPanel3.Size = New System.Drawing.Size(625, 271)
    351. Me.TableLayoutPanel3.TabIndex = 1
    352. '
    353. 'GbModell
    354. '
    355. Me.GbModell.Controls.Add(Me.ModellDataGridView)
    356. Me.GbModell.Dock = System.Windows.Forms.DockStyle.Fill
    357. Me.GbModell.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    358. Me.GbModell.Location = New System.Drawing.Point(3, 3)
    359. Me.GbModell.Name = "GbModell"
    360. Me.GbModell.Size = New System.Drawing.Size(306, 265)
    361. Me.GbModell.TabIndex = 0
    362. Me.GbModell.TabStop = False
    363. Me.GbModell.Text = "Modelle vom Lieferant"
    364. '
    365. 'ModellDataGridView
    366. '
    367. Me.ModellDataGridView.AllowUserToAddRows = False
    368. Me.ModellDataGridView.AllowUserToDeleteRows = False
    369. Me.ModellDataGridView.AllowUserToOrderColumns = True
    370. Me.ModellDataGridView.AutoGenerateColumns = False
    371. Me.ModellDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
    372. Me.ModellDataGridView.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.DataGridViewTextBoxColumn5, Me.DataGridViewTextBoxColumn6})
    373. Me.ModellDataGridView.DataSource = Me.ModellBindingSource
    374. Me.ModellDataGridView.Dock = System.Windows.Forms.DockStyle.Fill
    375. Me.ModellDataGridView.Location = New System.Drawing.Point(3, 19)
    376. Me.ModellDataGridView.Name = "ModellDataGridView"
    377. Me.ModellDataGridView.ReadOnly = True
    378. Me.ModellDataGridView.RowHeadersVisible = False
    379. Me.ModellDataGridView.Size = New System.Drawing.Size(300, 243)
    380. Me.ModellDataGridView.TabIndex = 0
    381. '
    382. 'DataGridViewTextBoxColumn5
    383. '
    384. Me.DataGridViewTextBoxColumn5.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill
    385. Me.DataGridViewTextBoxColumn5.DataPropertyName = "Bezeichnung"
    386. Me.DataGridViewTextBoxColumn5.HeaderText = "Bezeichnung"
    387. Me.DataGridViewTextBoxColumn5.Name = "DataGridViewTextBoxColumn5"
    388. Me.DataGridViewTextBoxColumn5.ReadOnly = True
    389. '
    390. 'DataGridViewTextBoxColumn6
    391. '
    392. Me.DataGridViewTextBoxColumn6.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells
    393. Me.DataGridViewTextBoxColumn6.DataPropertyName = "Nummer"
    394. Me.DataGridViewTextBoxColumn6.HeaderText = "Nummer"
    395. Me.DataGridViewTextBoxColumn6.Name = "DataGridViewTextBoxColumn6"
    396. Me.DataGridViewTextBoxColumn6.ReadOnly = True
    397. Me.DataGridViewTextBoxColumn6.Width = 86
    398. '
    399. 'ModellBindingSource
    400. '
    401. Me.ModellBindingSource.DataMember = "FK_Lieferant_Modell"
    402. Me.ModellBindingSource.DataSource = Me.LieferantBindingSource
    403. '
    404. 'GbArtikel
    405. '
    406. Me.GbArtikel.Controls.Add(Me.ArtikelDataGridView)
    407. Me.GbArtikel.Dock = System.Windows.Forms.DockStyle.Fill
    408. Me.GbArtikel.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
    409. Me.GbArtikel.Location = New System.Drawing.Point(315, 3)
    410. Me.GbArtikel.Name = "GbArtikel"
    411. Me.GbArtikel.Size = New System.Drawing.Size(307, 265)
    412. Me.GbArtikel.TabIndex = 1
    413. Me.GbArtikel.TabStop = False
    414. Me.GbArtikel.Text = "Artikel zum Modell"
    415. '
    416. 'ArtikelDataGridView
    417. '
    418. Me.ArtikelDataGridView.AllowUserToAddRows = False
    419. Me.ArtikelDataGridView.AllowUserToDeleteRows = False
    420. Me.ArtikelDataGridView.AllowUserToOrderColumns = True
    421. Me.ArtikelDataGridView.AutoGenerateColumns = False
    422. Me.ArtikelDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
    423. Me.ArtikelDataGridView.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.NummerDataGridViewTextBoxColumn, Me.BezeichnungDataGridViewTextBoxColumn, Me.PreisDataGridViewTextBoxColumn, Me.PreisKategorieIDDataGridViewTextBoxColumn, Me.ListenDatumDataGridViewTextBoxColumn})
    424. Me.ArtikelDataGridView.DataSource = Me.ArtikelBindingSource
    425. Me.ArtikelDataGridView.Dock = System.Windows.Forms.DockStyle.Fill
    426. Me.ArtikelDataGridView.Location = New System.Drawing.Point(3, 19)
    427. Me.ArtikelDataGridView.Name = "ArtikelDataGridView"
    428. Me.ArtikelDataGridView.ReadOnly = True
    429. Me.ArtikelDataGridView.RowHeadersVisible = False
    430. Me.ArtikelDataGridView.Size = New System.Drawing.Size(301, 243)
    431. Me.ArtikelDataGridView.TabIndex = 0
    432. '
    433. 'NummerDataGridViewTextBoxColumn
    434. '
    435. Me.NummerDataGridViewTextBoxColumn.DataPropertyName = "Nummer"
    436. Me.NummerDataGridViewTextBoxColumn.HeaderText = "Nummer"
    437. Me.NummerDataGridViewTextBoxColumn.Name = "NummerDataGridViewTextBoxColumn"
    438. Me.NummerDataGridViewTextBoxColumn.ReadOnly = True
    439. '
    440. 'BezeichnungDataGridViewTextBoxColumn
    441. '
    442. Me.BezeichnungDataGridViewTextBoxColumn.DataPropertyName = "Bezeichnung"
    443. Me.BezeichnungDataGridViewTextBoxColumn.HeaderText = "Bezeichnung"
    444. Me.BezeichnungDataGridViewTextBoxColumn.Name = "BezeichnungDataGridViewTextBoxColumn"
    445. Me.BezeichnungDataGridViewTextBoxColumn.ReadOnly = True
    446. '
    447. 'PreisDataGridViewTextBoxColumn
    448. '
    449. Me.PreisDataGridViewTextBoxColumn.DataPropertyName = "Preis"
    450. Me.PreisDataGridViewTextBoxColumn.HeaderText = "Preis"
    451. Me.PreisDataGridViewTextBoxColumn.Name = "PreisDataGridViewTextBoxColumn"
    452. Me.PreisDataGridViewTextBoxColumn.ReadOnly = True
    453. '
    454. 'PreisKategorieIDDataGridViewTextBoxColumn
    455. '
    456. Me.PreisKategorieIDDataGridViewTextBoxColumn.DataPropertyName = "PreisKategorieID"
    457. Me.PreisKategorieIDDataGridViewTextBoxColumn.HeaderText = "PreisKategorieID"
    458. Me.PreisKategorieIDDataGridViewTextBoxColumn.Name = "PreisKategorieIDDataGridViewTextBoxColumn"
    459. Me.PreisKategorieIDDataGridViewTextBoxColumn.ReadOnly = True
    460. '
    461. 'ListenDatumDataGridViewTextBoxColumn
    462. '
    463. Me.ListenDatumDataGridViewTextBoxColumn.DataPropertyName = "ListenDatum"
    464. Me.ListenDatumDataGridViewTextBoxColumn.HeaderText = "ListenDatum"
    465. Me.ListenDatumDataGridViewTextBoxColumn.Name = "ListenDatumDataGridViewTextBoxColumn"
    466. Me.ListenDatumDataGridViewTextBoxColumn.ReadOnly = True
    467. '
    468. 'ArtikelBindingSource
    469. '
    470. Me.ArtikelBindingSource.DataMember = "FK_Modell_Artikel"
    471. Me.ArtikelBindingSource.DataSource = Me.ModellBindingSource
    472. '
    473. 'FrmLieferant
    474. '
    475. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    476. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    477. Me.ClientSize = New System.Drawing.Size(950, 554)
    478. Me.Controls.Add(Me.ScLieferant)
    479. Me.Name = "FrmLieferant"
    480. Me.Text = "Lieferant"
    481. Me.ScLieferant.Panel1.ResumeLayout(False)
    482. Me.ScLieferant.Panel2.ResumeLayout(False)
    483. CType(Me.ScLieferant, System.ComponentModel.ISupportInitialize).EndInit()
    484. Me.ScLieferant.ResumeLayout(False)
    485. Me.GbMenu.ResumeLayout(False)
    486. Me.TlpMenu.ResumeLayout(False)
    487. Me.TlpLieferant.ResumeLayout(False)
    488. Me.GbLieferant.ResumeLayout(False)
    489. Me.TableLayoutPanel4.ResumeLayout(False)
    490. CType(Me.LieferantDataGridView, System.ComponentModel.ISupportInitialize).EndInit()
    491. CType(Me.LieferantBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
    492. CType(Me.RehaWerkstatt, System.ComponentModel.ISupportInitialize).EndInit()
    493. Me.TableLayoutPanel5.ResumeLayout(False)
    494. Me.TableLayoutPanel5.PerformLayout()
    495. Me.TableLayoutPanel3.ResumeLayout(False)
    496. Me.GbModell.ResumeLayout(False)
    497. CType(Me.ModellDataGridView, System.ComponentModel.ISupportInitialize).EndInit()
    498. CType(Me.ModellBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
    499. Me.GbArtikel.ResumeLayout(False)
    500. CType(Me.ArtikelDataGridView, System.ComponentModel.ISupportInitialize).EndInit()
    501. CType(Me.ArtikelBindingSource, System.ComponentModel.ISupportInitialize).EndInit()
    502. Me.ResumeLayout(False)
    503. End Sub
    504. Friend WithEvents ScLieferant As SplitContainer
    505. Friend WithEvents TlpLieferant As TableLayoutPanel
    506. Friend WithEvents GbLieferant As GroupBox
    507. Friend WithEvents LieferantBindingSource As BindingSource
    508. Friend WithEvents RehaWerkstatt As RehaWerkstatt
    509. Friend WithEvents TableLayoutPanel3 As TableLayoutPanel
    510. Friend WithEvents GbModell As GroupBox
    511. Friend WithEvents ModellDataGridView As DataGridView
    512. Friend WithEvents ModellBindingSource As BindingSource
    513. Friend WithEvents GbArtikel As GroupBox
    514. Friend WithEvents GbMenu As GroupBox
    515. Friend WithEvents TlpMenu As TableLayoutPanel
    516. Friend WithEvents BtnSave As Button
    517. Friend WithEvents BtnClose As Button
    518. Friend WithEvents TableLayoutPanel4 As TableLayoutPanel
    519. Friend WithEvents LieferantDataGridView As DataGridView
    520. Friend WithEvents DataGridViewTextBoxColumn2 As DataGridViewTextBoxColumn
    521. Friend WithEvents DataGridViewTextBoxColumn3 As DataGridViewTextBoxColumn
    522. Friend WithEvents TableLayoutPanel5 As TableLayoutPanel
    523. Friend WithEvents IDTextBox As TextBox
    524. Friend WithEvents BezeichnungTextBox As TextBox
    525. Friend WithEvents KundennummerTextBox As TextBox
    526. Friend WithEvents DataGridViewTextBoxColumn5 As DataGridViewTextBoxColumn
    527. Friend WithEvents DataGridViewTextBoxColumn6 As DataGridViewTextBoxColumn
    528. Friend WithEvents ArtikelDataGridView As DataGridView
    529. Friend WithEvents BtnAdd As Button
    530. Friend WithEvents BtnDelete As Button
    531. Friend WithEvents NummerDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
    532. Friend WithEvents BezeichnungDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
    533. Friend WithEvents PreisDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
    534. Friend WithEvents PreisKategorieIDDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
    535. Friend WithEvents ListenDatumDataGridViewTextBoxColumn As DataGridViewTextBoxColumn
    536. Friend WithEvents ArtikelBindingSource As BindingSource
    537. End Class




    EDIT:
    Kann es sein das sowas gemeint ist ?(hab ich jetzt bei EDR Daten Laden Speichern gesehen).
    Also das beim Laden aus Form1 zur Form2. (Zumindest klappt das auch.)

    VB.NET-Quellcode

    1. Private Sub BtnLieferant_Click(sender As Object, e As EventArgs) Handles BtnLieferant.Click
    2. FrmLieferant.LieferantBindingSource.DataSource = Me.RehaWerkstatt
    3. FrmLieferant.Show(Me)
    4. End Sub
    Dateien
    • TestApp.zip

      (244,06 kB, 72 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Sam85“ ()

    Sam85 schrieb:

    FrmLieferant.Show(Me)
    :?:
    8| :cursing: ;(
    Bitte nicht. Daher:
    Dialoge richtig instanziieren
    Warum »Form1.Show« und Co. einem irgendwann ins Bein schießen

    Ohje, und in FrmLieferant dann auf FrmMain.LoadDataTable zugreifen.
    Dann tatsächlich lieber das tDS z.B. als Parameter weiterreichen oder als projektweites Objekt offenbaren. Und dann die BindingSources umstöpseln. Dann arbeitest Du mit denselben Daten formübergreifend. Aber das Beispielprojekt ist so nicht optimal. Ich bastel mal um. Und habe jetzt erstmal die formübergreifende tDS-Nutzung für FrmLieferant hinterlegt und dann noch den korrekten Aufruf des Forms in FrmMain.

    Ach ja: Weitere Projekt-Zips bitte bereinigt (außerdem ohne bin-, obj-, .vs- und .git-Ordner) hochladen. Größenunterschied: Deins: 244 KB, meins: 37 KB - obwohl mehr Code ;)
    Dateien
    • TestApp.zip

      (36,89 kB, 69 mal heruntergeladen, zuletzt: )
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed
    Kann ich das auch in der MainForm verwenden auf die jeweiligen BindingSources oder ist das dann nicht sinnvoll?

    VB.NET-Quellcode

    1. Public Sub SetDataset(Tds As RehaWerkstatt)
    2. Me.RehaWerkstatt = Tds
    3. LieferantBindingSource.DataSource = Tds
    4. End Sub


    EDIT:
    OK, warum kann ich die Sub nicht in der MainForm schreiben und dann darauf zugreifen? Das bedeutet ja, ich muss diese Sub in jeder Form platzieren oder kann ich das auch globaler lösen?
    Wollte das in FrmMain schreiben und dann im BtnLieferant auf SetDataSet verweisen aber das wird dann nicht angeboten.
    Wenn das Iterien zum Zuweisen überhaupt Sinnvoll ist.

    VB.NET-Quellcode

    1. Public Sub SetDataSet(ByVal TypifiedDataSet As RehaWerkstatt)
    2. Me.RehaWerkstatt = TypifiedDataSet
    3. For Each bs As BindingSource In Me.DataBindings
    4. bs.DataSource = TypifiedDataSet
    5. Next bs
    6. End Sub

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Sam85“ ()

    Du kannst das auch in das MainForm schreiben, bringt aber nichts, da die dortigen BindingSources ja schon mit dem Haupt-tDS verbunden sind.
    Du kannst das nicht ins MainForm allein schreiben und dann von anderen Forms darauf zugreifen. Denn das wär erstens mal ein Formfehler, da SubForms nicht auf's MainForm zugreifen dürfen (oder besser sollen). Aber zum anderen geht das deshalb nicht, weil das Me immer auf das Form verweist, wo die o.g. Prozedur ist. Das heißt, wenn SetDataSet im MainForm ist, dann gilt: Me = MainForm.

    ##########

    btw: Deine For-Each-Schleife über alle BindingSources klappt wohl nicht, da die nicht in den DataBindings gelistet sind. Ich hab früher das hier verwendet:

    VB.NET-Quellcode

    1. Private Function GetAllBindingSourcesIn(Form As Form) As List(Of BindingSource)
    2. Dim BindingSources As New List(Of BindingSource)
    3. Dim FieldInfos = Form.GetType.GetFields(BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly)
    4. For Each FieldInfo In FieldInfos
    5. If FieldInfo.FieldType.BaseType IsNot GetType(ComponentModel.Component) Then Continue For
    6. Dim Component = TryCast(FieldInfo.GetValue(Form), ComponentModel.Component)
    7. If Component Is Nothing OrElse TypeOf Component IsNot BindingSource Then Continue For
    8. BindingSources.Add(DirectCast(Component, BindingSource))
    9. Next
    10. Return BindingSources
    11. End Function


    Allerdings solltest Du jetzt nicht alle BindingSources neu verkabeln, sondern nur die, die Dein tDS als DataSource haben. 2 von 3 BindingSources in Deinem Lieferanten-SubForm haben aber andere BindingSources als DataSource! Das geht dann schief, wenn Du die ebenfalls auf das tDS umstöpselst.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Ich hab für das ganze Thema - formübergreifendes Databinding - eine sehr aufwändige Infrastruktur geproggt, inklusive solch eines Form-Scans nach BindingSources - wo dann aber auch BindingSources aufsitzender UserControls behandelt werden und so Scherze.
    Also die Infrastruktur bietet fixnfertig:
    • registrieren aller BindingSources auf ein einziges globales typDataset
    • laden speichern desselben von beliebigen Forms aus
    • beim Schliessen mit ungespeicherten Änderungen Speicher-Abfrage
    • Dialog-Unterstützung zum Anlegen neuer / Editieren bestehender einzelner Datensätze
    Allerdings speichere ich nicht einzelne Tabellen, sondern wenn dann immer gleich das ganze Dataset.

    Wenn wolle kann ich das mal in eine Beispielanwendung einbasteln.
    ja, ich dachte, die Beispielanwendung stellst du rein, und ich frickel meine Infrastruktur da dran.

    Ansonsten ist hier natürlich ein Beispiel: Daten laden, speichern, verarbeiten - einfachste Variante

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @VaporiZed

    Ich habe da nochmal eine Frage: Wenn ich in der neuen Form als DataSet die explizite BindingSource einsetze, z.B. ModellBindingSource, dann spare ich mir ja den Overhead der anderen BindingSources. Wie ist es aber wenn ich dann auch die LieferantenBindingSource in der neuen Form benötige? Kann ich das DataSet dann mit zwei BindingSources besetzten?
    HäWieWasWoWer? Ich steige inhaltlich nicht durch.

    Sam85 schrieb:

    als DataSet die explizite BindingSource einsetze

    Sam85 schrieb:

    Kann ich das DataSet dann mit zwei BindingSources besetzten?
    Was soll das bedeuten? In Deinem tDS (typisiertem DataSet) sind alle Daten drinne. Das heißt, das ist Deine Datenquelle für sonstewas. Du kannst eine (oder 2 oder wieviel auch immer Du auf einem Form brauchst) BindingSources setzen, die als Datenquelle Deine tDS-Instanz haben und mithilfe der DataMember-Eigenschaft der BindingSource auf bestimmte Datentabellen (DataTables) in deren Inhalt des tDS zugreifen. Und Du kannst diese DataTable-Inhalte (oder auch nur einzelne Datenzeilen) in CEs wie einem DGV oder einer TextBox oder whatever anzeigen lassen. Mit diesem Hintergrundwissen sollte klar werden, dass Dein Post inhaltlich für mich nicht nachvollziehbar ist. Aber ggf. auch, was Du machen musst, um Deine Aufgabe umzusetzen - hoffe ich zumindest.

    Also:
    • im tDS sind 0 bis X DataTables
    • in einer DataTables sind 0 bis X Datenzeilen
    • eine BindingSource braucht eine Datenquelle, damit sie weiß, welche Daten sie managen soll; diese Quelle ist hier das tDS (oder um genau zu sein: eine tDS-Instanz)
    • für eine BindingSource kann als DataMember ein Teil der DataSource festgelegt werden, sofern dieser Teil eine Listenstruktur hat; bei einem tDS wäre eine passende Teilstruktur eine DataTable. Also kann man dafür sorgen, dass die BindingSource nur eine DataTable des tDS managt
    • CEs können den kompletten Inhalt der von der BindingSource gemanagten Liste anzeigen/beinhalten/bearbeiten oder Teile der Liste oder nur eine ganze Datenzeile oder nur einen Teil einer Datenzeile - CE-abhängig.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @VaporiZed

    Das ist der Code zum Aufrufen der neuen Form aus der MainForm.

    VB.NET-Quellcode

    1. Private Sub BtnDialog(sender As Object, e As EventArgs) Handles BtnLieferant.Click, BtnModell.Click
    2. Select Case DirectCast(sender, Button).Name
    3. Case BtnLieferant.Name
    4. Using DlgLieferant As New FrmLieferant
    5. With DlgLieferant
    6. .SetDataSet(RehaWerkstatt)
    7. .ShowDialog(Me)
    8. End With
    9. End Using
    10. Case BtnModell.Name
    11. Using DlgModell As New FrmModell
    12. With DlgModell
    13. .SetDataSet(RehaWerkstatt)
    14. .ShowDialog(Me)
    15. End With
    16. End Using
    17. End Select
    18. End Sub


    Das ist der Code in der aufgerufenen Form. Und hier wird doch die ModellBindingSource in den Fokus gesetzt, oder?

    VB.NET-Quellcode

    1. Public Sub SetDataSet(ByVal TypifiedDataSet As RehaWerkstatt)
    2. Me.RehaWerkstatt = TypifiedDataSet
    3. ModellBindingSource.DataSource = TypifiedDataSet
    4. End Sub


    Die Fehlermeldung ist im Bild. In der MainForm habe ich im Modell DGV den Lieferant mit drin. Ich will das nun in eine separate Form verlagern.
    Dort kommt dann beim Aufruf aber der Fehler, obwohl der Aufbau identisch ist. Daher vermute ich das es am Aufruf liegen muss.

    Hoffe es ist jetzt irgendwie verständlich geworden. :)
    Bilder
    • Fehler.PNG

      6,6 kB, 346×211, 55 mal angesehen
    • FormModell.PNG

      23,37 kB, 1.195×663, 47 mal angesehen
    • MainForm.PNG

      26,39 kB, 1.208×782, 47 mal angesehen
    Dateien
    • TestApp.zip

      (42,67 kB, 54 mal heruntergeladen, zuletzt: )
    In Deiner SetDataSet-Methode fehlt die Zeile, dass auch die LieferantenBindingSource als DataSource die übergebende tdS-Instanz erhält. Sonst hat die Lieferanten-BS ja gar keine Daten.
    Also:

    VB.NET-Quellcode

    1. Public Sub SetDataSet(ByVal TypifiedDataSet As RehaWerkstatt)
    2. Me.RehaWerkstatt = TypifiedDataSet
    3. ModellBindingSource.DataSource = TypifiedDataSet
    4. LieferantBindingSource.DataSource = TypifiedDataSet
    5. End Sub


    btw: laut Mikrosaft/MSDN heißt das Teil »typed DataSet«, nicht typified. Aber es ist Dein Code.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed

    Danke, das scheint mir logisch. Sowas hatte ich vermutet, nur so "simple" hab ich es nicht erwartet.
    Und danke für den Hinweis, die Benamung sollte natürlich so exakt wie möglich sein, passe ich an.