Hallo liebe Accessprofis,
ich bin relativ neu im Datenbank-Business und stehe nun vor ein paar Problem(chen), welche ich sicher mit Eurer Hilfe gelöst bekomme.
Ich habe eine Datenbank erstellt in welcher die Bauabzugsteuer für div. Gemeinden und div. Bauunternehmer unterjährig kontrolliert werden soll.
Hierfür habe ich folgende Tabellen angelegt:
1.) Gmeinden
2.) Baufirmen
3.) Rechnungserfassung
Abfragen
1.) alle Daten aus den Baufirmen kombiniert mit der Rechnungserfassung (für Berichte)
2.) Firmen + Gemeinde = Gesamtsumme (daraus habe ich ein Unterformular erstellt)
und nun zu meinen Problemkindern
Formulare
1.) Erfassung Baufirmen
2.) Erfassung Rechnungen
Mein Probleme sind:
1.)Wenn ich über das Formular Baufirmen eine neue Firma anlege und dann in das Formular Rechnungen wechsle, steht mir die "frisch" angelegte Firma nicht zur Verfügung. Erst wenn ich die dazugehörige Tabelle öffne.
2.)Ich habe im Formular Erfassung
2 Unterformulare in dem ersten gebe ich die Daten der Rechnung ein, in dem zweiten (über die Abfrage) soll sofort der neue Jahresgesamtbetrag erscheinen. Dies wird erst aktualisiert, wenn ich einen Datensatz vor und zurück gehe.
3.) Wie kann ich in einem Unterformular welches ich mit dem Assistenten ausgefüllt habe dafür sorgen, dass zu einer Gemeinde Nr. der GemeindeName automatisch angezeigt wird. (Ich weiß das geht mit einem Kombinationsfeld, aber über den Assistenten klappt das irgendwie nicht)
Hat jemand einen guten Tipp für mich?
Werde jetzt meine Datenbank mal kopieren und mit Fantasie-Daten befüllen (ihr wisst ja, Datenschutz und so) und falls nötig hier reinstellen :)
Ich hoffe ich war mit meiner Erklärung nicht zu konfus und ihr versteht was ich meine.
In jedem Fall jetzt schonmal Danke für Eure Hilfe :)
Liebe Grüße
MSteele
Hallo,
ich denke du hast zuerst mal ein strukturelles Problem mit den Tabellen.
Rechnungen speichert man eigentlich in mind. 2 Tabellen, tblRechnungen und tblRechnungspositionen die 1:n verknüpft werden.
Zitat1.)Wenn ich über das Formular Baufirmen eine neue Firma anlege und dann in das Formular Rechnungen wechsle, steht mir die "frisch" angelegte Firma nicht zur Verfügung. Erst wenn ich die dazugehörige Tabelle öffne.
Dann gehe ich davon aus dass das Formular Rechnungen bereits geöffnet ist. Beim Focus-Ereignis des Formulars Rechnungen einfach die Datenherkunft aktualisieren:
Private Sub Form_GotFocus()
Me.Requery
End Sub Zitat2 Unterformulare in dem ersten gebe ich die Daten der Rechnung ein, in dem zweiten (über die Abfrage) soll sofort der neue Jahresgesamtbetrag erscheinen. Dies wird erst aktualisiert, wenn ich einen Datensatz vor und zurück gehe.
Aus dem ersten Unterformular ebenfalls die Datenherkunft des 2. Unterformulars aktualisieren:
Me.Parent!NameZweitesUnterformularControls.RequeryWenn du deine Datenbank hier hochladen könntest mit Phantasiedaten wäre das sinnvoll.
Gruß Andreas
Hallo Hondo,
vielen lieben Dank für die rasche Antwort.
Aber tatsächlich bin ich zwar kein SUPER DAU, kann aber mit den Codes nicht wirklich viel anfangen. Alles Wissen kommt von Hilfeseiten und Videos.
Ich konnte die Datenbank nur gezippt hier reinpacken.
Danke nochmal und Grüße
MSteel
TEST_Forum.zip
Hallo,
ZitatHierfür habe ich folgende Tabellen angelegt:
1.) Gmeinden
3.) Rechnungserfassung
Von diesen 2 Tabellen ist in Deinem Beispiel nichts zu sehen.
PS:
Die Beziehungen sind falsch. Beziehungen sollten grundsätzlich über den Primärschlüssel laufen (das ist einer der Aufgaben des PS). Dazu werden in den abhängigen Tabellen entsprechnede Zahlenfelder benötigt. Außerdem ist grundsätzlich referentielle Integrität einzustellen. Die DB bedarf der Überarbeitung. Bevor das nicht alles korrekt angelegt ist, solltest Du mal die Formulare und Berichte bei Seite lassen, das macht jetzt noch keinen Sinn.
Du solltest Dich auch mit den Grundlagen zu Access beschäftigen. Hierzu ein Link:
https://www.access-tutorial.de/
Hallo Klaus,
korrekt - in meiner Beschreibung habe ich andere Formulierungen genommen:
Mandant = Gemeinde
Bauabzugssteuer = Rechnungserfassung
hmmm... das mit dem Primärschlüssel, da verstehe ich zwar was Du meinst, aber nicht wie ich das umsetzen sollte.
Aber ich lese das Tutorial auch noch, vielleicht hab ich dann noch ein paar AHA Momente.
Auch Dir Danke für Deine Antwort.
Viele Grüße
MSteele
@andreasHier fehlt allerdings noch der Bezug auf das Form im Control
Me.Parent!NameZweitesUnterformularControls.Form.Requery@MsSteele Schaust du auch hier (http://4.2bezugaufunterformular/berichthttps://www.donkarl.com?FAQ4.2).
Hallo,
oh, das ist aber sehr rudimentär.
Aber jeder hat mal so oder so ähnlich wohl angefangen.
Was du brauchst ist eigentlich nur das Formular Rechnungen.
Dort jannst du die die Firmendaten eintragen. Im 1. Unterformular dann den Mandant auswählen und die Rechnungsdaten eintragen.
Was soll eigentlich im 2. Unterformular geschehen? Einfach nur die Rechnungssumme des zuvor ausgewählten Mandanten angezeigt werden? Was ist mit dem Datum? Was ist mit Zahlungseingängen?
So ganz verstehe ich nicht was du abbilden möchtest.
Du brauchst auf jeden Fall andere Tabellen. in der Tabelle Mandant darf kein Rechnungsbetrag stehen. Dafür eine zusätzliche Tabelle tblMandantenRechnung 1:n zum Mandant.
Wenn ich heute Abend Zeit finde kann ich dir mehr helfen.
Bevor du aber weitermachst solltest du dir über folgende Dinge total im klaren sein:
1. Was genau für Zusammenhänge möchtest du Abbilden
2. Welche Objekte (Tabellen) kannst du identifizieren
3. Wie hängen diese Objekte voneinander ab
Zu erstens, schreib das Stichpunktartig in Klartext auf. Beispiel:
1. Es sollten verschiedene Firmen angelegt werden können
2. zu jeder Firma gibt es mehrere Mandanten
3. Jedem Mandant werden eigene Rechnungen ausgestellt
4. .....
Gruß Andreas
Zitat von: Beaker s.a. am Oktober 17, 2024, 16:48:02Hier fehlt allerdings noch der Bezug auf das Form im Control
Stimmt, aber das allein wird ihm bei seinem Problem nicht helfen.
Hallo MSteel,
Zitat von: MsSteele am Oktober 17, 2024, 15:57:44Alles Wissen kommt von Hilfeseiten und Videos.
Das ist immer das gleiche Problem. Man lernt Access und Datenbanken nicht wirklich auf diese Art und Weise. Entweder man besucht gezielt entsprechende Kurse, evtl. auch online, oder man gönnt sich ein paar Fachbücher, einmal für Access selber und dann noch für den Bereich "Relationale Datenbanken". Nur so kann man sich didaktisch "richtig" an das Thema herantasten und hat die Fachbücher später wieder zum Nachschlagen zur Verfügung. Kleine Hilfeseiten und Videos können immer nur einen kleinen Ausschnitt zeigen und reichen in der Regel nur für ein paar Anregungen.
Das andere ist dein Beispiel. Entweder du bleibst bei der Wahrheit und versuchst nichts zu verschleiern, oder du lässt es. Das ist eine Zumutung für die Helfer, denn Mandanten einer Firma, was soll damit gemeint sein? Mandanten kennt man i.d.R. nur als Auftraggeber von Rechtsanwälten, Unternehmensberatern und Wirtschaftsprüfern.
Hallo und guten Morgen,
vielen Dank an Euch, dass ihr euch meinem Problem annehmt, egal ob mit Rat oder Tat :)
Was brauche ich?
Es soll nur eine Informationsdatenbank sein, die anzeigt, ob innerhalb eines Mandanten (es handelt sich hier tatsächlich um Kirchen-Gemeinden) in Zusammenarbeit mit einer Baufirma der jährliche Freibetrag von 5.000 Euro überschritten wird.
Es sollen alle Eingangsrechnungen, bevor sie gezahlt werden, nur mit den Informationen Firma, Mandant, Datum, Betrag erfasst werden. Werden die 5000,00 Euro überschritten, werden diese überschritten, müssen wir % vom ReBetrag einbehalten und abführen.
Mehr ist es eigentlich nicht, dachte ich. Aber scheinbar muss ich doch noch tiefer in das Thema einsteigen.
Tatsächlich funktioniert es ja auch *lach* halt nicht perfekt.
Viele Grüße
MSteele (ist eine sie) :)
OK, so langsam wird dein Vorhaben etwas klarer.
Das hört sich nach drei Basistabellen an, Mandant/Gemeinde, Baufirma und Rechnungen. Dazu käme z.B. für eine schnellere Auswahl so etwas wie eine (Bau)projekt Angabe, mit dessen Information dann gleich für einen Rechnungserfassung autom. Mandant und Baufirma vorbelegt werden könnten. Auswertungen bezüglich der Steuer- und Freibeträge können dann per Bericht/Formular mit der Rechnungstabelle gemacht werden.
Gruß
Knobbi38
Hallo Knobbi,
ja fast, jedoch sind Bauprojekte irrelevant. Es geht nur um den Bezug Firma / Gemeinde und dass sofort sichtbar ist, wenn die 5000,00 überzogen werden.
Ich hab das in meinem Original ganz gut hinbekommen in dem ich die rot einfärbe s. Bild.
Mein Problem ist tatsächlich, dass nach der Eingabe sich die Daten nicht automatisch aktualisieren :(
Ich hab jetzt nochmal an meiner Grundstruktur "gefummelt" und hab das nun auch mit den Primärschlüsseln verstanden. (Firmennummer, Mandantennummer sind nun Primärschlüssel) aber egal wie ich die Formulare aufbaue, ich bekomme es nicht hin, dass nach der Erfassung die Daten zur Verfügung stehen.
Viele Grüße
MSteele
@andreasZitataber das allein wird ihm bei seinem Problem nicht helfen.
Sehe ich auch so, wollte nur, dass er das nicht unkommentiert abschreibt.
Deshalb auch noch der Link zu Karl.
Hallo,
Zitat(Firmennummer, Mandantennummer sind nun Primärschlüssel)
Das müsste man mal prüfen, im Regelfall ist es besser, einen Autowert als Primärschlüssel zu verwenden.
Zeige bitte mal das neue Beziehungsbild, oder lade die neue DB hier hoch.
Hallo,
für das Aktualisieren von Daten müssen zwei Voraussetzungen erfüllt sein:
1. die Daten aus dem Erfassungsformular müssen gespeichert werden
2. das Formular, welches mit den neuen Daten arbeiten soll, muss aktualisiert werden.
Dafür sucht man sich dann passende Ereignisse, die das dann automatisch erledigen, z.B. beim Wechsel des Fokus usw.
In vielen Fällen wird jedoch ein anderer Workflow gewählt, womit solche Aktualisierungen automatisch erfolgen. Dabei wird bei der Erfassung mit Komboboxen gearbeitet und das NotInList-Event ausgenutzt. Wenn z.B. eine Firma noch nicht in der Auswahl enthalten ist, wird diese in einem Popup-Formular erfaßt und anschließend mit der Erfassung fortgefahren.
Wie Klaus aber schon beschrieben hat, sind Firmen- und Mandantennummern lediglich Felder mit einem eindeutigem Index, als PK wird i.d.R. ein Autowert verwendet.
Hallo ihr Lieben,
vielen Dank für Eure Hilfe, ich habe nun den Hinweis erhalten, mir mal meine Frage bei ChatGPT zu stellen.
Hab dort schon einiges ausprobiert und das klappt ganz gut.
Wenn ich wieder nicht weiterkomme, würde ich mich hier nochmal melden. Solange würde ich das Thema schließen.
Aber vielen Dank das ihr Euch die Mühe gemacht habt.
Viele Grüße
MSteele
Hallo MSteele,
ChatGPT erfüllt dann seinen Zweck, wenn man genau weiß, was und wie man Fragen muß und das Problem fachgerecht beschreiben kann. Es kann versierten Programmierer neue Anstöße liefern, aber für Anfänger/Einsteiger ist ChatGPT eine trügerische Hilfe. Diese können oft nicht beurteilen, was ChatGPT generiert hat. In den Ergebnissen sind manchmal Fehler eingebaut, die auch für Profis nur sehr schwer zu erkennen sind und der Laie wunder sich nur noch, warum etwas nur manchmal oder nur bei bestimmten Rahmenbedingungen funktioniert. Von ChatGPT generierte Codes sollten deshalb immer als solche kenntlich gemacht werden, damit man sofort weiß, womit man es zu tun. Helfer haben i.d.R. auch wenig Interesse daran, in einem von ChatGPT erstellen Code die Fehler zu suchen und zu beheben.
Also viel Spaß damit ...
Gruß
Knobbi38