Hallo zusammen,
ich habe bei einem Migrationsprojekt (von VB 6 -> VB.NET) zwei (für mich) bedeutende Probleme und hoffe ihr könnt mir dabei helfen.
Es geht um eine Art Artikel-Verwaltung mit zugehöriger Bestell-Verwaltung. Es gibt 3 Arten von Artikeln.
a) Alleinstehender Artikel (fängt immer mit "A" an)
b) Bundle Artikel (fängt immer mit B an und besteht aus mehreren Artikeln, die zu einem Bundle gehören müssen)
c) Bundle-Zugehörige-Artikel (fangen mit C, D oder E an und müssen zu einem Bundle gehören)
Jeder Artikel hat bestimmte aber teilweise unterschiedliche Eigenschaften.
Das Ganze ist über eine Access-Datenbank gesteuert, die seit Jahren gewachsen ist (also den kompletten Artikelstamm enthält). Alle Artikel sind in einer einzigen Tabelle. Es gibt also keine m:n Tabelle die z.B. alle Bundle-Zugehörige Artikel mit einem Bundle-Artikel verknüpft. Artikelnummern von Artikeln die mit "A" beginnen bestehen aus 4 Teilen (z.B. A 123 45 678), Bundle und Bundle-Zugehörige-Artikel bestehen aus 5 Teilen (z.B. B 123 456 78 910).
In der Datenbank stehen sie aber z.B. als "A12345678" drin und wurden programmatisch auseinander gerissen. Nun soll das (um es schöner darzustellen) getrennt dargestellt werden. Habe ich soweit auch bereits gelöst durch weitere Spalten und entsprechende Teilung der Artikelnummern nach dem Schema des jeweiligen Aufbaus.
Nun würde ich das Ganze gerne alles sauberer gestalten, als es bisher war ohne dem Kunden seine langjährigen Gewohnheiten zu nehmen, was die Pflege angeht. Das ist z.B., dass er bisher die einzelnen "Blöcke" der Artikelnummer in getrennten Textboxen eingegeben hat, bei der Anlage einer Bestellung dann aber in einem Feld die komplette Artikelnummer ausgewählt werden soll.
Nun mein erstes Problem:
Wie realisiere ich es mit einem DataGridView und/oder DetailView, dass man bspw. eine Combobox sieht, in der die komplette Artikelnummer steht und im Hintergrund die ID des Artikels gespeichert wird? Habe mich die letzten Tage intensiv mit dem FourView Model von "ErfinderDesRades" befasst, aber leider keine Möglichkeit gefunden eine Combobox mit einem "CONCAT-Wert" über 5 Spalten zu füllen als DisplayMember. Als ValueMember die ID zu hinterlegen ist kein Problem. Ich würde auch ungerne weiterhin die komplette Artikelnummer in einer Spalte vorhalten nur um diese Darstellung zu realisieren.
Zweites Problem (eher ein allgemeineres Problem):
Ich würde gerne Radioboxen zum Befüllen einer Spalte verwenden, um zu vermeiden, dass Werte eingegeben werden, die nicht sein sollen (und weil es in der alten Version des programms auch so war ... Gewohnheiten des Kunden ...). Es gibt in der Tabelle der Artikel eine Spalte "x" die varchar(3) ist und darin soll entweder "abc" oder "def" stehen. Mittels der verkünpften Radioboxen soll je nach Auswahl der eine oder andere Wert in die Spalte geschrieben werden. Habe dazu versucht das Textfeld zu verstecken und bei Änderung der Radiobox-Auswahl den Wert entsprechend gefüllt. Leider Funktioniert das nur (und auch nur bedingt), wenn das Textfeld "Visible" ist. Sobald ich Visible=False mache funktioniert das garnicht mehr. Wenn es Visible ist kommt erstmal ein Fehler der besagt, dass MaxLength der Spalte überschritten wird. Der Fehler kommt auch nur einmal.
Schonmal vielen Dank vorab für hilfreiche Anregungen.
ich habe bei einem Migrationsprojekt (von VB 6 -> VB.NET) zwei (für mich) bedeutende Probleme und hoffe ihr könnt mir dabei helfen.
Es geht um eine Art Artikel-Verwaltung mit zugehöriger Bestell-Verwaltung. Es gibt 3 Arten von Artikeln.
a) Alleinstehender Artikel (fängt immer mit "A" an)
b) Bundle Artikel (fängt immer mit B an und besteht aus mehreren Artikeln, die zu einem Bundle gehören müssen)
c) Bundle-Zugehörige-Artikel (fangen mit C, D oder E an und müssen zu einem Bundle gehören)
Jeder Artikel hat bestimmte aber teilweise unterschiedliche Eigenschaften.
Das Ganze ist über eine Access-Datenbank gesteuert, die seit Jahren gewachsen ist (also den kompletten Artikelstamm enthält). Alle Artikel sind in einer einzigen Tabelle. Es gibt also keine m:n Tabelle die z.B. alle Bundle-Zugehörige Artikel mit einem Bundle-Artikel verknüpft. Artikelnummern von Artikeln die mit "A" beginnen bestehen aus 4 Teilen (z.B. A 123 45 678), Bundle und Bundle-Zugehörige-Artikel bestehen aus 5 Teilen (z.B. B 123 456 78 910).
In der Datenbank stehen sie aber z.B. als "A12345678" drin und wurden programmatisch auseinander gerissen. Nun soll das (um es schöner darzustellen) getrennt dargestellt werden. Habe ich soweit auch bereits gelöst durch weitere Spalten und entsprechende Teilung der Artikelnummern nach dem Schema des jeweiligen Aufbaus.
Nun würde ich das Ganze gerne alles sauberer gestalten, als es bisher war ohne dem Kunden seine langjährigen Gewohnheiten zu nehmen, was die Pflege angeht. Das ist z.B., dass er bisher die einzelnen "Blöcke" der Artikelnummer in getrennten Textboxen eingegeben hat, bei der Anlage einer Bestellung dann aber in einem Feld die komplette Artikelnummer ausgewählt werden soll.
Nun mein erstes Problem:
Wie realisiere ich es mit einem DataGridView und/oder DetailView, dass man bspw. eine Combobox sieht, in der die komplette Artikelnummer steht und im Hintergrund die ID des Artikels gespeichert wird? Habe mich die letzten Tage intensiv mit dem FourView Model von "ErfinderDesRades" befasst, aber leider keine Möglichkeit gefunden eine Combobox mit einem "CONCAT-Wert" über 5 Spalten zu füllen als DisplayMember. Als ValueMember die ID zu hinterlegen ist kein Problem. Ich würde auch ungerne weiterhin die komplette Artikelnummer in einer Spalte vorhalten nur um diese Darstellung zu realisieren.
Zweites Problem (eher ein allgemeineres Problem):
Ich würde gerne Radioboxen zum Befüllen einer Spalte verwenden, um zu vermeiden, dass Werte eingegeben werden, die nicht sein sollen (und weil es in der alten Version des programms auch so war ... Gewohnheiten des Kunden ...). Es gibt in der Tabelle der Artikel eine Spalte "x" die varchar(3) ist und darin soll entweder "abc" oder "def" stehen. Mittels der verkünpften Radioboxen soll je nach Auswahl der eine oder andere Wert in die Spalte geschrieben werden. Habe dazu versucht das Textfeld zu verstecken und bei Änderung der Radiobox-Auswahl den Wert entsprechend gefüllt. Leider Funktioniert das nur (und auch nur bedingt), wenn das Textfeld "Visible" ist. Sobald ich Visible=False mache funktioniert das garnicht mehr. Wenn es Visible ist kommt erstmal ein Fehler der besagt, dass MaxLength der Spalte überschritten wird. Der Fehler kommt auch nur einmal.
Schonmal vielen Dank vorab für hilfreiche Anregungen.