Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Striving_Tom am Oktober 24, 2016, 01:55:05

Titel: Rechnungserstellung mit Access
Beitrag von: Striving_Tom am Oktober 24, 2016, 01:55:05
Liebe Forumsmitglieder,

ich bin noch neu im Forum. Seht mir bitte sowohl meine lange Anfrage nach und seht es mir bitte auch nach, falls ich noch nicht die richtige Kategorie ausgewählt haben sollte.

Ich habe vor, die Erstellung von Abrechnungen über Access abzuwickeln. Es geht um rein unternehmensinterne Abrechnungen, daher sind Steuersätze hierbei ohne Bedeutung. Wenn es für mein Vorhaben fertige (nur noch entsprechend anzupassende) Lösungen gibt, wäre das natürlich super. Da ich jedoch schon nach Lösungen/Lösungsansätzen gesucht habe, aber nichts entsprechendes gefunden habe, gehe ich davon aus, eine eigene Struktur erstellen zu müssen. Auch wenn ich in Bezug auf Access noch ein ,,Newbie" bin, erwarte ich NICHT, dass mir jemand die Aufgabenstellung löst und für mich die Arbeit macht. Ich erhoffe mir jedoch Hinweise, um an den Stellen weiter zu kommen, an denen ich im Moment noch ,,festsitze".

Die Ausgangslage ist wie folgt:

Verschiedene Abteilungen erteilen Aufträge, die unternehmensextern vergeben werden. Die Aufträge  führen mehrmals im Jahr zu Kosten, die ca. zwei Mal im Jahr weitergegeben werden sollen.

Pro Auftrag ist nur ein Auftraggeber (eine Abteilung) möglich.
Ein Auftraggeber (eine Abteilung) kann jedoch mehrere Aufträge erteilen.

Jeder aufgelaufene Kostenbetrag betrifft immer genau einen Auftrag.
Zu einem Auftrag können mehrmals jährlich Kosten anfallen.
Zu einem Auftrag können verschiedene Kosten anfallen.
Die Art und die Zahl der anfallenden Kostenbeträge ist je nach Auftrag unterschiedlich .

