PDA

Vollständige Version anzeigen : Rechnung erstellen in Access


bigbrother25
01.04.2004, 07:13
Hallole,

ich habe eine Datenbank für ein bestimmtes Werkzeug kreiert. Diese funktioniert perfekt :D , zumindest für die bisherigen Anforderungen angemessen.
Doch jetzt kommt es dicke: Ich habe eine Tabelle tbl_werkzeugdaten. In dieser Tabelle werden teure Ersatzteile für dieses Werkzeug erfasst. Bisher ohne den Preis. Um nicht jedes Mal den Preis eingeben zu müssen, habe ich jetzt eine Tabelle tbl_preisliste geschaffen.

Das Problem: Wie bekomme ich es hin, dass, wenn ich in der tbl_werkzeugdaten einen Ja/Nein-Wert gesetzt habe oder die Anzahl von Ersatzteilen eingegeben habe, mir der entsprechende Preis in einem Extra-Formular angezeigt wird. Oder anders formuliert: Wie muss ich die entsprechende Abfrage gestalten? :)

J_Eilers
01.04.2004, 07:23
Hi,

vielleicht so etwas?

Me!Ausgabe = Me!Anzahl * DLookUp("Feld", "Tabelle", "ID = " & Me!ID)

Ansonsten wären ein paar Informationen schon nett...

bigbrother25
01.04.2004, 07:34
Ok, ich versuchs mal mit mehr Daten:

tbl_werkzeugdaten

Deckplatte getauscht|Ja/Nein
Spannhülsen getauscht Anzahl|z.B. 15

tbl_preisliste

Deckplatte|Teilenummer|2000€
Spannhülse|Teilenummer|150 €

Jetzt stehen diese Tabellen in keiner Beziehung zueinander. Irgendwie weiss ich auch nicht, wie ich sie in eine Beziehung bringen soll.

Auf jeden Fall soll im Bericht nachher drinstehen:
Deckplatte getauscht |Teilenummer| Preis
Spannhülse |Teilenummer|Preis
Gesamtpreis

J_Eilers
01.04.2004, 07:37
Also ich würde den Preis mit in die tbl_Werkzeugdaten schreiben. Die Anzahl gehört dann in eine Hilfstabelle, die die Verbindung zwischen Kunden(?) und Wekzeugen herstellt.

bigbrother25
01.04.2004, 08:21
Aber nachdem alle Formulare und Abfragen schon auf der bestehenden tbl_werkzeugdaten basieren und funktionieren, möchte ich natürlich nicht, dass ich alle entsprechenden Änderungen vornehmen muss.
Wir reden hier von ca. 30 Berichten, Abfragen und den entsprechenden Formularen. Der Aufwand wäre einfach zu groß.

Aber die Frage bleibt halt trotzdem:
Kann ich in einem Formular (fml_rechnung) ein Textfeld schaffen, das die Daten eines Datensatzes aus der Tabelle tbl_preisliste anzeigt und dieses dann zur Berechnung nutzen?

Beispiel:
TF:Deckplatte getauscht
J/N: wahr
TF: Teilenummer
TF: Preis
TF: Gesamtpreis Teil
TF: Gesamtpreis Werkzeug

Wobei dann die Gesamtpreis zu berechnen wären. Ach ja, eine tbl_kunde gibt es nicht.

stpimi
01.04.2004, 08:26
Jetzt stehen diese Tabellen in keiner Beziehung zueinander. Irgendwie weiss ich auch nicht, wie ich sie in eine Beziehung bringen soll.

Woher willst Du dann den entsprechenden Preis finden? Die Teilenummer wird ja wohl in der Preisliste stehen.....

Daher: Einzelpreis mit DomWert ermitteln und ggf. mit der Stückzahl multiplizieren. Das ganze in einem berechneten Feld der Abfrage, die dem Formular zugrunde liegt.

Oder habe ich was nicht kapiert?

Mfg, Michael

J_Eilers
01.04.2004, 08:27
Ein Workaround wäre möglich. Dazu kannst du entweder mit DLookUp oder einer eigenen Funktion den Wert aus der tbl_preisliste suchen, der einer Deckenplatte entspricht. Diesen kannst du dann in einem Textfeld darstellen und die Summe berechnen.

=DLookUp("Preis"; "tbl_preisliste"; "Teilenummer = " & Teilenummer)

