Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Rechnungsdatenbank erstellen

Begonnen von trkiller, Februar 06, 2012, 15:13:40

⏪ vorheriges - nächstes ⏩

trkiller

Hallo Liebe Gemeinde,

ich bin gerade dabei mir eine Datenbank zu erstellen für meine eigene Werkstatt. Bisher habe ich alles mit Excel gelöst, aber langsam wird das ganze ziemlich unübersichtlich.
Teilweise habe ich schon angefangen mit der Datenbank, jedoch bereitet mir eine Sache ziemliche Probleme.
Meine 2 Tabellen:

Rechnungskopf: Rechnungsnummer, Datum, Vorname, Nachname, Strasse, Hausnummer, PLZ, Ort
Rechnungszeile: ID, Anzahl, Artikelbezeichnung, Preis,RechnungsNr_ID , + Gesamtpreis in der Abfrage

Das erstellen der Formulare bereitet mir keinerlei Probleme und die Programmierung im VBA eigentlich auch nicht.
Ich erstelle ein Formular mit ungebundenen Feldern, in diesem Formular ist auch ein Unterformular eingebunden mit Rechnungszeile, diese sollen am Start des Formulares leer sein, wenn ich jetzt was eintrage soll ein neues Zeile erscheinen um weitere Einträge machen zu können.
Wie kann ich es machen, das es nicht sofort speichert im Unterformular, sondern nur speichert wenn ich meine Schaltfläche betätige. 

DF6GL

Hallo,


"ein Formular mit ungebundenen Feldern"


warum denn ungebunden?   Erstelle z. B. mit dem Assistenten das (Haupt-)Formular mit Basis zu Tabelle "Rechnungskopf" als Einzelform  und ein (Unter-) Endlosform mit Basis zu Tabelle "Rechnungszeile" .  Erstelle zunächst eine Beziehung(slinie im Beziehungsfenster) über die Schlüsselfelder ( "Rechnungsnummer" und "RechnungsNr_ID") , dann ziehst Du im Formularentwurf des Hauptforms das Endlosform (aus dem Datenbankfenster) in den Detailbereich des Hauptforms.


"Wie kann ich es machen, das es nicht sofort speichert im Unterformular, sondern nur speichert wenn ich meine Schaltfläche betätige. "

Sowas ist gegen den Strom geschwommen, weil Access "lieber" speichert als nicht.  Besser wäre, vor dem Speichern auf unzulässige Daten zu prüfen und entspr. zu reagieren (z. B. im Form_BeforeUpdate-Ereignis)



"diese sollen am Start des Formulares leer sein" 

Warum?
Steuere das Form so, dass beim Klick auf einen Button ("Neu") eine neue Rechnung erfasst werden kann..


Alternativ kann auch das Form bie seiner DAten-Eigenschaft "Daten eingeben" auf "ja" gesetzt werden, so dass gleich nach dem Öffnen mit der EIngabe einer oder mehrerer Rechnungen begonnen werden kann.


BTW: 
--Auf Name "Anzahl"  verzichten.
--Überlegen, ob  "Rechnungskopf" nicht weitergehend normalisiert werden kann (z. B. die Anschrift/Kundendaten in extra Tabelle auslagern.)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

trkiller

Die Beziehungen habe ich schon gemacht, eine Abfrage, ein Formular mit Unterformular ist auch schon erstellt.
Mein Gedanke war es egentlich, nicht auf gebundene Felder zurückzugreifen, da ich nicht will das bei der Rechnungserstellung die vorher eingegebenen Werte stehen sollten. Habe ich die Möglichkeit, die alten Daten nicht anzeigen zu lassen? denn dann wäre es ja in Ordnung.
Es ist also nicht möglich ein ungebundenes Unterformular zu erstellen und Daten einzugeben, habe es lange probiert aber nicht hinbekommen, danke dir für die Hinweise

Im Grunde genommen, habe ich die Datenbank komplett so aufgebaut, wie du es mir gerade erklärst, auch das ich die Tabelle Rechnungskopf normalisieren soll.

MzKlMu

Hallo,
ZitatHabe ich die Möglichkeit, die alten Daten nicht anzeigen zu lassen?
Ja, natürlich. Stelle die Eigenschaft "Daten eingeben" auf ja. Dann siehst Du nur die neu eingegebenen Datensätze.

Ich würde niemals auf den Kompfort gebundener Formulare verzichten.
Ungebunden musst Du alles programmieren was Access ansonsten serienmäßig (besser) kann.

Mir fällt kein Grund für ungebundene Formulare ein.
Gruß Klaus

trkiller

Danke für die Information.
Ich weis auch nicht, bin aber gewöhnt zu programmieren :) deshalb auch das mit ungebundenen Feldern, aber ich denke hier habe ich keine andere Möglichkeit

MzKlMu