Folgende Vorarbeit habe ich bereits umgesetzt / folgende Tabellen habe ich bereits angelegt (Die Normalisierungsschritte sollten bereits ,,abgearbeitet" sein) :

Auftragstabelle (mit eindeutiger Auftragsnummer [= Primärschlüssel für Aufträge] , Auftraggeber [=Fremdschlüssel] Auftragsdaten wie Auftragsdatum, Auftrags-Charakterisierung, etc. Ich habe für den Auftraggeber ein Auswahlfeld vorgesehen, über das die Auftraggeber aus der Auftraggebertabelle ausgewählt werden, bin aber nicht sicher, ob das eine ,,saubere" Vorgehensweise ist )

Kostentabelle (mit zugehöriger Auftragsnummer  [= Fremdschlüssel] und weiteren Daten, wie Datum, Betrag, Kostenart [hier sollte gemäß den Normalformen sicher eine Referenz auf die Kostenartentabelle stehen. Ich habe auch hier ein Auswahlfeld vorgesehen, über das die Kostenarten aus der Kostenartentabelle ausgewählt werden, bin aber nicht sicher, ob das eine ,,saubere" Vorgehensweise ist, s.o., außerdem ist hier Ja/Nein-Feld enthalten, um hier kenntlich zu machen, ob die Kostenposition bereits abgerechnet ist.)

Kostenartentabelle (Auflistung aller Kostenarten)

Auftraggebertabelle (Abteilungsnamen, Kostenstellen-Nummern [=Primärschlüssel für Abteilungen])

Folgendes Vorgehen stelle ich mir vor:
Selektion und Abrechnung aller noch nicht abgerechneten Kostenpositionen pro Auftrag (nicht pro Abteilung, d.h. eine Abteilung kann mehrere Abrechnungen erhalten)
Zusammenstellung der für die Abteilung wichtigen Informationen auf der Abrechnung
(Nennung der Abteilung; Nennung der Kostenstelle;
Auflistung der Kostenpositionen, Nennung von Kostenart, Datum des Kostenanfalls und natürlich der Betrag; Berechnung der Summe der Beträge; Gestaltung der Abrechnung in einem angenehm lesbaren Format, Ausdruckmöglichkeit, vorzugsweise über Erstellung einer PDF-Datei, die sowohl gespeichert als auch ausgedruckt werden kann. Mit Erstellung der PDF-Datei (bzw. mit Ausdruck) sollten die abgerechneten Kostenpositionen in der Kostentabelle als ,,abgerechnet" [Ja/Nein-Feld] gekennzeichnet werden, so dass sie bei der nächsten Abrechnung nicht doppelt abgerechnet werden können.

Meine Hauptfragen sind im Moment:
- Ist die Aufgabe über Abfragen oder eher über Formulare oder über Berichte zu lösen?
- Wie kann ich zusammen mit der ,,Erstellung" der Abrechnung den Eintrag ,,abgerechnet" für die abgerechneten Kostenpositionen in der Kostentabelle erreichen?
- Wo finde ich Hinweise, nach welchen Begriffen/Schlagworten muss ich suchen, um mir das Wissen über die notwendigen Schritte anzueignen?

Ich hoffe auf viele konstruktive Hinweise (konstruktive Kritik ist auch ok) und sage schon einmal herzlichen Dank
Thommy
Titel: Re: Rechnungserstellung mit Access
Beitrag von: DF6GL am Oktober 24, 2016, 08:18:47
Hallo und willkommen im Forum.

Das Tabellenkonzept (Datenbeziehungen) sieht ja schon vielversprechend aus, die Normalisierungsregeln als Basis für eine erfolgreiche DB_Entwicklung dürften eingehalten sein.


Die Auswahl von z. B. Stammdaten (oder Datensätzen (Fremdschlüssel)  ) aus den 1-Tabellen  mit Kombifeldern ist standardmäßig durchaus üblich.

Zu den Fragen:

--  zunächst werden Daten immer über Abfragen (SQL-Strings) "ausgelesen". Die Darstellung der Daten erfolgt dann in Formularen oder Berichten.  Formulare werden in aller Regel und primär für Datenmanipulationen und Ablaufsteuerung eingesetzt.   Für Analysezwecke bieten sich eher die Berichte an, weil dort besser  gruppiert, berechnet und dargestellt werden kann.

-- Wenn es überhaupt nötig ist, ein solches "berechnetes" Feld  als Wert zu speichern, so geschieht das über eine entspr. aufgebaute Aktualisierungsabfrage oder auch mit Hilfe eines Recordsets per VBA.

Normalerweise speichert man berechnete Werte nicht, sie sind ja immer wieder neu berechenbar und dadurch als "Nebeneffekt" immer aktuell.


-- am besten schilderst Du das konkrete Problem und fragst nach dessen Lösung


Konkrete(re) Hinweise zum Tabellenaufbau wären möglich, wenn Du einen Screenshot des Beziehungsfensters hier hochlädst.
Titel: Re: Rechnungserstellung mit Access
Beitrag von: Striving_Tom am Oktober 24, 2016, 10:00:18
Hallo Franz,

zuerst einmal herzlichen Dank für die schnelle Antwort.

Abfragengestaltung über SQL sollte ich grundsätzlich nach ein bisschen Auffrischung hinbekommen. Damit habe ich früher (vor mehr als 10 Jahren) schon einmal gearbeitet. Das führt aber zu zwei Anschlussfragen:

- Wo/Wie kann ich in Access SQL-Strings eingeben? (Ich glaube, es handelt sich um die Version 2010, muss ich in der Firma einmal nachsehen.)
- Ist die Gestaltung der Abfrage über die vorgesehenen Access-Optionen (z.B. Abfrage-Assistent) nicht auch möglich und Access erzeugt daraus die entsprechenden SQL-Strings?

Speicherung: Die erzeugte "Rechnung/Abrechnung" soll (außerhalb von Access, jede "Rechnung/Abrechnung" als "Einzeldokument" möglichst gespeichert werden können, damit sie für die Buchhaltung ausgedruckt ("keine Buchung ohne Beleg") und gegebenenfalls identisch reproduziert werden kann. (D.h. eine Aktualisierung = Neuabfrage ist in diesem Fall bewusst nicht vorgesehen.)

Gerne lade ich innerhalb der nächsten Tage eine Ansicht des Beziehungsfensters und/oder auch eine anonymisierte und verallgemeinerte Version der Datenbank im gegenwärtigen Status hoch, damit sich jemand das einmal ansehen und weiter Tipps geben kann.

Herzlichen Dank und viele Grüße
Thommy

Titel: Re: Rechnungserstellung mit Access
Beitrag von: PhilS am Oktober 24, 2016, 10:05:22
Zitat von: DF6GL am Oktober 24, 2016, 08:18:47
-- Wenn es überhaupt nötig ist, ein solches "berechnetes" Feld  als Wert zu speichern, so geschieht das über eine entspr. aufgebaute Aktualisierungsabfrage oder auch mit Hilfe eines Recordsets per VBA.
Vielleicht habe ich es überlesen, aber ich denke im Datenmodell fehlt eine Tabelle "tblAbrechnung", mindestens mit "Auftrag"(FK) und "DatumAbgerechnet".  "DatumAbgerechnet" wäre ein Feld das bei Erledigung einer Abrechnung mit dem aktuellen Datum gefüllt werden sollte. Dies ist kein berechnetes Feld im eigentlichen Sinne, denn es speichert eine Information, die nicht aus der Datenbank ermittelt werden kann, sondern aus dem Prozess von aussen kommt.

In der Tabelle "Kosten" kann die AbrechnungId gespeichert werden um eine 1:N-Beziehung zwischen einer Abrechnung in den darin abgerechneten Kosten abzubilden. Darüber lässt sich dann ermitteln, welche Kostenposition bereits abgerechnet wurde (und wann!).
Titel: Re: Rechnungserstellung mit Access
Beitrag von: MzKlMu am Oktober 24, 2016, 10:05:40
Hallo,
Zitat- Ist die Gestaltung der Abfrage über die vorgesehenen Access-Optionen (z.B. Abfrage-Assistent) nicht auch möglich und Access erzeugt daraus die entsprechenden SQL-Strings?
das ist grundsätzlich so. Access erzeugt auch mit dem Assi/Entwurfsansicht SQL. Das Ansichtsfenster lässt sich zur SQL Sicht umschalten. Allerdings ist der so erzeugte SQL Code nicht immer optimal und muss ggf. nachgearbeitet werden.
Titel: Re: Rechnungserstellung mit Access
Beitrag von: DF6GL am Oktober 24, 2016, 16:37:10
Hallo,

@Phils:
insgesamt stimmt das schon. Habe deshalb "gespeichert" ja in Gänsefüße gesetzt....  ;)

Die Aussage "Die erzeugte "Rechnung/Abrechnung"  lässt aber darauf schließen, dass daraus der "Status" gewonnen werden kann.  Wo nun die grundlegende Angabe für eine abgeschlossene Rechnung erfasst wird, lasst sich IMHO erst am Screenshot des Beziehungsfensters erkennen.


M. E. ist auch ein "Status"-Feld, das sich aus anderen gespeicherten Daten (irgendwie) ergibt, auch ein "berechnetes" Feld. Es muss sich ja nicht um eine mathematische/numerische Berechnung handeln.
Titel: Re: Rechnungserstellung mit Access
Beitrag von: Striving_Tom am Oktober 25, 2016, 10:42:37
Liebe "Beantworter"

schon einmal herzlichen Dank für Eure Antworten. Das gibt mir schon mal einige Ansatzpunkte, um weiter zu machen.

Kurze Anmerkungen



Viele Grüße
Thommy
Titel: Re: Rechnungserstellung mit Access
Beitrag von: DF6GL am Oktober 25, 2016, 12:39:39
Hallo,

eine Access-Datenbank(-Applikation) mit Libre Office Base zu öffnen, wird sich nicht realisieren lassen.

Möglicherweise können sich Tabellen(daten) (evtl. über CSV-Format) ex-/importieren lassen.