Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: accessverzweifler am November 11, 2010, 14:03:33

Titel: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: accessverzweifler am November 11, 2010, 14:03:33
Hallo

ich habe folgendes Problem:
Ich habe ein Datenbank mit folgendem Aufbau;
Typ   Breite     Höhe   "PreisProfil 1"   "PreisProfil 2"
101          500             600             120                            140
101          500             700             130                            150 

Ich möchte nun in einem Formular die Werte Breite und Höhe eingeben und dann den entsprechenden PreisProfil 1   und PreisProfil2   erhalten.

Ferner soll die Eingabe immer aufgerundet werde, d.h  wenn als Höhe 620 eingegen wird soll der Preis aus dem Datensatz mit der Höhe 700 genommen werden.
Kann man das ganze ohne VBa Lösen damit es später einmal auch in einer Web Datenbank läuft  ?

Vielen Dank für eure HIlfe vorab.


accessverzweifler
Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: DF6GL am November 11, 2010, 14:18:25
Hallo,


Deine Forderung ist nicht oder sehr schwierig umzusetzen, weil die Tabelle keine Bereichsangaben (in einem Datensatz) für Breite und(!) Höhe enthält.


Die zweite Frage ist genausowenig beantwortbar, weil das stark
a) vom DB-Konzept (das hier an der Normalisierung und dem Aufbau krankt)
b) stark von der WEB-Datenbank abhängig ist, die mindestens einen ganz anderen SQl-Dialekt haben wird.

Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: Jonny am November 11, 2010, 14:35:48
Hallo,
das Runden bekommt man rechnerisch hin wenn man mit int arbeitet:
Ergebnis = Wenn([ausdr1]-(Int([ausdr1]/100))*100<>0;(Int([ausdr1]/100)+1)*100;[ausdr1])
ausdr1 ist deine Eingabe.

Danach könntest du zuerst eine Abfrage mit der Selektion auf Breitemachen und
eine zweite (die sich auf die erste bezieht) mit der selektio auf Höhe.

Die Abfragen habe ich nicht getestet müsstest du mal testen.

Ohne VBA ist das allerdings ein Behelf und keine vernüftige Lösung.

Zum Webauftritt siehe Franz.

Johann
Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: MzKlMu am November 11, 2010, 18:13:49
Hallo,
der Aufbau der Preistabelle ist schon mal falsch. Franz hat es schon angedeutet.

Typ        Breite          Höhe   "ProfilNr"    "Preis"
101          500             600         1             120                           
101          500             600         2             140
101          500             700         1             130
101          500             700         2             150   

Irgendwie kommt6 mir das bekannt vor, war das nicht schon mal ein Thema in einem anderen Forum vor langer Zeit?
Da wurde die Preisliste auch schon angemeckert.                         

Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: accessverzweifler am November 11, 2010, 18:48:21
Ich habe die Datenbak vereinfacht und habe erst einmal nur ein Profil

also  typ, breite ,höhe,  preis

das Formular soll als Eingabe breite und höhe bekommen   und den Preis dann ausgeben.
in Exel habe ich die Funktion hinbekommen.

ich habe im Prinzip nichts gegen eine VBA Lösung,  ich habe nur gelesen dass man diese vermeiden soll wenn das
ganze mal als web Datenbank genutzt werden soll.

Kann man das ggf auch mit einem Makro lösen  ?

Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: MzKlMu am November 11, 2010, 19:31:11
Hallo,
ich sehe eigentlich keine Möglichkeit ohne VBA.

Anbei mal ein schnelles Beispiel.



[Anhang gelöscht durch Administrator]
Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: accessverzweifler am November 13, 2010, 18:06:14
Danke fuer das Beispiel,

ich habe meine Tabellen mal um das Beispiel rum gebaut.

Ich habe eine Tabelle (Kundendaten) in die der Kunde nun die Daten Breite und Hoehe, sowie das gewuenschtesFensterprofil  eingibt.
Die D Lookup Funktion ermittelt mir nun im Formular den richtigen Preis.
Die Felder im Formular (breite und hoehe, sowie Profil) habe ich direkt aus der Kundedatentabelle genommen, sodass dort auch die eingegeben Daten gespeichert werden.
Wie bekomme ich es nun hin, dass auch der ermittelte Preis der ja aus einer anderen tabelle kommt in der Tabelle Kundendaten gespeichert wird?

Danke fuer eure Hilfe vorab

Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: MzKlMu am November 13, 2010, 19:08:48
Hallo,
im Grunde hast Du bereits ein fehlerfaftes Datenmodell.
In die Kundentabelle gehört sonst nicht als die Daten zum Kunden, keine Breite, keine Höhe, kein Profil und kein Preis.
Du brauchst noch mindestens 2 weitere Tabellen.

Tabelle1: Kundendaten
Tabelle2: Auftrag
Tabelle3: AuftragsPositionen.

In die 3. Tabelle kommen die Maße, das Profil und der Preis.

Die Auftragstabelle ist notwendig um auch weitere Aufträge eines Kunden speichern zu können.

Zusätzlich noch die Preisliste.
Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: accessverzweifler am November 13, 2010, 19:38:11
Hallo

ich habe die Tabelle nur falsch bennant.
Sie enthaelt nur die technischen Bestelldaten.
also Breite, Hoehe, Positionsnummer.
den Preis suche ich wie gesagt in dem Formular aus einer Preisliste.
Da sich die Preisliste auch mal aendern kann, moechte ich den Preis zum Zeitpunkt der
Bestellung speichern.
Titel: Re: Preis eines Artikels in Abhängikeit von Länge und Breite aus Datenbank auslesen
Beitrag von: MzKlMu am November 13, 2010, 19:48:34
Hallo,
dann lege im Formular ein Feld an für den Preis. Das Feld muss in der Tabelle vorhanden sein und das Feld im Formular an das Tabellenfeld gebunden.
Wenn Du mit DLookup den Preis ermittelt hast, wiest Du eine Zeile weiter den Preis zu.

Me!Preisfeld = ErmittelterPreis

Oder gleich so:
Me!Preisfeld = DLookup(.....)