1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Rechnungs- bzw. Kundennummern in Access

Discussion in 'Office-Programme' started by Bander007, May 4, 2011.

Thread Status:
Not open for further replies.
  1. Bander007

    Bander007 Byte

    Hallo zusammen,

    da mein letztes Problem mit Excel hier im Forum schnell gelöst werden konnte, komme ich gleich mit dem Nächsten in Access. :cool:

    Ich baue zur Zeit ein Datenbanksystem mit dem ich Fahrzeugreparaturen abrechen will. In diesem System ist eine Kundendatenbank für Firmen- und Privatkunden, eine für den Reparaturweg, Techniker die das Fahrzeug repariert haben, Projektleiter usw. usw. usw. (sehr viele Daten).

    Im Endeffekt will ich mit disem Tool die komplette Rechnungslegung, Mahnwesen, Zahlungsein- und ausgänge, Sammelrechnung sowie Verwaltung der Kunden und Techniker machen.

    Die Datenbank an sich habe ich angelegt und in Beziehungen gesetzt. Das passt auch soweit alles.

    Nun zu meinem Problemen:

    Kundennummer:

    In der Firma haben wir die Kundennummern wie folgt angelegt:

    11G00001 = JJ/G(für gewerbliche Kunden)/laufende Nummer

    Ich möchte das Access automatisch die ersten beiden Stellen für das Jahr nimmt, dann G für gewerblcihe Kunden und am Ende einen 5stelligen Autowert.

    Für Privatkunden sieht das genauso aus allerdings steht dort anstelle des G ein P. Da ich die Privatkunden von den Firmenkunden getrennt habe kann ich die Lösung dann einfach für die andere Tabelle übernehmen.

    Wie würdet ihr das lösen?

    --------------------------------------------------------------------------------------

    Problem zwei ist die Rechnungsnummer.

    Ein kurze Einleitung; Ich habe das System so angelegt, dass ich für jede Reparatur eine Vorgangsnummer vergebe. Dadurch kann ich dann eine Einzelrechnung für den jeweilgen Vorgang schreiben aber auch eine Sammelrechnung indem ich einfach mehrere Vörgänge eines Kunden per Abfrage zusammenziehe.

    Meine Frage ist jetzt, wie und an welcher Stelle würdet ihr die Rechnungsnummer erzeugen lassen damit ich problemlos Einzel- als auch Sammelrechnungen erzeugen kann?

    Zum Anderen habe ich auch bei der Rechnungsnummer das Problem mit der Formatierung (ähnlich wie bei der Kundennummer). Unsere Rechnungsnummern sehen so aus:

    2011H105400001 = JJJJ/H (Reparaturart)/Personalnummer/5stellige laufende Nummer. Auch hier weiss ich nicht wie ich die Nummer generieren kann. Zusätzliches Problem ist hier, dass ich die Personalnummer an ein Login koppeln möchte.

    Also der Benutzer meldet sich mit seiner Personalnummer und Kennwort im System an. Gibt es da eine Möglichkeit das zu kombinieren und die Rechnungsnummer so zu generieren?

    Bin für jede Hilfe und Idee dankbar. Evtl. ist dieser Post auch eine kleine Herausforderung an die Access und VBA Freaks hier, die Lust haben und mir bei der Realisierung zur Seite stehen wollen.

    Danke im Voraus!

    Gruß Bander
     
  2. kalweit

    kalweit Hüter der Glaskugel

    ...ich kann dir bei deinem Access-Problem zwar nicht helfen, aber vielleicht ein Tipp geben, bevor du einen Haufen Arbeit in das Ganze investierst: hast du schon mal mit einem Steuerberater über das Nummernschema geredet? Betriebsprüfer sind da wenig flexibel, wenn man sich nicht strickt an die gesetzlichen Vorgaben hält. Am besten ist an der Stelle wirklich eine fortlaufende lückenlose Nummerierung ohne Zusatzinformationen.
     
  3. Bander007

    Bander007 Byte

    Danke für deinen Hinweis.

    Rechtlich ist das in Ordnung. Da die letzten 5 Ziffern immer fortlaufend und lückenlos sind und somit jeder Nutzer der Rechnungen schreibt seinen eigenen Nummerkreis hat.

    Aber dein Post war trotzdem hilfreich da ich dadurch noch darauf aufmerksam geworden bin, dass natürlich der Rechnungszähler, also die letzten 5 Ziffern, lückenlos an die Personalnummer geknüpft werden müssen.
     
  4. Hascheff

    Hascheff Moderator

    Hallo Bander,
    deine Fragen sind derart umfangreich, dass ich wohl nicht alles auf einmal beantworten kann.

    Ich habe den Eindruck, du kennst dich mit Access und DB im Allgemeinen aus, trotzdem will ich zu bedenken geben, bevor du einen Haufen Arbeit in das Ganze investierst: Dein Sachverhalt ist ja nicht selten, jeder Händler hat das gleiche, deshalb gibt es fertige Software-Pakete, die dir die Arbeit ersparen. Es muss schon Spaß am Hobby dazukommen, damit sich der Aufwand lohnt.

    Zum Nummernproblem. Der Datentyp Autowert* erlaubt zwei Einstellungen zur Generierung: Inkrementell oder zufällig. Die Kunden müssen nicht wissen, wie viele oder wenige vor ihnen im Geschäft waren. Deshalb empfehle ich Geschäftsleuten die Einstellung zufällig. Jeder Datensatz kann zur Sortierung automatisch eine Zeitangabe bekommen.

    Der Nummer einfach einen Buchstaben hinzuzufügen, wäre über die Formatierung möglich, aber dein Anliegen P/G ist nur in einem zweiten Feld zu realisieren, die Jahreszahl in einem dritten. Zur Anzeige in Formularen u.a. schaltest du eine Abfrage dazwischen, in der dein gewünschtes Format zusammengesetzt wird.

    Genauso kannst du die Kundennummer in die Rechnungsnummer einbauen.

    Fortsetzung folgt.

    Gruß
    Hascheff


    * Meine Kenntnisse stammen von Access 2000.
     
  5. Bander007

    Bander007 Byte

    Hallo Hascheff,

    vielen Dank für deine Antwort und die Anmerkung und den Hinweis das es da auch fertige Lösungen gibt.
    Wir haben einige Lösungen ausprobiert auch Programme von bekannten Software-Firmen. Leider bieten diese Programme nicht das was wir brauchen bzw. ist eine Anpassung an unsere Bedürfnisse derart teuer, dass ich eine eigene Lösung in Access realisieren werde. Da wir ein Dienstleistungsunternehmen in einem speziellen Nieschenmarkt sind, sind auch unsere Anforderungen an die Software leider sehr speziell.

    Zwar ist mein Access- und DB-Wissen nicht mehr so frisch aber ich gehe davon aus, dass ich es mit ein wenig Hilfe bei den schwierigen Sachen schaffen kann. Learning by doing... Spass habe ich sowieso dabei.

    An deinen Lösungsvorschlag mit der Kundenummer habe ich auch schon gedacht allerdings war ich mir nicht sicher ob es Sinn macht das so umzusetzen oder ob es da andere Lösungsansätze gibt.

    Die Rechnungsnummer werde ich fortlaufend und nicht zufallsgesteuert vergeben. Das hat rechtliche Gründe. Ob ein Kunde nun die erste Rechnung hat ist nebensächlich. Wichtig für uns ist, dass die Rechnungsnummern lückenlos sind. Falsch ausgestellte Rechnungen müssen storniert werden, müssen aber trotzdem im System bleiben. Das heisst ich muss diese stornierten Rechnungen später durch eine Abfrage herausziehen können.

    Ich werde deinen Vorschlag für die Kundennummern umsetzen. Somit kann ich die Kundendatenbank fertig stellen.

    Sollte ich die Kundenummer in einer gesonderten Tabelle erzeugen oder würdest du das direkt in der Tabelle mit den Kundendaten machen?

    Ich denke für die Rechnungsnummer ist der Lösungsansatz etwas komplizierter.


    * Meine Kenntnisse basieren auch auf Access 2000 bzw. arbeite ich mit Access 2003.

    Gruß Bander
     
  6. kalweit

    kalweit Hüter der Glaskugel

    ...ich werfe mal noch einen Punkt mit in die Überlegung: die max. Datenbankgröße von Access. Man tut gut daran vorher zu kalkulieren, wie weit man damit kommt. Wenn es unbedingt Access sein muss, würde ich überlegen, in wie weit man Selbigen gleich eine richtige Datenbank unterjubelt - z.B. mySQL per ODBC.
     
  7. Bander007

    Bander007 Byte

    @kalweit: wäre eine Überlegung wert allerdings habe ich keine Erfahrung darin eine SQL Datenbank in Access zu benutzen.

    @Hascheff:

    Die Kundennummern habe ich so generiert. Allerdings habe ich da noch ein paar Formatprobleme.

    - Datum: ich möchte ja nur die letzten beiden Ziffern des Jahres voranstellen also 11 G 00001

    Das feld in dem das Datum generiert wird hat den Feldtyp: Datum/Uhrzeit, Format: Datum, kurz und als Standardwert: Datum()

    Wie bekomme ich es hin, dass ich als Ausgabe nur 11 erhalte und nicht das komplette Datum?

    - Laufende Nummer: für die laufende Nummer habe ich ein ein Feldtyp: Autowert benutzt und im Format "00000" hinterlegt da die anhängende Zahl 5stellig sein soll. Passt soweit. Leider schneidet mir aber die Abfrage die alles zusammensetzt die führenden Nullen ab. Wie kann ich das lösen?

    Gruß Bander
     
  8. kalweit

    kalweit Hüter der Glaskugel

    ...ich rede nicht von SQL - derlei kostet ordentlich "Schotter", da es mit dem Kauf der Datenbank nicht getan ist. Zu mySQL (gibt es in zwei Lizenzmodellen und braucht nicht zwingend ein Server-OS bzw. kann u.a. auch kostengünstig unter Linux laufen) finden sich im Netz reichlich Anleitungen zur Anbindung an Access. Wenn man die Wahl hat, würde ich das von Anfang an so anlegen, um späteren Umzügen und Konvertierungen aus dem Weg zu gehen. Zudem kannst du auf die Daten dann auch problemlos aus anderen Programmiersprachen - z.B. per PHP für ein Kundenportal im Web - zugreifen oder Funktionen z.B. auf Smartphones u.ä. bringen.
     
  9. chipchap

    chipchap Ganzes Gigabyte

    Hallo Bander007!

    Ich will Dir ja nicht den Mut nehmen, aber die Sache geht mit nur einem Programmierer mit hoher Wahrscheinlichkeit vor den Baum.

    Ich war mal Teil einer Softwarefirma, die ein Echtzeitproduktivsystem erstellt und gewartet hat.
    Die Aufgaben waren ähnlich:
    - Auftragsbearbeitung mit Status
    - Versand
    - Rechnungslegung
    - Abrechnung ... .

    Wir waren 6 ausgebildetet Programmierer mit langjähriger Berufserfahrung.
    Gearbeitet haben wir mit Visual Basic 6, MS SQL7 und DE1.
    Alleine die Erstellung des Servergrundprogrammes mit allen LEEREN Tabellen und Abfragen, Berichten, Protokollen, Sicherungsroutinen u.s.w. hat über ein Jahr gedauert.
    Und das waren alles richtige Spezies auf ihrem Gebiet.

    Falls Du Dich für kompetent hälst, versuche es.
    Bedenke aber den Zeitfaktor.
    Vergiß die Fehlerbearbeitung, globale Variablen, unique Felder u.s.w. nicht, um nur einiges zu nennen.

    Wenn das ganze dann noch steuerrechtlich korrekt sein soll, nimm einen Steuerberater dazu.

    Ich würde die ganze Programmierung in Visual Basic schreiben und dann "Format" benutzen.

    Umformatieren als "String" und zurück.
     
  10. kalweit

    kalweit Hüter der Glaskugel

    ...kann hinkommen. Das steckt an Arbeitsleistung auch ungefähr in meinem Backend (allerdings bereits vor 10 Jahren als reine "Cloud"-Lösung angegangen und somit unabhängig von den eingesetzten Clientsystemen).
     
  11. Bander007

    Bander007 Byte

    Mmmh.... Also ich brauche keinen steuerechtlichen Beistand. Wir haben 2 Steuerberater. Das reicht und darum geht es hier auch nicht!

    Auch werd ich sicher kein Jahr und 6 Prgrammierer für das brauchen was ich vor habe. Um es zu vereinfachen: ich will im Endeffekt die eingegebenen Daten mit Abfragen und Formularen bearbeiten und später zusammenfassen und drucken. Ich mache damit keinen Versand noch habe ich ein Lagerbestand oder Warensystem.

    Auf dem Weg dahin habe ich ein paar Fragen wie z.b. mit den Rechnungs- und Kundennummern.

    Ich hoffe das nimmt jetzt etwas den Diskussionsbedarf. Ist nicht böse gemeint aber das bringt mich nicht weiter.


    Wie sieht das dann aus? ich bin leider in VBA nicht so fit. Ist alles schon einige Jahre her.

    Wenn du mir auch hier zeigen könntest wie das auszusehen hat, könnt ich es sicher leichte rumsetzen.

    Danke im Voraus.

    Gruß Bander
     
  12. chipchap

    chipchap Ganzes Gigabyte

    Aber die Buchhaltung machst Du doch.
    Besorge Dir gute Literatur
    http://www.amazon.de/exec/obidos/ASIN/3827314291/qid=971950616/028-3078920-1042133/activevdegbr ,
    http://www.amazon.de/Visual-Basic-P...4283/ref=sr_1_3?ie=UTF8&qid=1304849127&sr=8-3
    und stelle das Grundgerüst mit VB auf.
    Dann mußt Du die Abfragen auf SQL-Ebene einbinden mit den entsprechenden Datenbank-Controls in VB (ADO).

    Bedenke aber, daß Access, im Gegensatz zu MS-SQL oder ähnlichen Datenbanken, Stabilitätsprobleme bei aussetzendem Datenstrom hat.
    Wenn Du schon mit einer einfachen Umformatierung Schwierigkeiten hast, ... .
    FormatNumber (x, "00000")

    Schau Dich mal hier um:
    http://www.activevb.de/startseite/index.html.

    Viel Spaß!
     
Thread Status:
Not open for further replies.

Share This Page