Mitgliederverwaltung - Hilfe bei der Erstellung sauberen Codes

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

Es gibt 244 Antworten in diesem Thema. Der letzte Beitrag () ist von tragl.

    Mitgliederverwaltung - Hilfe bei der Erstellung sauberen Codes

    Holla
    Heute habe ich mal eine ganz andere Frage: Ich verkaufe bei mir im Laden verschiedene Angelmarken für verschiedene Vereine, bzw. das Fischereiamt.
    Bisher schreibe ich die Mitgliederdaten per Hand auf und tippe das ganze dann anschließend in eine Excel Liste (Eine Liste für jede Marke).
    Was bescheuert ist, wenn eine Person drei verschiedene Marken kauft, schreibe ich die Daten drei mal (in den entsprechenden Listen) auf und tippe sie danach dann drei mal ab.
    Das möchte ich nun mit einem VB.Net Programm vereinfachen.
    Das Erstellen von DataSet und Code sollte hierbei nicht das Problem darstellen.

    Meine Frage ist nun folgende:
    Wäre jemand bereit über meine Planung, mein DataSet, meinen Code, und meine Programmlogik zu schauen und mir dann eben nicht nur mitzuteilen, was schlecht ist, sondern vor allem warum?
    Hierbei erwarte ich natürlich nicht, dass die Person dann im Endeffekt mein Programm schreibt, aber mir wäre sehr geholfen, wenn ich lerne warum Code zum Beispiel an bestimmte Stellen gehört (bei mir ist zumeist alles in der MainForm).
    Ich habe mir gedacht, dass ich kleine Teilfortschritte in einen Thread hochlade mit einer Bemerkung, was ich halt mit welchem Zweck gemacht habe und dann entsprechend korrigiert werde.
    Das ganze dann in einem Thread - so könnte jemand anderes, der das gleiche Problem hat wie ich - ein Anfängerhaftes Grundverständnis der Sprache, aber irgendwie ab und an komplizierte Denkweisen, der im Murkscode endet - hiervon evtl. auch profitieren.

    Wäre jemand (natürlich gerne auch mehrere) hierzu bereit?
    Klaro
    Im Anhang eine Beispiel-Solution mit einer sehr erprobten Assembly-Architektur für Datenverarbeitungen mit WinForms.
    Tatsächlich ists ein Anwendungs-Template, dessen Kern-Namen ich immer umbenenne, wenn ich ein neues Projekt anfange.

    Zum Umbenennen benutze ich dieses Tool: SolutionExplorer - OpenSource
    Eine andere wichtige Funktion des Tools ist, dass man damit lauffähige Backups zippen kann.
    Dateien
    Sehr schön. Ich danke euch schon mal im Voraus :o)
    Zu deinem Anwendungs Template. Ich hab mir den Code gerade angeschaut, bin aber ziemlich müde...
    Wenn ich das ganze richtig verstehe, verwende ich das ganze wie deine Helpers, um mir bestimmte Dinge zu vereinfachen.
    Nicht falsch verstehen, ich nutze deine Helpers in (fast) all meinen Programmen mit DataSet, aber wäre es in einem Lernprojekt nicht hinderlich, direkt alles an Helferlein reinzuklatschen?
    Also ich hätte einiges an Mühen z.B. eine Funktion (mit sauberem Code) gleich deiner EditCurrent(of Formname) zu erstellen - brauch ich ja auch nicht, hab ja helpers. Aber zum lernen?
    Oder hab ich das _DataSetTemplate falsch verstanden?

    Ich werden jetzt schlafen gehen und gebe euch morgen erstmal Details über das Programm. Also was soll das Programm genau leisten, sowie meinen Ablaufplan, in welcher Reihenfolge ich was machen würde.

    DerSmurf schrieb:

    wäre es in einem Lernprojekt nicht hinderlich, direkt alles an Helferlein reinzuklatschen?
    Och - ich glaub, da bleibt genug zu tun.
    Und ein ganz wichtiges Charakteristikum von Programmieren in einer Hochsprache ist es eben, Dinge, die es bereits gibt, zu finden und zu benutzen - anstatt das Rad neu zu erfinden.
    Das ist auch etwas zu lernen, und ist wichtig.
    Sind schon ganze Raumfahrt-Projekte eingegangen am "NIH"-Syndrom.
    Ja, ok. Das sehe ich ein.
    Ich kann mich mit dem Solution Explorer nicht anfreunden, aber ich probiers. (kann ich nicht einfach eine neue Solution erzeugen, und die Daten aus dem _DataSetTemplate über hinzufügen --> neues Projekt, im Projektmappen Explorer einfügen? - oder im Win Explorer den Ordner _DateSetTemplate00 kopieren, umbennen und dann das _DataSetTemplate öffnen und hier ein neues Projekt einfügen über Projektmappen Explorer --> hinzufügen --> neues Projekt?)
    Ich habe die Solution Explorer Exe runtergeladen und wie beschrieben die _DataSetTemplate.sln damit geöffnet.
    Im sich dann öffnenden Fenster habe ich einfach nur auf "createTemplateChild" geklickt und "Angelmarken" als Namen eingegeben.
    Dann verschwinden im linken DGV zwei Solutions (das waren nach dem starten 3) und ich erhalte angehangenen Fehler.
    Nach klick auf weiter wird im _DataSetTemplate00 Ordner ein Unterordner "Angelmarken", mit ANgelmarken.sln erzeugt.
    Diese Solution ist aber dann nicht lauffähig (massig Fehler nach dem öffnen in Visual Studio.
    Was habe ich falsch gemacht?
    Bilder
    • error.jpg

      394,44 kB, 1.920×1.080, 170 mal angesehen
    mach ma auf die sln-datei rechtsklick -> öffnen mit. Dann suchst dir den solutionexplorer, und das sollte dann klappen.

    @ErfinderDesRades: ggf. könnte man den SolutionExplorer mal dahingehend verbessern, dass man den eigenständig öffnen und aus dem SolutionExplorer selbst eine sln öffnen kann?
    Das scheint der aktuell nicht zu können, ich hatte ja anfangs die gleichen Probleme...
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    tragl schrieb:

    könnte man den SolutionExplorer mal dahingehend verbessern, dass man den eigenständig öffnen und aus dem SolutionExplorer selbst eine sln öffnen kann?
    Für mein Geschmack wäre das keine Verbesserung.
    Aber RodFromGermany hat das gemacht, und hat seine Solution auch im selben Thread angehängt (also auch dieses Rad ist bereits erfunden ;) ).

    @DerSmurf - Zu dem Fehler: Manchmal verhaspelt sich was, was aber meist nix macht.
    guck mal, ob die Solution nicht trotzdem unter dem neuen Namen erstellt ist, und funnzen tut.

    Selber umbenennen kannst du gerne mal versuchen, aber das ist ziemlich tricky, weil man muss vielerlei Ordner, Dateien und Datei-Inhalte in konsistenter Weise umbenennen.
    Möglich ist das, hat mir aber damals kein Spass gemacht - daher das Tool.

    DerSmurf schrieb:

    Ich kann mich mit dem Solution Explorer nicht anfreunden, aber ich probiers

    Das nehme ich hiermit zurück. Ich brauche wohl nur etwas Zeit mich damit anzufreunden. Kopieren der Solution hat funktioniert.
    Und ich glaube die Vorteile erkenne ich (auch wenn das bei mir etwas dauert :)

    Spoiler anzeigen

    Ich habe nun eine Kopie von _DataSetTemplate mit dem Namen Angelmarken.
    Dazu habe ich den Projektordner von DataSetTemplate und _AllHelpers Ordner in meinen Ordner gezogen wo alle meine VB Projekte enthalten sind.
    Nun habe ich eine weiteren Vorteil des SolutionExplorers erkannt. Wenn ich mein Angelmarkenprojekt hier hochlade und zippe das ganze über den SolutionExplorer, werden ja automatisch alle benötigten Projekte in die zip integriert. Also der "Angelmarken"Ordner und der "_AllHelpers" Ordner. Das ist doch schon sehr angenehm.


    Dann kommen wir mal zum Projekt an sich.

    Erstmal was ich hier überhaupt zu welchen Preisen verkaufe:
    Spoiler anzeigen

    vorab - alles was hier auftaucht reiche ich nur weiter. Also ich hohle die Marken und wenn diese (oder ein Lohnenswerter Teil davon) verkauft sind, werden die Marken mit der entsprechenden Stelle abgerechnet. Ich verdiene hier garnix und mache entsprechend auch nicht die Preise / Bedingungen.

    Fischereiabgabemarken (für das Fischereiamt)
    Erwachsene 1 Jahr 12€
    Erwachsene 5 Jahre 40€
    Jugendliche (bis zur Vollendung des 18. LJ) 2,50€
    ein Ausweis in den diese Marken eingeklebt werden (sofern benötigt) 0€

    DAV Marken (für einen Angelverein)
    Erwachsene 73€
    Jugendliche (bis 18) 20€
    bei beiden kommt eine Neuaufnahmegebühr in Höhe von 5€ dazu, wenn sie letzter Jahr keine Marke gekauft haben.
    Ab dem 01.04. kommen 5€ "Verzug" (so nennt es der Verein) hinzu - um die Mitglieder zu "motivieren" früher zu bezahlen.
    Jeder Kunde zahlt aber maximal 1 mal 5 € extra. Also neue Mitglieder die nach dem 01.04. ihre Marke kaufen, zahlen nicht Neuaufnahme und Verzug
    Außerdem ist wichtig, dass neue Mitglieder einen Datenschutzzettel ausfüllen müssen.
    hier Kostet der Ausweis in den die Marken geklebt werden 1€

    Marken für Sachsen Anhalt und Mecklenburg
    Kosten beide 10,50€ - diese sind nur auszuhändigen, wenn der Kunde einen gültigen Fischereischein besitzt und vorlegt. Das gilt für alle anderen Marken nicht.

    Tageskarten(TK) / Wochenkarten(WK)
    TK Erwachsene 13€
    WK Erwachsene 25€
    TK Jugend 5€
    T`WK Jugend 20€
    Nachtangelerlaubnis (nur in Verbindung mit WK) 13€


    Was ist zu speichern, wenn verkauft wird:
    Spoiler anzeigen
    Bei DAV Marken und Fischereiabgabemarken wird Verkaufsdatum, Name, Adresse, sowie Geburtsdatum benötigt. Bei DAV dann noch ein Vermerk (neu / Verzug - wegen der Abrechnungssumme)
    Bei Sachsen Anhalt, Mecklenburg darüber hinaus noch die Fischereischeinnummer, (Fischereischein hat der Kunde) sowie die Nummer der verkaufen Angelberechtigung (die steht halt auf der Mecklenburg Karte).
    Tages- und Wochenkarten, sowie die Nachtangelberechtigungen werden einfach verkauft, ohne das eine Speicherung der Käufer erfolgt.


    Wie es bisher gehandhabt wird und was mein Programm soll (grob)
    Spoiler anzeigen
    Es gibt einen Ordner (also physisch, nicht auf dem PC), da sind alle Marken drin, sowie Zettel auf denen ich beim Verkauf die benötigten Daten aufschreibe.
    Wenn dann eine Abrechnung ansteht, oder der Verein eine Mitgliederliste braucht, tippe ich sämtliche Adressen in eine Excel Tabelle ab.
    Besonders sinnbefreit ist dieses Unterfangen, wenn Karl Heinz eine Abgabemarke, eine DAV Marke und Sachsen Anhalt Karte kauft.
    Dann schreibe ich seine Adresse insgesamt drei mal per Hand in die entsprechende Liste in meinem Ordner und tippe seine Adresse dann irgendwann auch drei mal in die entsprechende Excel Tabelle ab.
    Darüber hinaus speichere ich in den Excel Tabellen noch die Anzahl der bekommenen und abgerechneten Marken, um kontrollieren zu können, ob alles stimmt.
    Also nach dem Prinzip 100 Marken bekommen - 50 verkauft - müssen noch 50 da sein.
    Das sinnlose abtippen soll das Programm nun beenden, der grobe KernFunktionsumfang sollte damit klar sein.


    Ich würde nun folgendes machen:
    1. Mir erstmal genau Überlegen was das Programm können soll (und im groben, wie die Funktionalität erreicht wird)
    2. Wie ich die Daten speicher (DataSet, Datenbank)
    3. mal ein Bild malen, wie das Programm im groben aussehen soll
    4. dann gehts los

    Passt die Reihenfolge so, oder macht etwas anderes Sinn?

    DerSmurf schrieb:

    Bei Sachsen Anhalt, Mecklenburg darüber hinaus noch die Fischereischeinnummer,


    Das würde ich dann verallgemeinern - entweder lässt die "Nummer" (wird vermutlich String sein, weil bestimmt Buchstaben drin vorkommen) leer ("")
    oder trägst die halt für jeden Fall mit ein - wird ja nicht die Unmenge sein.
    Wenn die Behörden dann die Daten brauchen, kannst die ja trotzdem über z.B. EPPlus in eine Excel-Datei schmeißen - hast aber alles an einem
    zentralen Ort. Das macht in meinen Augen schon Sinn. Auch würde hier m.E. DataSetOnly vorerst reichen (käme auf die Datenmenge über 1-2 Jahre an), wenn's
    zuviel Daten sind dann würde ich dir eine Access-Datenbank empfehlen und die müsste dann partiell gelesen werden beim Programmstart. Das aber dann ganz am Ende,
    wenn der Rest soweit steht.


    Ansonsten bau' doch mal dein DataSet zusammen, dann schauen wir mal.
    Ich nutz gerne den DB-Designer, um zu gucken ob alles soweit passen könnte - bevor ich das im DataSet-Designer abhandle. Evtl. hilft das ja

    ErfinderDesRades schrieb:

    Aber RodFromGermany hat das gemacht,

    Das muss ich mir doch die Tage direkt mal anschauen ;) - aber ich hab das glaub' ich auch schon erweitert bei mir, dass das geht.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Ohja, die Info habe ich euch vorenthalten.
    Im Jahr 2020 waren es (alles zusammen) insgesamt ca. 600 gespeicherte Adressen (davon natürlich viele doppelt)

    Ich habe mir bisher wenig konkrete Gedanken über das Programm gemacht (außer das was nicht vermeidbar ist, wenn sich halt damit auseinandersetzt). Mir gehts erstmal insbesondere hierum:

    DerSmurf schrieb:

    Ich würde nun folgendes machen:
    1. Mir erstmal genau Überlegen was das Programm können soll (und im groben, wie die Funktionalität erreicht wird)
    2. Wie ich die Daten speicher (DataSet, Datenbank)
    3. mal ein Bild malen, wie das Programm im groben aussehen soll
    4. dann gehts los

    Passt die Reihenfolge so, oder macht etwas anderes Sinn?



    Denn gerade bei umfangreicherem Code, resultieren meine Lösungen häufig in murks, oder unnötigem, weil meine komplette herangehensweise vergleichsweise schlecht ist. @ErfinderDesRades erinnert sich evtl. an meine Statistikauswertung.
    So wie ich an die Sache herangegangen bin, konnte kein vernünftiger Code bei raus kommen.

    Evtl. beginnt dies ja bereits in den Anfängen eines Programmes.

    DerSmurf schrieb:

    Ich würde nun folgendes machen:


    1. ist wohl zwingend notwendig :D
    2. das kommt später. mit DataSet anfangen reicht - stop: erstmal ein Datenmodell modellieren (könntest das verlinkte Tool nutzen)
    3. spielt erstmal keine Rolle - das ist ja nur die Ansicht auf die Daten, das kann man später designen wie man will
    4. jo, ich warte :P
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    DerSmurf schrieb:

    1. Mir erstmal genau Überlegen was das Programm können soll (und im groben, wie die Funktionalität erreicht wird)
    2. Wie ich die Daten speicher (DataSet, Datenbank)
    3. mal ein Bild malen, wie das Programm im groben aussehen soll
    4. dann gehts los


    Bei mir ginge das so:
    1. Überlegen was das Programm können soll (nicht unbedingt ganz genau, aber schon so, dass ich jemandem das erklären kann)
    2. Mittm SolutionExplorer eine sinnvoll benannte Solution hinkloppen
    3. Und schon gehts los:
    4. In der sinnvoll benannten Solution, im typDataset ein Datenmodell bauen
    5. MainForm mit TabControl bauen
    6. ein UserControl 'uclStammdaten' anlegen, auf TabPage1 damit.
    7. uclStammdaten soweit ausbauen, dass man das typDataset damit bespielen kann, also Daten laden, speichern, eingeben, ändern, löschen.
      Oft ergibt sich auch, dass Daten irgendwie aus externen Dateien eingelesen werden sollen.
    8. weitere UserControls, die ergonomisch spezifische Geschäftsvorfälle unterstützen.
    Punkt 1. und Punkt 4. sind dabei die entscheidenden Weichenstellungen.
    Es gilt aber auch, dass auch diese wandelbar sind.
    Also im Verlauf der Entwicklung wird das Datenmodell (4.) sich sicherlich weiter-entwickeln, möglicherweise auch grundlegend ändern.
    Sogar das Programm-"Lastenheft" (1.) ist bei mir nie sicher davor, dasses geändert oder gar umgschmissen wird.

    Also dein Punkt 2. ist bei mir schon entschieden: Dataset. Wenn und ob zusätzlich eine Datenbank - das zeigt sich später.
    dein 3., Bild malen - dazu nehm ich den Dataset-Designer. Ein Extra-Bild auf Papier enthält für mich keine zusätzlichen Information.

    Jo, also dein Proggi scheint mir eine Art Geschäftsstelle zu sein, die was mit Angeln zu tun hat.
    Es gibt Artikel, die kommen rein und werden verkauft - das kann man wohl als Buchung bezeichnen. (Ob es dazu auch so etwas wie Lieferanten gibt, habich noch nicht verstanden.)
    Aber es gibt auch Kunden, und besondere Artikel, nämlich kundengebundene Artikel - wenn ich das recht verstehe.
    Das Proggi ist also schon bischen spezieller als ein einfacher "Einkaufsladen" von der Stange.
    Also ich wäre bei deim Proggi wohl schon mitten in Punkt 4., Modellierung der Geschäftsvorfälle.

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

    ErfinderDesRades schrieb:

    im typDataset ein Datenmodell bauen

    ich würd's für den groben Anfang erstmal in nem externen Designer machen - VS geht furchtbar hässlich damit um, wenn man Relationen löscht, u.U. ist (wenn man keine Ahnung hat) die ganze Solution futsch.
    Erst wenn das Grundmodell passt, würd ich das in's DataSet "übertragen" und dann starten.

    Ansonsten stimme ich ErfinderDesRades zu:

    - Angel(zubehör?)laden
    - Artikel -> Ja
    - Kundengebunden? vermutlich, da könnte man ein m:n basteln -> Kunden:Mischtabelle:Artikel
    ist auch normal, denn ein Kunde kauft einen oder mehrere Artikel - wobei in einem TanteEmmaLaden die Kunden nicht aufgeschrieben werden, prinzipiell aber das gleiche Vorhaben
    - Lieferanten?

    Also mir schwebt in etwa sowas vor:
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Jo - ist eine hübschere Präsentation als typDataset.
    (Ansonsten komme ich mit typDataset grad gut klar, so Hässlichkeiten kamen mir länger nicht mehr unter.)
    Das "kundengebunden" ergab sich aus der Angelverein-Geschichte.
    Scheinbar sind Angelverein(DAV)-Marken Artikel, bei denen der Kunde notiert wird, während Fischereiabgabemarken-Marken ohne das über den Ladentisch gehen.

    Ja gut, könnte man so modellieren, dass man einen Kunden namens 'Anonym' einführt.
    Fischereiabgabemarken-Marken würden dann an 'Anonym' verkauft, während bei DAV-Marken der richtige AngelVerein-Member angewählt wird.

    Jo, Komplexität wächst langsam.
    Also Kunde hiesse besser Mitglied, und man bräuchte noch eine Historie, die Ein- und Austritt protokolliert.
    Wenn ich recht verstund ist man quasi ausgetreten, wenn man ein jahr keine DAV-Marke gekauft hat.
    Aber es gibt sicher auch andere Möglichkeiten, die Regeln mit 'Neu-Eintritt', und 'Verzug' im Datenmodell abzubilden.

    ErfinderDesRades schrieb:

    o, Komplexität wächst langsam.

    Jo, das kann uns nur der @DerSmurf beantworten. Für den "Kassiervorgang" würde ich dann den Anonymen Kunden oder das Anonyme Mitglied als Defaultwert setzen, dann braucht man da nicht
    rumsuchen und kann den Vorgang schnell abhandeln. Ansonsten wurde ja erstmal alles gesagt - Datenmodell fertigstellen, dann sehen wir weiter.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    Also ich hohle erstmal ein bisschen weiter aus, um Unklarheiten zu beseitigen. Sonst bringt glaube ich die Diskussion übers DataSet nichts.
    Spoiler anzeigen
    Um in Brandenburg zu Angeln, muss ich eine Fischereiabgabemarke kaufen. Diese bekomme ich grundsätzlich beim Fischereiamt.
    Darüber hinaus brauche ich dann noch eine sogenannte Gewässerberechtigung, wenn ich an Gewässern des Landesanglerverbandes angeln möchte.
    Dies geht eben über den Erwerb einer DAV Marke (immer für ein Kalenderjahr gültig) (werden von Angelvereinen verkauft) ODER über Tages- und Wochenkarten (macht der Landesanglerverband)
    Ich kann durch den Erwerb von Abgabemarke und DAV, oder Tageskarte sofort losangeln.
    Wenn ich keinen Fischereischein habe (da kümmert sich der Kunde selbst drum - hab ich nix mit zu tun), darf ich (umgangssprachlich) auf Friedfrische angeln (Beschränkungen auf erlaubte Köder, Hakengrößen usw.).
    Möchte ich diese Beschränkungen umgehen, muss ich als Angler einen Fischereischein machen (Lehrgang, Prüfung, etc. - wie gesagt, hab ich nix mit zu tun). Das spielt aber für den Verkauf von DAV Marken und Tageskarten keine Rolle.
    Der Fischereischein kommt nur ins Spiel, wenn der Kunde eine Berechtigung für Sachsen Anhalt, oder Mecklenburg kaufen möchte. Dort darf ich eben (generell) nicht angeln, wenn ich keinen Fischeischein habe.

    Aus Gründen des Kundenservice, fahre ich zum Fischereiamt, kaufe dort 50 Abgebemarkent 1 Jahr, 50 Abgabemarken 5 Jahre, und 30 Abgabgemarken Jugendliche.
    Die Verkaufe ich dann und schreibe die Kundenadressen (Verkaufsdatum, Name, Anschrift, Geb. Datum) auf. Die Daten sind dann dem Amt bei Abrechnung zu übermitteln.
    Wenn ich neue Marken brauche, fahre ich mit meinen gesammelten Daten zum Amt, bezahle die verkauften Marken und hohle neue.

    Genauso funktionierts mit DAV Marken. Diese bekomme ich von einem Angelverein. Wenn der Verein mit dem Landesanglerverband abrechnen muss (von da bekommt der Verein die Marken), kommt er zu mir, sammelt das Geld für verkaufte Marken ein, nimmt die Kundenadressen (Verkaufsdatum, Name, Anschrift, Geb. Datum) mit und gut.

    Mecklenburg und Sachsen Anhalt Karten muss ich Voraus bezahlen. (diese kommen vom gleichen Verein der mir auch die DAV Marken bringt)
    Hier schreibe ich nur die Daten auf (Verkaufsdatum, Nummer der Angelberechtigungskarte, Fischereischeinnummer, Name, Anschrift, Geb. Datum) auf und gut ist.

    Dann gibts noch die Tages- und Wochenkarten.
    Die bringt mir der Landesanglerverband (LAV). Die Verkauf ich nur, ohne Kundendaten zu erfassen. Wenn ich neue brauch, kommt der LAV sammelt Geld für die verkauften Karten ein und ich bekomme neue.

    Also generell bräuchte ich den Lieferanten im DataSet nicht. Allerdings wäre es eine Überlegung diesen drin zu lassen, falls ich mal für zwei Vereine z.B. DAV Marken verkaufen sollte. (was aktuell nicht geplant und nicht mal in der Überlegung ist)


    ErfinderDesRades schrieb:

    Wenn ich recht verstund ist man quasi ausgetreten, wenn man ein jahr keine DAV-Marke gekauft hat.

    das ist korrekt. Ich frage mich nur, ob ich das im DataSet abbilden muss (sollte), oder einfach beim verkauf einer neuen Marke prüfe.
    Also wenn LetztesJahrGekauft dann
    Ebenso den Verzug, würde ich im DataSet nicht abbilden, sondern einfach beim Verkauf das Datum prüfen. Wenn DatumHeute später als 01.04. dann wirds teurer.
    Edit: wenn ichs nicht abbilde, ist das exportieren der Kundendaten schwieriger. Also doch ins DataSet.

    ErfinderDesRades schrieb:

    1. Überlegen was das Programm können soll (nicht unbedingt ganz genau, aber schon so, dass ich jemandem das erklären kann)

    Das bringe ich dann morgen etwas genauer hier rein, als es aktuell der Fall war.

    ErfinderDesRades schrieb:

    2. Mittm SolutionExplorer eine sinnvoll benannte Solution hinkloppen

    Das habe ich dann mittlerweile geschafft.

    ErfinderDesRades schrieb:

    In der sinnvoll benannten Solution, im typDataset ein Datenmodell bauen

    Da mache ich mich dann morgen auch dran. Ich werds mit dem Link von @tragl machen. Komme selber prinzipiell auch gut, mit dem typDataSet in VS klar. Aber ich denke mir, für euch ist diese Art der Präsentation schöner.
    Vor allem steht auch der Datentyp gleich mit bei - da könnten ja auch Fehler passieren. Und auch die abgebildete "NotNull" Spalte könnte hilfreich sein, denn ich würde im DataSet, dass mir vorschwebt ein paar NullSpalten erlauben. Aber für das fertige DataSet brauche ich noch immer ein bisschen Zeit (finde das noch etwas abstrakt)

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

    @tragl
    Es wird in meinem DataSet Spalten geben, die leer bleiben. Diese gibt es auch in deiner Version.
    Kunde.ScheinNr bleibt leer, wenn die Person keinen Fischereischein hat. Was ja durchaus passiert.

    1. Der Funktionsumfang:
    • Speicherung der Personen / Vereinsmitglieder und wann sie welche Marken zu welchem Preis kaufen
    Wenn jemand kommt und Marken kaufen will, schaue ich in meiner Personen "Datenbank", ob diese existiert. Wenn nicht wird sie angelegt.
    Dann wird die Person ausgewählt und es ist anklickbar, was für Marken verkauft werden sollen.
    Also Fischereiabgabe 1 Jahr, Fischereiabgabe 5 Jahre, Fischereiabgabe Jugend, DAV Erwachsen, usw.
    Hier sollen Prüfungen erfolgen (Ist Jugend / Erwachsenenmarke ok, oder passt das mit dem alter nicht, ist er ein neues DAV Mitglied, also muss Neuanmeldung gezahlt werden. Ist es nach dem 01.04. und muss Verzug bezahlt werden, kauft er SA oder MeckPomm Karte - ist der Fischereischein vorhanden, ...).
    Ganz wichtig ist eine Erinnerung an eine evtl. erforderliche Datenschutzerklärung (bei allen DAV Neumitgliedern)
    Nach dem Klick auf die entsprechende(n) Marken, soll eine kleine Übersicht erscheinen wo Positionsname und Kosten auftauchen:
    Also Abgabe 1 Jahr Erwachsen - 12 €
    DAV Erwachsen - 73 €
    Neuanmeldung - 5 €
    gesamt - 90 €
    • es soll abrufbar sein, wie viele Marken sich im Bestand befinden müssen.
    Hierzu Speicherung der Lieferungen (die Menge an Lieferungen ist sehr überschaubar) und Abrechnungen.
    Also nach dem Motto am 02.01. sind 200 Marken gekommen. Am 05.04. wurden 120 abgerechnet. Am 01.05. wurden 40 abgerechnet.
    Es sind aktuell 180 Adressen gespeichert. Müssen also 20 Marken vorhanden sein.
    • eben ein System zum Speichern der Abrechnungen / Lieferungen
    inklusive der Möglichkeit die eingescannten Abrechnungs- / Lieferzettel hierzu im Programm zu organisieren (ohne den Win Explorer zu benötigen). Also z.B. durch Drag & Drop auf die Form - Zuordnung zu einem Liefer- / Abrechnungsvorgang - automatische Benennung der Datei und Ablage am entsprechenden Ort.
    • eine Exportfunktion der Daten nach Art der Marke (Abgabe 1 Jahr, Abgabe 5 Jahre,, ...)
    ich weiß noch nicht in welches Format. Denkbar wäre xls (EPPlus), pdf (PDFFileWriter), oder eben direkt zum Drucker.
    • export der kompletten Daten, was über eine Person gespeichert wird
    Also die Adressdaten, sowie die Daten wann welche Marke verkauft wurde - quasi alles was "mein Programm über die Person weiß"
    • Die Datenbank oder eben die xml die das DataSet enthält muss verschlüsselt sein
    hier denke ich an eine Verschlüsselung mit dieser CryptoDings Bibliothek mit Passwort und dem Salt dingen da.
    Allerdings würde ich das Passowrt glaube ich im Code speichern. Denn bei jedem Start ein PW eingeben ist lästig.
    • Programm soll auf Touchgeräten vernünftig ohne Tastatur und Maus bedienbar sein
    Wenn ich Marken an einen Kunden verkaufe, der bereits gespeichert ist, soll das ganze mit ein paar weniges Fingertouches vonstatten gehen.
    Es soll aber auch das anlegen eines Kunden per Touch komfortabel möglich sein (so komfortabel wie die Bildschirmtastatur halt ist)




    Edit: DataSet habe ich hochgeladen. Benannt habe ich das ganze jetzt erstmal, wies im normalen Sprachgebrauch üblich wäre (zum einfacheren Verständnis).
    Das fertige DataSet würde ich dann in englisch benennen.

    ErfinderDesRades schrieb:

    Also Kunde hiesse besser Mitglied

    Ich finde "person" am sinnvollsten. Denn ein Mitglied ist er ja eigentlich nur, wenn eine DAV Marke gekauft hat (dann ist er Vereinsmitglied), kauft er eine Fischereiabgabemarke ist er eigentlich kein Mitglied irgendwo (sondern hat halt ne Marke gekauft).
    Bilder
    • DataSet.png

      103,6 kB, 1.027×684, 144 mal angesehen

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