Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Hallo an alle im Forum ... und besonders: hallo an die "Pros"!

Begonnen von newbee_ferdi, Dezember 02, 2019, 22:16:41

⏪ vorheriges - nächstes ⏩

newbee_ferdi

... ich wende mich insbesondere an die letzteren, weil ich diese darum bitte (dazu einlade!), sich mal meinen Datenbankentwurf näher anzusehen (das darf natürlich jeder, der mag).
Ich bin ebenso ACCESS wie VBA-Anfänger und schreibe schon seit geraumer Zeit an meinem "Projekt" (mit zum Teil sehr langen Pausen) herum.
Ich  bin mir sicher, dass ich durch konstruktive Kritik (sowohl an meinem Access-Handling wie auch an meinen VBA-Versuchen) viel mehr lernen kann, als nur weiter still vor mich hin zu programmieren!
Damit bleibt mir jetzt nur noch "Feuer frei"zu geben und euch die DB zur Verfügung zu stellen... (wobei ich hoffe, dass bei der Konvertierung von *.accdb nach *.mdb [damit ich die Datei (geschrieben unter ACCESS2013) hier hochladen kann] nichts 'unter den Tisch' gefallen ist!!
Gruß, Ferdi

MzKlMu

Hallo,
ich habe Deine DB wieder zurück konvertiert (accdb) und als Zipfile hochgeladen. Datenbankbeispiele läd man schon aus Platzgründen als Zipfile hier hoch.

Zur DB:
Ich habe die DB mal kurz angesehen.
Allerdings gibt es dann sofort einen Grund zu meckern.
Warum sind bei einer solchen DB keine Beziehungen angelegt ?
Eine Datenbank ohne Beziehungen ist ein Datenhaufen, aber keine Datenbank.
Beziehungen sind das A+O einer Datenbank und direkt nach dem Anlegen der Tabellen einzurichten.

Was soll die Tabelle mit  der Jahreszahl hinten ?
Jahrestabellen braucht man nicht.
Für die Kategorien legt man noch einen Multiplikator fest (Einnahmen1 und Ausgaben -1), dann spart man sich die lästige Eingabe des Minuszeichens.
Weiterhin ist aufgefallen, dass Du Nachschlagefelder/Listenfelder in den TAbellen hast, die solltest Du raus werfen, haben in Tabellen nichts zu suchen. Nur in Formularen sind diese sinnvoll.

Mehr weiß ich jetzt nicht, wegen den fehlenden Beziehungen habe ich mir die DB nicht genau angesehen. Werde ich auch ohne Beziehungen nicht weiter tun.
Gruß Klaus

newbee_ferdi

Hallo Klaus,
vielen Dank für deine Kommentare!
Harsche Worte - aber eben geradeheraus und deshalb hilfreich.
Tja, .... da werde ich wohl mal bis ganz an die Wurzeln runter müssen, und dieses verkrüppelte Pflänzchen neu hochziehen.

Gruß, Ferdi

ebs17

Ergänzung zu den Beziehungen:
- Damit stellt man referentielle Integrität ein. Der Sinn von integeren Daten sollte einem bewusst sein.
- Das resultierende Beziehungsbild vermittelt - wenn nicht Dir, aber sicher einem Dritten - die Logik und Zusammenhänge zwischen den Tabellen. Ohne diese zu verstehen, ist ein weiteres Anschauen des Restes sehr vergeblich.

Daneben: Ich habe mir mal die erste Abfrage angesehen. Die sieht lesbar so aus:
SELECT
   tblBuchungen.B_Datum,
   tblBuchungen.B_Artikel,
   tblBuchungen.B_Betrag,
   tblBuchungen.Sachkonto,
   tblBuchungen.Geldkonto,
   tblBuchungen.Kategorie,
   tblBuchungen.Empfänger,
   tblBuchungen.Gruppe,
   tblBuchungen.Vormerkung,
   tblBuchungen.Bemerkung,
   tblBuchungen.Fixposition
FROM
   tblBuchungen
WHERE
   (
      ((Month([B_Datum])) = Month(Date()))
         AND
      ((tblBuchungen.Fiktivbuchung) = False)
   )
GROUP BY
   tblBuchungen.B_Datum,
   tblBuchungen.B_Artikel,
   tblBuchungen.B_Betrag,
   tblBuchungen.Sachkonto,
   tblBuchungen.Geldkonto,
   tblBuchungen.Kategorie,
   tblBuchungen.Empfänger,
   tblBuchungen.Gruppe,
   tblBuchungen.Vormerkung,
   tblBuchungen.Bemerkung,
   tblBuchungen.Fixposition
ORDER BY
   tblBuchungen.B_Datum DESC

=> Wenn man alle Felder des SELECT-Teils auch gruppiert (eine Aggregation ist nicht erkennbar), dann liegen in der Tabelle Duplikate vor (Problem), oder die ganze Maßnahme ist Aufwand für umsonst (auch Problem: Laufzeitverlängerung, modern: schlechter CO2-Abdruck)

ZitatWHERE Month(B_Datum) = Month(Date())
So eine Gestaltung stiehlt Dir die Nutzung eines möglicherweise vorhandenen Index. Bei ein paar mehr Daten kann Dir da die verschenkte Performance die Laufzeit ins Unangenehme verschieben.
Mit freundlichem Glück Auf!

Eberhard

newbee_ferdi

Hallo Eberhard,
ich danke auch dir!

Da wird mir so allmählich klar, dass das keine Lücken sind, in meinem Basiswissen, sondern riesige Löcher!
Vielleicht sollte ich doch "Halma spielen" zu meinem Zeitvertreib machen, anstatt mich wie ein Blinder durch die ACCESS, VBA und SQL-Welt zu tasten..........
*sigh
Gruß, Ferdi