Hallo,
Zitataber ich denke hier habe ich keine andere Möglichkeit
Zu was hast Du keine andere Möglichkeit?
Gruß Klaus

trkiller

mit den ungebundenen Feldern, zumindest im Unterformular/Endlosformular :)

oma

Hallo trkiller,

eine db zur Erstellung von Rechnungen ist ja nun fast ein Klassiker für Access-Lösungen, es existieren sicher etliche Modelle im Netz!
meine db in der Firma existiert nun etwa seit 10 Jahren ohne mucken mit zahlreichen Funktionen (Rechnungskontrollen, Eingangskontrollen ; Grafische Auswertungen für beliebige Zeiteinheiten usw.); so etwas ist alles ohne große Tricks möglich - und alles mit gebundenen Feldern ;D

also, beschreibe mal dein "Problem" mit gebundenen Feldern

Gruß Oma
nichts ist fertig!

Jonny

Hallo,

machen kann man das auch.
Du kannst eine Eingabezeile mit ungebundene Felder machen. Nach bestätigen (z.B. Schaltfläche Speichern)
fügst du dann einen DS in die Tabelle an, füllst alle Felder und aktualliserst die Anzeige.

Das ist aber unnötig Aufwendig wie meine Vorredner (oder muss es Vorschreiben heissen) schon erklärt haben.
Halt nur programmieren des programmieren willens.

Gruß

Johann

MzKlMu

Hallo,
Zitat von: trkiller am Februar 07, 2012, 11:17:34
mit den ungebundenen Feldern, zumindest im Unterformular/Endlosformular
Ich sehe nach wie vor keinen Grund für ungebundene Forumulare. Auch bei einem Unterformular als Endlos.
Verwende Deine Programmierenergie in die Gestaltung und Bedienungssicherheit der Formulare (und Validierung der Daten) als auf Dinge die Access von Haus aus besser kann.
Gruß Klaus

trkiller

Ja ich verstehe schon was ihr alle meint mit den gebundenen Feldern das es besser ist und das wenn ich ungebundene Felder benütze die Fehlerrate höher ist.
Der Sinn der ganzen Sache ist nur das erlernen der Programmierung, sonst nichts.
Ich habe meine jetzige/aktuelle Datenbank komplett ohne gebundene Felder programmiert, was ich halt schön finde an der Programmierung ist das denken und verzweifeln :) auch wenn es komisch klingen mag.
Als Access Anfänger habe ich halt direkt das programmieren gelehrt bekommen ohne gebundene Felder zu benützen und da hänge ich gerade immer noch drin, habe aber gemerkt das ich bei einigen Sachen doch viel zu lange brauche.

Ich werde euren Rat befolgen und werde jetzt mal anfangen mit gebundenen Feldern zu arbeiten.

MzKlMu

Hallo,
ZitatAls Access Anfänger habe ich halt direkt das programmieren gelehrt bekommen ohne gebundene Felder zu benützen
Da hast Du nicht gutes gelernt.  ;D Man kann das ein mal machen, um zu sehen wie es geht, aber das wars dann schon.
Gruß Klaus

trkiller

ja jetzt weis ich ja wie es geht, also darf ich jetzt das komfortabelere benüzten :)

DF6GL

Hallo,

wenn es das Problem ist, ein ungebundenes Endlosform mit mehreren anzuzeigenden Datensätzen zu erzeugen, dann ist es wohl so, dass es ein solches Endlosform nicht gibt.

Insofern muss (im einfachsten Fall) ein Einzel-Form herhalten, das die einzelnen "Zeilen" durch ein ganzes Array von Feldern simuliert, die per Programm (VBA) halt sichtbar/unsichbar gesteuert und (logisch richtig) mit Werten  gefüllt werden müssen. Ob sich der Aufwand lohnt, bleibt dahingestellt ("ich bin gerade dabei mir eine Datenbank zu erstellen für meine eigene Werkstatt.")

Aufwändiger kann man sich die Sache ja auch schnell  vorstellen und versuchen, Access zu "kopieren" , indem man die nötigen Felder je nach Datensatzanzahl und Höhe (Größe) des Formulares  dynamisch erzeugt, positioniert und mit Werten füllt. Von den erforderlichen Steuerungsmöglichkeiten (Scrollen z. B. ) mag ich jetzt gar nicht reden. VBA bietet ja schon die Möglichkeiten (z. B. Klassenmodule, OOP (zumindest ansatzweise) , etc) , aber ich wüde mir wirklich überlegen, die Zeit für solche Dinge nicht für den Nachbau von vorhandenen Access-Standard-Funktionalitäten zu verschwenden.







Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

trkiller

Um ehrlich zu sein kam mir die Idee auch schon, aber im Grunde genommen hast du ja auch recht, ich werde meine Zeit nicht damit verschwenden da ich eh keine Zeit habe.
Ich mache alles nebenbei und daher kann ich nicht die Zeit investieren die ich brauchen würde