Datentabellen erstellen und abfragen. Seit drei Tagen und Nächte am verzweifeln!!!

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

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Cell.

    Datentabellen erstellen und abfragen. Seit drei Tagen und Nächte am verzweifeln!!!

    Hey Freunde,

    Wie der Titel schon sagt, bin ich seit drei Tagen und Nächte damit beschäftigt ein Datensatz aufzubauen. Ich habe ein Programm für ein Labor-Messstand geschrieben das werte einer Messuhr in verschiedenen Intervallen ausliest........ Damit es den Mitarbeitern später möglich ist Eigenschaften zu ändern, hinzuzufügen oder anzupassen, wollte ich dies durch eine Datenbank realisieren. Leider steckt mein wissen dazu noch in den "Jugendschuhen" und ich komme einfach nicht mehr weiter. Einfache Datensätze sind kein Problem. Das Problem liegt aktuell bei verschachtelten Datensätzen.

    Bei dieser Messeinrichtung gibt es Gewichte. Falls irgendwann neue/andere Gewichte dazukommen sollten, würde ich diese gerne unter einer neuen Kategorie (Sortiment) Auflisten.
    -->>
    Ansatz der Zusammenhänge zwischen Tabellen:



    Jetzt möchte ich in einer Form, über eine CBox den Sortimentnamen aufrufen, und in einer DGV die dazugehörigen Gewichte angezeigt bekommen, aber auch Gewichte hinzufügen oder löschen können. Außerdem auch ein neues Sortiment anlegen, oder löschen.:





    Ich bekomme es einfach nicht gebacken.... ;(
    Ist der anzatz überhaupt richtig?? Und wie bekomme ich die CBox dazu mir entsprechende Namen und Eigenschaften anzuzeigen, bzw hinzufügen/löschen...
    Komme ohne Hilfe nicht weiter, dafür bin ich leider noch zu unerfahren.
    Würde mich über jede Hilfe freuen! ;)

    LGrüße






    Oder taugt das eher was??

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

    Hallo,
    also nach dem ich keinen Hinweis finden konnte mit welchem System du deine Datenbank aufbauen möchtest kann man eigentlich nur orakeln....
    Was du beschreibst ist eigentlich nur eine n:m Verknüpfung zwischen deinem "Sortiment" und deinen "Gewichten".
    Wenn ich sowas machen müsste würde ich mir das in Access aufbauen dazu brauchst du eigentlich nur 3 Tabellen.

    1. Tabelle: Sortiment
    2. Tabelle: Gewicht
    3. Tabelle: Zuordnung

    Tabelle1 wird mit einer 1:n auf die Zuordnungstabelle verknüpft und Tabelle 2 ebenfalls mit einer 1:n auf Tabelle 3.
    Damit hast du dein Datenmodell zusammen.
    Der Rest ist ein bisschen Bastelei mit einem Access Formular das ein Unterformular beinhaltet und die Verknüpfung abbildet.
    Es gibt schöne Access Beispiele die dir das erläutern können.

    Hoffe einen Ansatz geliefert zu haben.

    lG
    mfG.
    Stephan
    Hi,
    Danke für deine Antwort. Ich nutze Visual Basic und habe es auch zuerst damit versucht aber ich bekomme die Beziehungen/Aktualisierungen nicht geregelt. Ich gebe einen Sortimentnamen ein und Gewichte, aber in der "Zuordnungstabelle" ändert sich nichts.

    LG





    Aktuell versuche ich mit Access etwas zu bewirken, aber damit komme ich aktuell auch nicht weiter. Ich denke ich habe n:m Beziehung mittlerweile schon durchschaut aber alles drumherum ist noch ein Rätsel..



    Sry, aber ohne Rat komme ich Wohl nicht weiter.. ?(
    So wie @kaifreeman geschrieben hat passt das
    1. Tabelle: Sortiment
    2. Tabelle: Gewicht
    3. Tabelle: Zuordnung

    Meine Meinung zu den ganzen Assistenten dürfte ja bekannt sein. Daher, hier der "gute alte", manuelle Weg ohne Assistenten. Hier musst du halt jeden Furz selbst programmieren ;)

    Anzeige in ComboBox:
    Abfrage auf Tabelle Sortiment, Ergebnis in DataTable speichern und als DataSource an die ComboBox hängen. DisplayMember ="Name" / ValueMember = "ID"

    Anzeige im DataGrid
    Beim SelectedIndex Changed Event der ComboBox ne neue SQL Abfrage an die DB Tabelle senden mit nem "Join über Tabelle und Zuordnung" oder nen "Where In" senden, das Ergebnis als DataTable speichern und als DataSource ans Grid hängen.

    Sofern noch nicht geschehen, bitte trenne Logik von GUI :)

    Lg
    mrMo
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

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

    Vielen Dank!!!!

    @kaifreeman und @mrMo
    1. Tabelle: Sortiment
    2. Tabelle: Gewicht
    3. Tabelle: Zuordnung

    Ok, macht Sinn!! :whistling:

    Sofern noch nicht geschehen, bitte trenne Logik von GUI


    Äääh... Schlauch..
    Sry, ich bring mir das gerade im Schnellverfahren bei und kann die beiden Begriffe leider noch nicht zuordnen. :S
    Wie ist das gemeint??

    @exc-jdbi
    Typisches und einfaches Beispiel von n:n-Beziehung, hab ich hier gemacht. Leider ohne Ton.


    Top!! Sowas hatte ich gesucht!

    Ich hatte die Hoffnung es geht etwas "leichter/schneller" aber nach tagelangem Probieren, muss ich wohl in den sauren Apfel beißen... Problem hierbei ist das die Db nur "Zusatz" ist und ich mich so schnell wie möglich wieder dem Hauptprogramm widmen möchte, da der Chef druck macht und Versuche fahren will. Das eigentliche Programm läuf ja auch schon allerdings will ich bei den Versuchen Flexibel sein und mir daher viele (Sinnvolle) Einstellungen ermöglichen (Ein Versuch läuft nun mal eine Woche, und zwischendurch abbrechen iss nich).. Und jetzt entpuppt sich das als größerer Aufwand als gedacht...
    Nuja.. Jetzt hab ich es angefangen und bringe es auch zu ende. Notfalls gibt es eine abgespeckte Vorabversion und man muss halt acht geben.

    Wie auch immer,
    Ich habe dein Programm nachgebaut und leider füllen sich zwei DGV nicht. Ich weiß jetzt aber nicht woran es genau liegt. Werden die daten nicht übergeben?? Ich finde den Fehler nicht.

    Ich hoffe keiner hat etwas dagegen wenn ich den gesamten Code hier einstelle.
    Edit:Also die Daten sind scheinbar alle vorhanden. Sind im xml File zu Finden, werden also scheibar nicht an das DGV übergeben...


    Quellcode

    1. Option Strict On
    2. Option Explicit On
    3. Imports System.IO
    4. Imports System.Globalization
    5. Imports System.ComponentModel
    6. Public Class Gewichte
    7. Private WithEvents dgvRolle As DataGridView
    8. Private WithEvents dgvPersonen As DataGridView
    9. Private WithEvents dgvRollePersonenRolle As DataGridView
    10. Private WithEvents dgvPersonenPersonenRolle As DataGridView
    11. Private WithEvents bsRolle As BindingSource
    12. Private WithEvents bsPersonen As BindingSource
    13. Private WithEvents bsRollePersonenRolle As BindingSource
    14. Private WithEvents bsPersonenPersonenRolle As BindingSource
    15. Private Sub TSMIButton_Click(sender As Object, e As EventArgs) Handles ReloadToolStripMenuItem.Click, SaveToolStripMenuItem.Click, GenerateDataToolStripMenuItem.Click, ClearDgvToolStripMenuItem.Click, DeleteXmlDbToolStripMenuItem.Click
    16. Select Case True
    17. Case sender Is ReloadToolStripMenuItem : Reload()
    18. Case sender Is SaveToolStripMenuItem : Save()
    19. Case sender Is GenerateDataToolStripMenuItem : GenerateData()
    20. Case sender Is ClearDgvToolStripMenuItem : ClearDgv()
    21. Case sender Is DeleteXmlDbToolStripMenuItem : DeleteXmlDb()
    22. End Select
    23. End Sub
    24. Private Sub Reload()
    25. Me.DsPersonenRolle.Clear()
    26. If File.Exists(xmlStandardDat) Then
    27. Dim ds As New dsPersonenRolle
    28. ds.ReadXml(xmlStandardDat)
    29. 'Reihenfolge bestimmen für die korekte mergling
    30. Dim IstTables As New List(Of DataTable)
    31. IstTables.Add(ds.Tables(0))
    32. IstTables.Add(ds.Tables(1))
    33. IstTables.Add(ds.Tables(2))
    34. For Each lDt As DataTable In IstTables
    35. For Each dt1 As DataTable In DsPersonenRolle.Tables
    36. If lDt.TableName = dt1.TableName Then
    37. With Me
    38. .DsPersonenRolle.BeginInit()
    39. .DsPersonenRolle.Tables(dt1.TableName).Merge(lDt)
    40. .DsPersonenRolle.EndInit()
    41. End With
    42. End If
    43. Next
    44. Next
    45. End If
    46. End Sub
    47. Private Sub Save()
    48. Me.DsPersonenRolle.WriteXml(xmlStandardDat)
    49. End Sub
    50. Private Sub GenerateData()
    51. ' An dieser Stelle auch von mir vielen Dank an @ErfinderDesRades
    52. Dim dtDate As DateTime = Nothing
    53. With DsPersonenRolle
    54. .Clear()
    55. For aa1 As Integer = 0 To 6
    56. dtDate = New DateTime(620000000000000000 + 1000000000000000 * aa1)
    57. .Personen.AddPersonenRow("Vorname_" & aa1, "Nachname_" & aa1.ToString, dtDate, CInt((Date.Now.Year - dtDate.Year)))
    58. Next
    59. For aa1 As Integer = 0 To 6
    60. .Rolle.AddRolleRow("Applikation_" & aa1.ToString, "Entwickler_" & aa1.ToString, "Designer_" & aa1.ToString, "Produktmanager_" & aa1.ToString, "Projektmanager_" & aa1.ToString)
    61. Next
    62. Dim iPR As Integer = 0
    63. For iPers As Integer = 0 To 3
    64. For iRoll = 2 To 6
    65. Dim rwPers As dsPersonenRolle.PersonenRow = .Personen(iPers)
    66. Dim rwRoll As dsPersonenRolle.RolleRow = .Rolle(iRoll)
    67. Dim name As String = String.Join("_", "PersonenRolle_" & iPR.ToString, iPers, iRoll)
    68. Dim gehalt As Decimal = 1000 + CDec(iPers * iRoll) / 100
    69. .PersonenRolle.AddPersonenRolleRow(rwPers, rwRoll, name, gehalt)
    70. iPR += 1
    71. Next
    72. Next
    73. For iPers = 2 To 6
    74. For iRoll As Integer = 0 To 3
    75. Dim rwPers As dsPersonenRolle.PersonenRow = .Personen(iPers)
    76. Dim rwRoll As dsPersonenRolle.RolleRow = .Rolle(iRoll)
    77. Dim name As String = String.Join("_", "PersonenRolle_" & iPR.ToString, iPers, iRoll)
    78. Dim gehalt As Decimal = 1000 + CDec(iPers * iRoll) / 100
    79. .PersonenRolle.AddPersonenRolleRow(rwPers, rwRoll, name, gehalt)
    80. iPR += 1
    81. Next
    82. Next
    83. End With
    84. End Sub
    85. Private Sub ClearDgv()
    86. Me.DsPersonenRolle.Clear()
    87. End Sub
    88. Private Sub DeleteXmlDb()
    89. If File.Exists(xmlStandardDat) Then
    90. File.Delete(xmlStandardDat)
    91. End If
    92. End Sub
    93. Private Sub CellEndEditDgv(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPersonen.CellEndEdit, dgvRolle.CellEndEdit, dgvRollePersonenRolle.CellEndEdit, dgvPersonenPersonenRolle.CellEndEdit
    94. Me.dgvRolle.Update() : Me.dgvRolle.EndEdit()
    95. Me.dgvPersonen.Update() : Me.dgvPersonen.EndEdit()
    96. Me.dgvRollePersonenRolle.Update() : Me.dgvRollePersonenRolle.EndEdit()
    97. Me.dgvPersonenPersonenRolle.Update() : Me.dgvPersonenPersonenRolle.EndEdit()
    98. Call Save()
    99. End Sub
    100. '########################################### Läuft ########
    101. Private Sub KonfigDgvRolle()
    102. dgvRolle = New DataGridView With {.Dock = DockStyle.Fill}
    103. bsRolle = New BindingSource
    104. CType(Me.bsRolle, ISupportInitialize).BeginInit()
    105. With Me.bsRolle
    106. .DataMember = "Rolle"
    107. .DataSource = Me.DsPersonenRolle
    108. .AllowNew = True
    109. End With
    110. CType(Me.bsRolle, ISupportInitialize).EndInit()
    111. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    112. CType(Me.dgvRolle, ISupportInitialize).BeginInit()
    113. With dgvRolle
    114. .DataSource = bsRolle
    115. .AutoGenerateColumns = False
    116. Dim colApplication As New DataGridViewTextBoxColumn
    117. With colApplication
    118. .DataPropertyName = "Applikation"
    119. .HeaderText = "Applikation"
    120. .Name = "colApplication"
    121. dgvRolle.Columns.Add(colApplication)
    122. dgvRolle.Columns(.Name).Visible = True
    123. End With
    124. Dim colEntwickler As New DataGridViewTextBoxColumn
    125. With colEntwickler
    126. .DataPropertyName = "Entwickler"
    127. .HeaderText = "Entwickler"
    128. .Name = "colEntwickler"
    129. dgvRolle.Columns.Add(colEntwickler)
    130. dgvRolle.Columns(.Name).Visible = True
    131. End With
    132. Dim colDesigner As New DataGridViewTextBoxColumn
    133. With colDesigner
    134. .DataPropertyName = "Designer"
    135. .HeaderText = "Designer"
    136. .Name = "colDesigner"
    137. dgvRolle.Columns.Add(colDesigner)
    138. dgvRolle.Columns(.Name).Visible = True
    139. End With
    140. Dim colProduktmanager As New DataGridViewTextBoxColumn
    141. With colProduktmanager
    142. .DataPropertyName = "Produktmanager"
    143. .HeaderText = "Produktmanager"
    144. .Name = "colProduktmanager"
    145. dgvRolle.Columns.Add(colProduktmanager)
    146. dgvRolle.Columns(.Name).Visible = True
    147. End With
    148. Dim colProjektmanager As New DataGridViewTextBoxColumn
    149. With colProjektmanager
    150. .DataPropertyName = "Projektmanager"
    151. .HeaderText = "Projektmanager"
    152. .Name = "Projektmanager"
    153. dgvRolle.Columns.Add(colProjektmanager)
    154. dgvRolle.Columns(.Name).Visible = True
    155. End With
    156. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    157. End With
    158. Me.SplitContainer3.Panel1.Controls.Add(dgvRolle)
    159. CType(Me.dgvRolle, ISupportInitialize).EndInit()
    160. End Sub
    161. '########################################### Läuft ########
    162. Private Sub KonfigDgvPersonen()
    163. dgvPersonen = New DataGridView With {.Dock = DockStyle.Fill}
    164. bsPersonen = New BindingSource
    165. CType(Me.bsPersonen, ISupportInitialize).BeginInit()
    166. With Me.bsPersonen
    167. .DataMember = "Personen"
    168. .DataSource = Me.DsPersonenRolle
    169. .AllowNew = True
    170. End With
    171. CType(Me.bsPersonen, ISupportInitialize).EndInit()
    172. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    173. CType(Me.dgvPersonen, ISupportInitialize).BeginInit()
    174. With dgvPersonen
    175. .DataSource = bsPersonen
    176. .AutoGenerateColumns = False
    177. Dim colVorname As New DataGridViewTextBoxColumn
    178. With colVorname
    179. .DataPropertyName = "Vorname"
    180. .HeaderText = "Vorname"
    181. .Name = "colVorname"
    182. dgvPersonen.Columns.Add(colVorname)
    183. dgvPersonen.Columns(.Name).Visible = True
    184. End With
    185. Dim colNachname As New DataGridViewTextBoxColumn
    186. With colNachname
    187. .DataPropertyName = "Nachname"
    188. .HeaderText = "Nachname"
    189. .Name = "colNachname"
    190. dgvPersonen.Columns.Add(colNachname)
    191. dgvPersonen.Columns(.Name).Visible = True
    192. End With
    193. Dim colGeburtstag As New DataGridViewTextBoxColumn
    194. With colGeburtstag
    195. .DataPropertyName = "Geburtstag"
    196. .HeaderText = "Geburtstag"
    197. .Name = "colGeburtstag"
    198. dgvPersonen.Columns.Add(colGeburtstag)
    199. dgvPersonen.Columns(.Name).Visible = True
    200. .DefaultCellStyle = New DataGridViewCellStyle With {.Format = "dd-MM-yyyy", .Alignment = DataGridViewContentAlignment.MiddleCenter}
    201. End With
    202. Dim colAlter As New DataGridViewTextBoxColumn
    203. With colAlter
    204. .DataPropertyName = "Alter"
    205. .HeaderText = "Alter"
    206. .Name = "colAlter"
    207. dgvPersonen.Columns.Add(colAlter)
    208. dgvPersonen.Columns(.Name).Visible = True
    209. .DefaultCellStyle = New DataGridViewCellStyle With {.Alignment = DataGridViewContentAlignment.MiddleCenter}
    210. End With
    211. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    212. End With
    213. Me.SplitContainer2.Panel1.Controls.Add(dgvPersonen)
    214. CType(Me.dgvPersonen, ISupportInitialize).EndInit()
    215. End Sub
    216. '########################################### Läuft Nicht ########
    217. '################################################################
    218. Private Sub KonfigDgvRollePersonenRolle()
    219. dgvRollePersonenrolle = New DataGridView With {.Dock = DockStyle.Fill}
    220. bsRollePersonenRolle = New BindingSource
    221. CType(Me.bsRollePersonenRolle, ISupportInitialize).BeginInit()
    222. With Me.bsRollePersonenRolle
    223. .DataMember = "FK_Personen_PersonenRolle"
    224. .DataSource = Me.bsPersonen
    225. .AllowNew = False
    226. End With
    227. CType(Me.bsRollePersonenRolle, ISupportInitialize).EndInit()
    228. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    229. CType(Me.dgvRollePersonenRolle, ISupportInitialize).BeginInit()
    230. With dgvRollePersonenRolle
    231. .DataSource = bsRollePersonenRolle
    232. .AutoGenerateColumns = False
    233. Dim colName As New DataGridViewColumn
    234. With colName
    235. .DataPropertyName = "Name"
    236. .HeaderText = "Name"
    237. .Name = "colName"
    238. dgvRollePersonenRolle.Columns.Add(colName)
    239. dgvRollePersonenRolle.Columns(.Name).Visible = True
    240. End With
    241. Dim colGehalt As New DataGridViewColumn
    242. With colGehalt
    243. .DataPropertyName = "Gehalt"
    244. .HeaderText = "Gehalt"
    245. .Name = "colGehalt"
    246. .DefaultCellStyle = New DataGridViewCellStyle With {.Format = "C2", .Alignment = DataGridViewContentAlignment.MiddleRight}
    247. dgvRollePersonenRolle.Columns.Add(colGehalt)
    248. dgvRollePersonenRolle.Columns(.Name).Visible = True
    249. End With
    250. Dim colRolleId As New DataGridViewComboBoxColumn
    251. With colRolleId
    252. .DataSource = bsRolle
    253. .DataPropertyName = "RolleId"
    254. .HeaderText = "Applikation"
    255. .Name = "colApplication"
    256. .ValueMember = "Id"
    257. .DisplayMember = "Applikation"
    258. .DisplayStyleForCurrentCellOnly = True
    259. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    260. dgvRollePersonenRolle.Columns.Add(colRolleId)
    261. dgvRollePersonenRolle.Columns(.Name).Visible = True
    262. End With
    263. colRolleId = New DataGridViewComboBoxColumn
    264. With colRolleId
    265. .DataSource = bsRolle
    266. .DataPropertyName = "RolleId"
    267. .HeaderText = "Entwickler"
    268. .Name = "colEntwickler"
    269. .ValueMember = "Id"
    270. .DisplayMember = "Id"
    271. .DisplayMember = "Entwickler"
    272. .DisplayStyleForCurrentCellOnly = True
    273. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    274. dgvRollePersonenRolle.Columns.Add(colRolleId)
    275. dgvRollePersonenRolle.Columns(.Name).Visible = True
    276. End With
    277. colRolleId = New DataGridViewComboBoxColumn
    278. With colRolleId
    279. .DataSource = bsRolle
    280. .DataPropertyName = "RolleId"
    281. .HeaderText = "Designer"
    282. .Name = "colDesigner"
    283. .ValueMember = "Id"
    284. .DisplayMember = "Designer"
    285. .DisplayStyleForCurrentCellOnly = True
    286. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    287. dgvRollePersonenRolle.Columns.Add(colRolleId)
    288. dgvRollePersonenRolle.Columns(.Name).Visible = True
    289. End With
    290. colRolleId = New DataGridViewComboBoxColumn
    291. With colRolleId
    292. .DataSource = bsRolle
    293. .DataPropertyName = "RolleId"
    294. .HeaderText = "Produktmanager"
    295. .Name = "colProduktmanager"
    296. .ValueMember = "Id"
    297. .DisplayMember = "Produktmanager"
    298. .DisplayStyleForCurrentCellOnly = True
    299. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    300. dgvRollePersonenRolle.Columns.Add(colRolleId)
    301. dgvRollePersonenRolle.Columns(.Name).Visible = True
    302. End With
    303. colRolleId = New DataGridViewComboBoxColumn
    304. With colRolleId
    305. .DataSource = bsRolle
    306. .DataPropertyName = "RolleId"
    307. .HeaderText = "Projektmanager"
    308. .Name = "colProjektmanager"
    309. .ValueMember = "Id"
    310. .DisplayMember = "Projektmanager"
    311. .DisplayStyleForCurrentCellOnly = True
    312. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    313. dgvRollePersonenRolle.Columns.Add(colRolleId)
    314. dgvRollePersonenRolle.Columns(.Name).Visible = True
    315. End With
    316. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    317. End With
    318. Me.SplitContainer2.Panel2.Controls.Add(dgvRollePersonenRolle)
    319. CType(Me.dgvRollePersonenRolle, ISupportInitialize).EndInit()
    320. End Sub
    321. '########################################### Läuft Nicht ########
    322. '################################################################
    323. Private Sub KonfigdgvPersonenPersonenRolle()
    324. dgvPersonenPersonenRolle = New DataGridView With {.Dock = DockStyle.Fill}
    325. bsPersonenPersonenRolle = New BindingSource
    326. CType(Me.bsPersonenPersonenRolle, ISupportInitialize).BeginInit()
    327. With Me.bsPersonenPersonenRolle
    328. .DataMember = "FK_Rolle_PersonenRolle"
    329. .DataSource = bsRolle
    330. .AllowNew = False
    331. End With
    332. CType(Me.bsPersonenPersonenRolle, ISupportInitialize).EndInit()
    333. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    334. CType(Me.dgvPersonenPersonenRolle, ISupportInitialize).BeginInit()
    335. With dgvPersonenPersonenRolle
    336. .DataSource = bsPersonenPersonenRolle
    337. .AutoGenerateColumns = False
    338. Dim colName As New DataGridViewColumn
    339. With colName
    340. .DataPropertyName = "Name"
    341. .HeaderText = "Name"
    342. .Name = "colName"
    343. dgvPersonenPersonenRolle.Columns.Add(colName)
    344. dgvPersonenPersonenRolle.Columns(.Name).Visible = True
    345. End With
    346. Dim colGehalt As New DataGridViewColumn
    347. With colGehalt
    348. .DataPropertyName = "Gehalt"
    349. .HeaderText = "Gehalt"
    350. .Name = "colGehalt"
    351. .DefaultCellStyle = New DataGridViewCellStyle With {.Format = "C2", .Alignment = DataGridViewContentAlignment.MiddleRight}
    352. dgvPersonenPersonenRolle.Columns.Add(colGehalt)
    353. dgvPersonenPersonenRolle.Columns(.Name).Visible = True
    354. End With
    355. Dim colPersonenId As New DataGridViewComboBoxColumn
    356. With colPersonenId
    357. .DataSource = bsRolle
    358. .DataPropertyName = "PersonenId"
    359. .HeaderText = "Vorname"
    360. .Name = "colVorname"
    361. .ValueMember = "Id"
    362. .DisplayMember = "Vorname"
    363. .DisplayStyleForCurrentCellOnly = True
    364. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    365. dgvPersonenPersonenRolle.Columns.Add(colPersonenId)
    366. dgvPersonenPersonenRolle.Columns(.Name).Visible = True
    367. End With
    368. colPersonenId = New DataGridViewComboBoxColumn
    369. With colPersonenId
    370. .DataSource = bsRolle
    371. .DataPropertyName = "PersonenId"
    372. .HeaderText = "Nachname"
    373. .Name = "colNachname"
    374. .ValueMember = "Id"
    375. .DisplayMember = "Nachname"
    376. .DisplayStyleForCurrentCellOnly = True
    377. .DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
    378. dgvPersonenPersonenRolle.Columns.Add(colPersonenId)
    379. dgvPersonenPersonenRolle.Columns(.Name).Visible = True
    380. End With
    381. .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    382. End With
    383. Me.SplitContainer3.Panel2.Controls.Add(dgvPersonenPersonenRolle)
    384. CType(Me.dgvPersonenPersonenRolle, ISupportInitialize).EndInit()
    385. End Sub
    386. Public Sub New()
    387. MyBase.New()
    388. ' Dieser Aufruf ist für den Designer erforderlich.
    389. InitializeComponent()
    390. CenterToScreen()
    391. Call KonfigDgvRolle()
    392. Call KonfigDgvPersonen()
    393. Call KonfigDgvRollePersonenRolle()
    394. Call KonfigdgvPersonenPersonenRolle()
    395. End Sub
    396. End Class



    Auch von mir vielen Dank an @ErfinderDesRades




    Danke für die Hilfe!!!


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

    @ludl8615 8 DataGridViews in Freihand-Verdrahtung sind suboptimal.
    Mach Dir z.B. ein TabControl auf eine Form und leg 8 Tabulatoren an, wo auf jeder Seite ein DGV ist. Und dies alles im Designer. Da wird nix vergessen.
    ====
    CenterToScreen() brauchst Du nicht, auch das kannst Du im Designer der Form anwählen: .StartPosition = CenterScreen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo ludl8615,

    Ich würde dir empfehlen, das du dir das Tutorial von EdR ansiehst. Das mag auf den ersten Blick etwas mehr oder etwas komplizierter als die alternative sein, aber auf lange Sicht wird dir das garantiert helfen. Das was du da baust ist zumindest Datenbanktechnisch total simpel. Dafür braucht es bei deiner anfallenden Datenmenge noch nichtmal eine Access Datei geschweige denn einen Datenbank Server. Mit einem typisierten Dataset zu arbeiten ist da wesentlich einfacher. Du braust dir eine komplette Tabellenstruktur direkt im Visual Studio auf und kannst dann die komplette Datenbank mit nur einem Befehl ein eine XML Datei schreiben bzw. wieder auslesen lassen.

    Zudem hast du die komplette Struktur als Objekte im VS und kannst daher total angenehm mit Intellisense Unterstützung programmieren. Wenn du das Prinzip mal verstanden hat baust du ein solches Programm ratz fatz in ein paar Stunden auf.