@Michael Das ist ja mein Vorschlag gewesen, aber leider weiß ich nicht, ob es funktioniert oder wenn nicht, warum nicht :(

bigbrother25
01.04.2004, 08:36
Momentan steht die tbl_preisliste mit keiner anderen Tabelle in Beziehung. Die Teilenummern werden nur in der tbl_preisliste gespeichert.
Kann ich jetzt mit DLookup die Daten aus dieser Tabelle in einem Formular anzeigen lassen? Wenn die Daten im Formular entsprechend angezeigt werden, ist eine Berechnung ja kein großes Problem mehr.

J_Eilers
01.04.2004, 08:39
Sicher kannst du das, deswegen schreibe ich es ja.

Syntax: DLookUp("Gesuchtes Feld in der Tabelle"; "Tabelle"; "Kriterium")

Als Steuerelement wird aus DLookUp DomWert. Wie mein Kriterium aufbaut weißt du?

bigbrother25
01.04.2004, 08:46
Nee, bis jetzt noch nicht.
Aber ich habe ein kleinen Denkfehler festgestellt. Das ganze muss ja in einer Abfrage passieren, worauf sich dann der Bericht stützt.
Denn ein Formular kann ich ja nicht als Grundlage einer Abrage und damit als Grundlage eines Berichtes nehmen.
Also muss ich das ganze innerhalb einer Abfrage machen. Das kompliziert die Sache doch etwas, oder nicht?

J_Eilers
01.04.2004, 09:17
Nicht wirklich. Du kannst auch in Berichten ungebundene Textfelder verwenden und hier den Wert darstellen lassen. Wenn der Wert in der Abfrage schon vorhanden sein soll, musst du die Tabellen in der Abfrage in Verbindung setzen.

bigbrother25
01.04.2004, 09:40
Also muss ich die Tabellen irgendwie in Beziehung zueinander setzen. Doch eigentlich sind die Tabellen für sich eigenständig. Die tbl_preisliste ist halt nur ne Datensammlung zu den Teilen.
So bekomme ich bei der Abfragenerstellung mit dem Assi nur den Fehler angezeigt, dass die Tabellen nicht in Verbindung stehenund ich erst Beziehungen herstellen muss.
Das Problem ist, dass ich in den Werkzeugdaten nicht immer den Preis und die Teilenummer wieder eintragen möchte. Gibt es da ne Möglichkeit, dass ich eine Spalte habe, deren Wert immer gleich ist?
Dann könnte ich nämlich die Preise in die Tabelle tbl_werkzeugdaten übernehmen und würde so zwar die Tabelle etwas aufblasen, aber hätte die Daten alle in einer vorhanden Tabelle erfasst.

J_Eilers
01.04.2004, 09:45
Kannst du nicht vielleicht über die Teilenummer verknüpfen? BTW diese Tabelle muss gar nicht in der Abfrage enthalten sein, da du dir den Wert auch direkt aus der Tabelle holen kannst. Dieses ganze Workaround finde ich so wie so unglücklich. Wobei ich ja auch nicht weiß, was "alles neumachen" ungefähr bedeutet. Aber solche Überlegungen sollte man sich immer vorher machen.

bigbrother25
01.04.2004, 10:01
Wenn die Preisgeschichte von Anfang an ein Thema gewesen wäre, hätte ich die DB auch anders aufgebaut. Dann würde es die tbl_preisliste geben, die darauf basierende Abfrage und dann mehrere Kombinationsfelder in meinen Formularen.
Aber momentan habe ich 14 Formulare, 31 Berichte und 33 Abfragen, die auf 8 Tabellen (ohne die tbl_preislliste) basieren.
Die Änderungen würden mit Formatierung und allem etwas lange dauern.
Ich möchte Version 2 aber noch nicht auf den Weg bringen müssen. Momentan habe ich Version 1.2.

Die tbl_preisliste sieht ja so aus:

id|Benennung|Teilenummer|Preis

Wie soll ich dies Tabelle noch integrieren?
Ich kann euch auch nicht die db hochladen, denn mit knapp 22 MB ist sie zu groß dafür.
Ich habe mal die Beziehungen gepostet. Hier ist der Link dazu:
http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=121456
Etwas unten auf der Seite ist das Beziehungsfenster zu sehen. Sorry für die schlechte Qualität, aber MS-Proggies sind da nicht so toll und ich habe kein Screenshot-Proggi auf dem Firmenrechner. :(
Aber ihr könnt euch das ja mal angucken und vielleicht wisst ihr, wie ich diese neue Tabelle (nicht auf dem Screen) integrieren kann.

J_Eilers
01.04.2004, 10:28
Also auf dem Screen kann ich ehrlich nichts erkennen.

Nochmal: Es ist nicht zwingend erforderlich die Tabelle in die Abfrage hineinzubringen. Den Wert kannst du jederzeit auslesen lassen!

Für eine Verknüpfung könnte man vielleicht die Teilenummer oder die ID oder zur Not auch das Textfeld verwenden. Aber die logische Beziehung musst du schon selber erstellen. Woher soll ich wissen, ob du die ID der tbl_preisliste als Zahl und Sekundärschlüßel in der tbl_werkzeug verwenden kannst?