Reverent Geschrieben 3. Februar 2006 Teilen Geschrieben 3. Februar 2006 Hallo Leute, ich bin neu hier und ich soll eine Kundenverwaltung realisieren. Ich hoffe Ihr da draußen könnt mir helfen! Ich weiß welche Daten zu verwalten sind, ich benutze den MS SQL Server 2005 und VS2005. Jetz habe ich mir mal ein paar Gedanken über die OOP gemacht. Und zwar, mein Problem ist jetzt, wie bekomme ich die Daten Objektorientiert in das Formular und wieder zurück? 1. das Kundenformular (Kunden anlegen, löschen u.s.w.) soll ein Usercontroll werden, da ich es dann später noch für andere Programmen verwenden kann. 2. Die Logik des UserControl's verlege ich in die Klasse 'Verwaltung' Mit anderen Worten: Wo dann Funktionen wie 'Daten Laden', 'Daten Anlegen', 'Daten Ändern' und 'Daten Löschen' aufgerufen werden.. 3. eine Klasse die den Datenzugriff regelt damit meine ich z.B. das diese Klasse Funktionen enthält wie 'void SelectData(string SQL)' u.s.w. Frage zu Punkt 3:"Ist in der Klasse auch das DataSet enthalten in dem die Kundendaten gespeichert werden?" Ich bitte um Denkanstöße für ein einen OOP gerechten Lösungsweg ich möchte kein Code sondern nur wie man so was anpackt! Das alles so 0815 zuschreiben ist kein Problem, aber das alles OOP gerecht zumachen!! Eine andere Überlegung von mir war, es doch 0815 zumachen und dann die Funktionen auslagern! Bis Dann Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Trux Geschrieben 4. Februar 2006 Teilen Geschrieben 4. Februar 2006 Normaler weise mache ich eine klasse mit der ich auf die DatenBank zugreife. Also einfach eine mssql-Klasse mit methoden wie GetUser() etc. Oder du baust dir selbst einen Adapter, der über reflection die Klassen anhand von tables füllt. Die eleganteste lösung meiner meinung nach. Aber ich habe gelesen das man mit VS05 einen Adapter hat, dor muss man über eine XML datei angeben welche properties eine klasse zu welchen tabellen feldern gehören, und kann sich die dann füllen lassen. Habe damit aber noch nicht gearbeitet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reverent Geschrieben 5. Februar 2006 Autor Teilen Geschrieben 5. Februar 2006 Hallo Leute, ich habe jetzt mal verschiedene Sachen durchgespiel. Und meine Entscheidung ist das ich die Kunden doch auf einem SQL Server speichere. Ich benutze den Microsoft SQL Server 2005 Express. Und so möchte ich die Sache aufbauen: 1. ein UserControl in dem die Daten dargestellt werden 2. eine Klasse, die die Logik des UC enthält 3. eine Klasse die den Datenzugriff regelt und in Ihr ist auch das DataSet, was die Kundendaten enthält. Ich habe in dem UC ein DataGridView, wenn ich nun die Verbindung zur Datenbank mit dem Assistenten erstelle klappt alles wunderbar. Er erstellt mir ein passendes DataSet, eine BindingSource und ein TableAdapter. Und wenn ich nun in dem Load Ereigniss noch die Zeile: TableAdaper.Fill(DataSet.Tabelle); einfüge und die Anwendung starte, OH Wunder sehe ich meine Daten. Nur halt alles in den UC und nicht in der Klasse für den Datenzugriff. Meine Frage:"Muß ich den Code den der Assistent erzeugt alles in meine Klasse umschreiben?" Ich bedanke mich schon mal für Eure Hilfe! Bis Dann Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 5. Februar 2006 Teilen Geschrieben 5. Februar 2006 Nur halt alles in den UC und nicht in der Klasse für den Datenzugriff. Meine Frage:"Muß ich den Code den der Assistent erzeugt alles in meine Klasse umschreiben?" Wenn Du mit dem Code des Assitenten nicht zufrieden bist, musst Du ihn natürlich umschreiben/selbst neu schreiben. Du kannst Dich aber ja an ihm orientieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reverent Geschrieben 6. Februar 2006 Autor Teilen Geschrieben 6. Februar 2006 Hallo Bubble, danke für Diene Hilfe, ich hatte mir so was schon gedacht. Ich habe in dem UC ein DataGridView, wenn ich nun die Verbindung zurDatenbank mit dem Assistenten erstelle klappt alles wunderbar. Er erstellt mir ein passendes DataSet, eine BindingSource und ein TableAdapter. Und wenn ich nun in dem Load Ereigniss noch die Zeile: TableAdaper.Fill(DataSet.Tabelle); einfüge und die Anwendung starte, OH Wunder sehe ich meine Daten. Nur halt alles in dem UC und nicht in der Klasse für den Datenzugriff. Da muß ich wohl oder übel den Code, den der Assistent erzeugt in meine Klasse umschreiben!! Und das bringt mich zu meinem nächsten Problem: Was ist ,wenn an der Datenbank mal was geändert wird, dann muß ich ja den ganzen Code anpassen, z.B. die Spalten in der DataGridView und so weiter! Ich habe mir überlegt um das zu umgehn, erstelle ich eine XML Schema Datei, die ich einlese. Wenn jetzt Änderungen an der Datenbank gemacht werden, müßen diese nur in der XML Datei auch gemacht werden und das Programm läuft dann schon wieder, oder? Bis Dann Markus Ich bedanke mich schon mal für Eure Hilfe! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 6. Februar 2006 Teilen Geschrieben 6. Februar 2006 Und das bringt mich zu meinem nächsten Problem: Was ist ,wenn an der Datenbank mal was geändert wird, dann muß ich ja den ganzen Code anpassen, z.B. die Spalten in der DataGridView und so weiter! Im Prinzip ja, aber normalerweise weiss man schon sehr genau, welche Spalten aus welchen Tabellen man benötigt und übernimmt die Tabellen nicht unbedingt 1:1. Ich nehme an, Du hast ohnehin eine spezielle Eingabemaske und möchtest nicht beliebige Tabellen zum Bearbeiten öffnen. Ich habe mir überlegt um das zu umgehn, erstelle ich eine XML Schema Datei, die ich einlese. Wenn jetzt Änderungen an der Datenbank gemacht werden, müßen diese nur in der XML Datei auch gemacht werden und das Programm läuft dann schon wieder, oder? Du kannst ein XML-Schema erstellen. VS kann Dir dann damit automatisch eine neue angepasste DataSet-Klasse erstellen, was Dir die Handarbeit an dieser Stelle abnimmt. Allerdings: Du brauchst immer das Tool, um aus dem Schema eine neue von DataSet abgeleitete Klasse zu erstellen und wenn sich an dieser Klasse Änderungen ergeben, dann musst Du Deinen übrigen Code trotzdem per Hand anpassen. Ganz ohne eigene Arbeit geht es halt doch nicht Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reverent Geschrieben 8. Februar 2006 Autor Teilen Geschrieben 8. Februar 2006 Danke für Deine Antwort, ich werde mich da mal gleich dran setzen. Bis Dann Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.