🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Erstellung einer laufenden Inventurdatenbank
-
- Beiträge: 15
- Registriert: Mi 16. Jan 2013, 20:23
Re: Erstellung einer laufenden Inventurdatenbank
Verstehen kann man es noch nicht nennen, aber ich bin dran die sache zu durchsteigen.
Ich wollte grade die Suchfunktion um eine Suchoption erweitern, aber da scheine ich an die Grenzen von Base zu kommen: zum einen habe ich nur 4 möglichkeiten eine Verknüpfung anzugeben, zum anderen kann ich die Matrix welche du in der Abfrage erstellt hast und alle möglichen Abfragekonstellationen kombiniert hast (...hast du das manuell gemacht, oder ist das das Resultat aus der Definition der Verknüpfungen?) nicht mehr erweitern weil mir nach unten der platz ausgeht.
Ich wollte grade die Suchfunktion um eine Suchoption erweitern, aber da scheine ich an die Grenzen von Base zu kommen: zum einen habe ich nur 4 möglichkeiten eine Verknüpfung anzugeben, zum anderen kann ich die Matrix welche du in der Abfrage erstellt hast und alle möglichen Abfragekonstellationen kombiniert hast (...hast du das manuell gemacht, oder ist das das Resultat aus der Definition der Verknüpfungen?) nicht mehr erweitern weil mir nach unten der platz ausgeht.
Re: Erstellung einer laufenden Inventurdatenbank
Hi,
Gruß R
EDIT: Wenn Du die Abfrage einmal mit der GUI geöffnet hast, wird sie von Base quasi unleserlich erweitert, nicht machen!
Kann ich nicht sagen, man kann die verknüpften Felder auch einfach eintippen. Versuch macht kluch.phaeton616 hat geschrieben: aber da scheine ich an die Grenzen von Base zu kommen
Ich habe das SQL-Statement in der SQL-Ansicht getippt, dann sieht es nicht so schlimm aus und man kann es verstehen:phaeton616 hat geschrieben:hast du das manuell gemacht, oder ist das das Resultat aus der Definition der Verknüpfungen?
Code: Alles auswählen
SELECT "ID", "LfdNr.", "Material", "Formber.Typ", "Dichte", "L", "B", "H",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN "L" * "L" / 4 * PI( ) * "H"
ELSE 0
END ) / 1000000.00 AS "Volumen",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN "L" * "L" / 4 * PI( ) * "H"
ELSE 0
END ) * "Dichte" / 1000000000.00 AS "Gewicht"
FROM "Teileliste"
WHERE ( UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) OR :m IS NULL ) AND
( "H" >= :h OR :h IS NULL ) AND
( "B" >= :b OR :b IS NULL ) AND
( "L" >= :l OR :l IS NULL )
EDIT: Wenn Du die Abfrage einmal mit der GUI geöffnet hast, wird sie von Base quasi unleserlich erweitert, nicht machen!
Code: Alles auswählen
SELECT "ID", "LfdNr.", "Material", "Formber.Typ", "Dichte", "L", "B", "H", ( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H" WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H" WHEN "Formber.Typ" = 'Gewindestange' THEN "L" * "L" / 4 * PI( ) * "H" ELSE 0 END ) / 1000000.00 AS "Volumen", ( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H" WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H" WHEN "Formber.Typ" = 'Gewindestange' THEN "L" * "L" / 4 * PI( ) * "H" ELSE 0 END ) * "Dichte" / 1000000000.00 AS "Gewicht" FROM "Teileliste" WHERE ( "L" >= :l AND "B" >= :b AND "H" >= :h AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) OR "L" >= :l AND "B" >= :b AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :h IS NULL OR "L" >= :l AND "H" >= :h AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :b IS NULL OR "L" >= :l AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :h IS NULL AND :b IS NULL OR "B" >= :b AND "H" >= :h AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :l IS NULL OR "B" >= :b AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :h IS NULL AND :l IS NULL OR "H" >= :h AND UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :b IS NULL AND :l IS NULL OR UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) AND :h IS NULL AND :b IS NULL AND :l IS NULL OR "L" >= :l AND "B" >= :b AND "H" >= :h AND :m IS NULL OR "L" >= :l AND "B" >= :b AND :h IS NULL AND :m IS NULL OR "L" >= :l AND "H" >= :h AND :b IS NULL AND :m IS NULL OR "L" >= :l AND :h IS NULL AND :b IS NULL AND :m IS NULL OR "B" >= :b AND "H" >= :h AND :l IS NULL AND :m IS NULL OR "B" >= :b AND :h IS NULL AND :l IS NULL AND :m IS NULL OR "H" >= :h AND :b IS NULL AND :l IS NULL AND :m IS NULL OR :h IS NULL AND :b IS NULL AND :l IS NULL AND :m IS NULL )
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 15
- Registriert: Mi 16. Jan 2013, 20:23
Re: Erstellung einer laufenden Inventurdatenbank
Ahhh!
Und ich dachte schon ich muss mir einen 32 Zoll Monitor kaufen, damit ich die Volumen und Dichteberechnungsformel darstellen kann.
Das Macht Die Sache deutlich übersichtlicher! Danke nochmals!
Kann ich eigentlich in den Formeln zur berechnung auch klammern setzen? Via GUI hatte ich da probleme, meldete mir ein unerwartetes Zeichen in der Formel, oder einen Fehler in der Klammernfolge.
Sehe ich das Richtig, dass der UPPER Befehl die beziehungen zwischen den Werten herstellt?
EDIT: auch in sql beomme ich einen syntaxfehler wenn ich die Formel zur Volumenberechnung der gewindestangen anpasse
Zur erläuterung: Es wird zuerst der Außendurchmesser des Gewindes zur Volumenberechnung herangezogen, danach wird auf Grundlage der Gewindesteigung welche bei einem Gewinde nach ISO-Norm (60°-Winkeln zu den Flanken der Gewindefurche) un vorgegeben ist die Tiefe der Gewindefurche mittels pythagoras errechnet, und die Hälfte der Volumendifferenz zwischen außen und innendurchmesser vom Volumen bezogen auf den Außendurchmesser abgezogen. Ergibt, dann das tatsächliche Volumen der Gewindestange.

Und ich dachte schon ich muss mir einen 32 Zoll Monitor kaufen, damit ich die Volumen und Dichteberechnungsformel darstellen kann.

Das Macht Die Sache deutlich übersichtlicher! Danke nochmals!
Kann ich eigentlich in den Formeln zur berechnung auch klammern setzen? Via GUI hatte ich da probleme, meldete mir ein unerwartetes Zeichen in der Formel, oder einen Fehler in der Klammernfolge.
Sehe ich das Richtig, dass der UPPER Befehl die beziehungen zwischen den Werten herstellt?
EDIT: auch in sql beomme ich einen syntaxfehler wenn ich die Formel zur Volumenberechnung der gewindestangen anpasse
Code: Alles auswählen
SELECT "ID", "LfdNr.", "Werkstoffeigenschaften"."Material", "Mateial", "Formber.Typ", "Dichte", "L", "B", "H", "Werkstoffeigenschaften"."Material"
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN
CASE WHEN "L" <= 1.2 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) * "H" - PI( ) * POWER("L" / 2 - POWER(0.25,2) - POWER(0.25 / 2,2)) * "H"
WHEN "L" = 1.4 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.3,2) - POWER(0.3 / 2,2)) * "H"
WHEN "L" > 1.4 AND <= 1.8 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.35,2) - POWER(0.35 / 2,2)) * "H"
WHEN "L" = 2 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.4,2) - POWER(0.4 / 2,2)) * "H"
WHEN "L" > 2 AND <= 2.5 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.45,2) - POWER(0.45 / 2,2)) * "H"
WHEN "L" > 2.5 AND <= 3 THEN PI( ) * POWER("L",2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.5,2) - POWER(0.5 / 2,2)) * "H"
WHEN "L" = 3.5 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.6,2) - POWER(0.6 / 2,2)) * "H"
WHEN "L" = 4 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.7,2) - POWER(0.7 / 2,2)) * "H"
WHEN "L" = 5 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.8,2) - POWER(0.8 / 2,2)) * "H"
WHEN "L" = 6 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1,2) - POWER(1.2 / 2,2)) * "H"
WHEN "L" = 8 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1.25,2) - POWER(1.25 / 2,2)) * "H"
WHEN "L" = 10 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1.5,2) - POWER(1.5 / 2,2)) * "H"
WHEN "L" = 12 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1.75,2) - POWER(1.75 / 2,2)) * "H"
WHEN "L" = 14 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2,2) - POWER(2 / 2,2)) * "H"
WHEN "L" = 16 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2,2) - POWER(2 / 2,2)) * "H"
WHEN "L" = 18 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2.5,2) - POWER(2.5 / 2,2)) * "H"
WHEN "L" = 20 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2.5,2) - POWER(2.5 / 2,2)) * "H"
WHEN "L" = 22 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2.5,2) - POWER(2.5 / 2,2)) * "H"
WHEN "L" = 24 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(3,2) - POWER(3 / 2,2)) * "H"
WHEN "L" = 27 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(3,2) - POWER(3 / 2,2)) * "H"
WHEN "L" = 30 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(3.5,2) - POWER(3.5 / 2,2)) * "H"
WHEN "L" = 36 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(4,2) - POWER(4 / 2,2)) * "H"
WHEN "L" = 42 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(4.5,2) - POWER(4.5 / 2,2)) * "H"
WHEN "L" = 48 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(5,2) - POWER(5 / 2,2)) * "H"
WHEN "L" = 56 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(5.5,2) - POWER(5.5 / 2,2)) * "H"
WHEN "L" = 64 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(6,2) - POWER(6 / 2,2)) * "H"
ELSE 0
END
WHEN "Fromber.Typ" = 'Rohr' THEN POWER("L" / 2,2) ^ 2 * "H" - POWER("B" /2,2) * "H"
WHEN "Formber.Typ" = '3-Eck' THEN "L" * "B" * "H" / 2
WHEN "Formber.Typ" = '4-Kant-Rohr-symm' THEN POWER("L",2) * "H" - POWER("B",2) * "H"
WHEN "Formber.Typ" = '6-Kant' THEN POWER("L" / SQRT(3),2) * 3 / 2 * SQRT(3)
ELSE 0
END ) / 1000000.00 AS "Volumen",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN
CASE WHEN "L" <= 1.2 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) * "H" - PI( ) * POWER("L" / 2 - POWER(0.25,2) - POWER(0.25 / 2,2)) * "H"
WHEN "L" = 1.4 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.3,2) - POWER(0.3 / 2,2)) * "H"
WHEN "L" > 1.4 AND <= 1.8 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.35,2) - POWER(0.35 / 2,2)) * "H"
WHEN "L" = 2 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.4,2) - POWER(0.4 / 2,2)) * "H"
WHEN "L" > 2 AND <= 2.5 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.45,2) - POWER(0.45 / 2,2)) * "H"
WHEN "L" > 2.5 AND <= 3 THEN PI( ) * POWER("L",2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.5,2) - POWER(0.5 / 2,2)) * "H"
WHEN "L" = 3.5 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.6,2) - POWER(0.6 / 2,2)) * "H"
WHEN "L" = 4 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.7,2) - POWER(0.7 / 2,2)) * "H"
WHEN "L" = 5 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(0.8,2) - POWER(0.8 / 2,2)) * "H"
WHEN "L" = 6 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1,2) - POWER(1.2 / 2,2)) * "H"
WHEN "L" = 8 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1.25,2) - POWER(1.25 / 2,2)) * "H"
WHEN "L" = 10 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1.5,2) - POWER(1.5 / 2,2)) * "H"
WHEN "L" = 12 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(1.75,2) - POWER(1.75 / 2,2)) * "H"
WHEN "L" = 14 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2,2) - POWER(2 / 2,2)) * "H"
WHEN "L" = 16 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2,2) - POWER(2 / 2,2)) * "H"
WHEN "L" = 18 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2.5,2) - POWER(2.5 / 2,2)) * "H"
WHEN "L" = 20 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2.5,2) - POWER(2.5 / 2,2)) * "H"
WHEN "L" = 22 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(2.5,2) - POWER(2.5 / 2,2)) * "H"
WHEN "L" = 24 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(3,2) - POWER(3 / 2,2)) * "H"
WHEN "L" = 27 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(3,2) - POWER(3 / 2,2)) * "H"
WHEN "L" = 30 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(3.5,2) - POWER(3.5 / 2,2)) * "H"
WHEN "L" = 36 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(4,2) - POWER(4 / 2,2)) * "H"
WHEN "L" = 42 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(4.5,2) - POWER(4.5 / 2,2)) * "H"
WHEN "L" = 48 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(5,2) - POWER(5 / 2,2)) * "H"
WHEN "L" = 56 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(5.5,2) - POWER(5.5 / 2,2)) * "H"
WHEN "L" = 64 THEN PI( ) * POWER("L" / 2,2) * "H" + PI( ) * POWER("L" / 2,2) - PI( ) * POWER("L" / 2 - POWER(6,2) - POWER(6 / 2,2)) * "H"
ELSE 0
END
WHEN "Fromber.Typ" = 'Rohr' THEN ("L" / 2) ^ 2 * "H" - ("B" / 2) * "H"
WHEN "Formber.Typ" = '3-Eck' THEN "L" * "B" * "H" / 2
WHEN "Formber.Typ" = '4-Kant-Rohr-symm' THEN POWER("L",2) * "H" - POWER("B",2) * "H"
WHEN "Formber.Typ" = '6-Kant' THEN POWER("L" / SQRT(3),2) * 3 / 2 * SQRT(3)
ELSE 0
END ) * "Dichte" / 1000000000.00 AS "Gewicht"
FROM "Teileliste"
WHERE ( UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) OR :m IS NULL ) AND
( "H" >= :h OR :h IS NULL ) AND
( "B" >= :b OR :b IS NULL ) AND
( "L" >= :l OR :l IS NULL )
Re: Erstellung einer laufenden Inventurdatenbank
Hallo,
nachdem ich mir wirklich das Hirn ausgequetscht habe, bin ich auf folgende Formel zu Berechnung eines Ersatzdurchmessers kommen:
EDIT: Die gestern hier eingestellte Formel hatte einen Fehler, richtig ist: Er wird aus Steigung P und Aussendurchmesser D errechnet und bildet den gewichtsreduzierenden Einfluß des Gewindes, wie du schon geschrieben hast, ab, hier die Herleitung:
V = A * H mit A = PI * D²/4
wobei hier der Ersatzdurchmesser für D eingetragen wird.
Soweit so gut. Jetzt zur Umsetzung in der Datenbank.
Hier nochmal die gesamte korrigierte Abfrage. Habe noch ein IFNULL eingefügt, weil sonst die Gewindestangen nicht angezeigt wurden, da B hier null ist.
Und zum Schluß: macht aus Manfred MANFRED während aus USA usa macht.
Gruß R
nachdem ich mir wirklich das Hirn ausgequetscht habe, bin ich auf folgende Formel zu Berechnung eines Ersatzdurchmessers kommen:
EDIT: Die gestern hier eingestellte Formel hatte einen Fehler, richtig ist: Er wird aus Steigung P und Aussendurchmesser D errechnet und bildet den gewichtsreduzierenden Einfluß des Gewindes, wie du schon geschrieben hast, ab, hier die Herleitung:
D.h. wenn man ihn berechnet kann man mit der normalen Formel zur Bestimmung des Volumens eines Kreiszylinders weiterrechnen.phaeton616 hat geschrieben:... die Hälfte der Volumendifferenz zwischen außen und innendurchmesser vom Volumen bezogen auf den Außendurchmesser abgezogen.
V = A * H mit A = PI * D²/4
wobei hier der Ersatzdurchmesser für D eingetragen wird.
Soweit so gut. Jetzt zur Umsetzung in der Datenbank.
- Ich habe eine weitere Tabelle "Gewindedefinition" mit den Spalten D und P angelegt.
- Dort steht für jeden möglichen Durchmesser eine Zeile mit Durchmesser und Steigung.
- In meiner Ursprünglichen Abfrage stand zweimal:
zu Berechnung des Volumens.
Code: Alles auswählen
WHEN "Formber.Typ" = 'Gewindestange' THEN "L" * "L" / 4 * PI( ) * "H"
- Ersetze ich diese nun durch (korrigiert, Wurzel und Quardrat heben sich auf)
Code: Alles auswählen
"L" * "L"
was der quadrierten oben angegebenen Formel entspricht, werden sowohl das Volumen als auch das Gewicht richtig berechnet.Code: Alles auswählen
( SELECT POWER( "D", 2 ) - SQRT( 3.0 ) * "D" * "P" + 3.0/2.0 * POWER( "P", 2 ) FROM "Gewindedefinition" WHERE "D" = "L" )
Hier nochmal die gesamte korrigierte Abfrage. Habe noch ein IFNULL eingefügt, weil sonst die Gewindestangen nicht angezeigt wurden, da B hier null ist.
Code: Alles auswählen
SELECT "ID", "LfdNr.", "Material", "Formber.Typ", "Dichte", "L", ifnull( "B", 0 ) AS "B", "H",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN ( SELECT POWER( "D", 2 ) - SQRT( 3.0 ) * "D" * "P" + 3.0/2.0 * POWER( "P", 2 ) FROM "Gewindedefinition" WHERE "D" = "L" ) / 4 * PI( ) * "H"
ELSE 0
END ) / 1000000.00 AS "Volumen",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN ( SELECT POWER( "D", 2 ) - SQRT( 3.0 ) * "D" * "P" + 3.0/2.0 * POWER( "P", 2 ) FROM "Gewindedefinition" WHERE "D" = "L" ) / 4 * PI( ) * "H"
ELSE 0
END ) * "Dichte" / 1000000000.00 AS "Gewicht"
FROM "Teileliste"
WHERE
( UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) OR :m IS NULL ) AND
( "H" >= :h OR :h IS NULL ) AND
( "B" >= :b OR :b IS NULL ) AND
( "L" >= :l OR :l IS NULL )
Code: Alles auswählen
UPPER
Code: Alles auswählen
LOWER
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 15
- Registriert: Mi 16. Jan 2013, 20:23
Re: Erstellung einer laufenden Inventurdatenbank
Vielen Dank! Jetzt versteh ich auch wie man Werte aus anderen Tabellen abgleich mit FROM WHERE.
Ich zerbrech mir grad wieder den Kopf: Kaum füge ich was eigenes dazu hab ich schon wieder nen fehler, das frustriert mich total!
Dabei versteh ich nicht was an der Ergänzung um die Zeilen:
falsch sein soll!?
Im Ganzen sieht das nun so aus:
Fakt ist aber, ich bekomme den Fehler beim Aufruf der Suche: "column not found: Formber.Typ in statement <obige abfrage>"
Das is doch total widersinnig: ich ändere doch nur Formeln und füge cases für die Spalte Formber.Typ hinzu!? An der spalte Formber.Typ habe ich doch garnichts geändert!
Ich zerbrech mir grad wieder den Kopf: Kaum füge ich was eigenes dazu hab ich schon wieder nen fehler, das frustriert mich total!
Dabei versteh ich nicht was an der Ergänzung um die Zeilen:
Code: Alles auswählen
WHEN "Fromber.Typ" = 'Rohr' THEN PI( ) * POWER( "L" / 2.0 , 2) * "H" - PI( ) * POWER( "B" / 2.0 , 2) * "H"
WHEN "Formber.Typ" = '3-Eck' THEN "L" * "B" * "H" / 2
WHEN "Formber.Typ" = '4-Kant-Rohr-symm' THEN POWER( "L" , 2 ) * "H" - POWER( "B" , 2 ) * "H"
WHEN "Formber.Typ" = '6-Kant' THEN POWER( "L" / SQRT( 3.0 ) , 2 ) * 3 / 2 * SQRT( 3.0 )
Im Ganzen sieht das nun so aus:
Code: Alles auswählen
SELECT "ID", "LfdNr.", "Material", "Formber.Typ", "Dichte", "L", ifnull( "B", 0 ) AS "B", "H",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN ( SELECT POWER( "D", 2 ) - SQRT( 3.0 ) * "D" * "P" + 3.0/2.0 * POWER( "P", 2 ) FROM "ISO-Normgewinde" WHERE "D" = "L" ) / 4 * PI( ) * "H"
WHEN "Fromber.Typ" = 'Rohr' THEN PI( ) * POWER( "L" / 2.0 , 2) * "H" - PI( ) * POWER( "B" / 2.0 , 2) * "H"
WHEN "Formber.Typ" = '3-Eck' THEN "L" * "B" * "H" / 2
WHEN "Formber.Typ" = '4-Kant-Rohr-symm' THEN POWER( "L" , 2 ) * "H" - POWER( "B" , 2 ) * "H"
WHEN "Formber.Typ" = '6-Kant' THEN POWER( "L" / SQRT( 3.0 ), 2 ) * 3 / 2 * SQRT( 3.0 )
ELSE 0
END ) / 1000000.00 AS "Volumen",
( CASE WHEN "Formber.Typ" = 'Block' THEN "L" * "B" * "H"
WHEN "Formber.Typ" = 'Rund' THEN "L" * "L" / 4 * PI( ) * "H"
WHEN "Formber.Typ" = 'Gewindestange' THEN ( SELECT POWER( "D", 2 ) - SQRT( 3.0 ) * "D" * "P" + 3.0/2.0 * POWER( "P", 2 ) FROM "ISO-Normgewinde" WHERE "D" = "L" ) / 4 * PI( ) * "H"
WHEN "Fromber.Typ" = 'Rohr' THEN PI( ) * POWER( "L" / 2.0 , 2) * "H" - PI( ) * POWER( "B" / 2.0 , 2) * "H"
WHEN "Formber.Typ" = '3-Eck' THEN "L" * "B" * "H" / 2
WHEN "Formber.Typ" = '4-Kant-Rohr-symm' THEN POWER( "L" , 2 ) * "H" - POWER( "B" , 2 ) * "H"
WHEN "Formber.Typ" = '6-Kant' THEN POWER( "L" / SQRT( 3.0 ) , 2 ) * 3 / 2 * SQRT( 3.0 )
ELSE 0
END ) * "Dichte" / 1000000000.00 AS "Gewicht"
FROM "Teileliste"
WHERE
( UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) OR :m IS NULL ) AND
( "H" >= :h OR :h IS NULL ) AND
( "B" >= :b OR :b IS NULL ) AND
( "L" >= :l OR :l IS NULL )
Das is doch total widersinnig: ich ändere doch nur Formeln und füge cases für die Spalte Formber.Typ hinzu!? An der spalte Formber.Typ habe ich doch garnichts geändert!
Re: Erstellung einer laufenden Inventurdatenbank
Tja, aufpassen, gucken ...
WHEN "Fromber.Typ" = 'Rohr'
... und ganz wichtig, Fehlermeldungen richtig lesen, den da steht's ja schon ganz zu Anfang drin: Gruß R
WHEN "Fromber.Typ" = 'Rohr'
... und ganz wichtig, Fehlermeldungen richtig lesen, den da steht's ja schon ganz zu Anfang drin: Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
-
- Beiträge: 15
- Registriert: Mi 16. Jan 2013, 20:23
Re: Erstellung einer laufenden Inventurdatenbank
"glaznliestung" von mir...
wenigstens hat mich meine dummheit ein wochenende gekostet, dann merk ichs mir vielleicht
EDIT: Das funktioniert jetzganz gut soweit mit der Suche nach Formen.
Allerdings bekomme ich als Abfrageergebnis nun jeden Datensatz auf den die Suchbedingungen zutreffen ganz oft in den Ergebnissen.
Auf ersterem aufbauend ist folgendes: Wenn ich mittels SELECT einen Datensatz aus einer anderen Tabelle auswähle auf den eine Bedingung zutrifft, und diesem ein Dropdown um Suchformular zuweise, dann müsste mir
die Möglichkeit geben z.B. alle Werte anzuzeigen die Teil dieser Materialkategorie sind. In der Praxis bekomme ich allerdings einen syntax error, der mich darauf hinweis, dass die Funktion unerwartet endet und entweder ein BETWEEN, IN oder SQL_TOKEN_LIKE erwartet wird. Ersetze ich das "=" durch ein LIKE bekomme ich allerdings den gelichen Fehler.
Ich denke mir dass dafür eigentlich die SELECT GROUP funktion geeigneter wäre, aber wie definiere ich eine Gruppe im SQL?


wenigstens hat mich meine dummheit ein wochenende gekostet, dann merk ichs mir vielleicht

EDIT: Das funktioniert jetzganz gut soweit mit der Suche nach Formen.
Allerdings bekomme ich als Abfrageergebnis nun jeden Datensatz auf den die Suchbedingungen zutreffen ganz oft in den Ergebnissen.
Auf ersterem aufbauend ist folgendes: Wenn ich mittels SELECT einen Datensatz aus einer anderen Tabelle auswähle auf den eine Bedingung zutrifft, und diesem ein Dropdown um Suchformular zuweise, dann müsste mir
Code: Alles auswählen
...
FROM "Teileliste", "z.B.Werkstoffeigenschaften"
WHERE ( UPPER ( "Formber.Typ") LIKE ( '%' || UPPER ( :fbt ) || '%') OR :fbt IS NULL) AND
( UPPER ( SELECT "z.B.Materialkategorie" FROM "Tabelle wo hinterlegt" WHERE "Teileliste"."Material" = "z.B.Werkstoffeigenschaften"."Material") LIKE ( '%' || UPPER (:kat) || '%' ) OR :kat IS NULL) AND
( UPPER ( "Material" ) LIKE ( '%' || UPPER ( :m ) || '%' ) OR :m IS NULL ) AND
( "H" >= :h OR :h IS NULL ) AND
( "B" >= :b OR :b IS NULL ) AND
( "L" >= :l OR :l IS NULL )
Ich denke mir dass dafür eigentlich die SELECT GROUP funktion geeigneter wäre, aber wie definiere ich eine Gruppe im SQL?
Re: Erstellung einer laufenden Inventurdatenbank
Hallo phaeton616,
Keiner ist doppelt vertreten, das sehe ich an den ID's.
Achte drauf, die Suchbedingung für die Abmessungen heißt >=. Liegt es daran?
Anbei meine parallelgeführte DB in der du dies nachvollziehen kannst.
Gruß R
Ist bei mir nicht der Fall. Ich bekomme nur die Datensätze angezeigt, auf die die Suchbedingungen zutreffen.phaeton616 hat geschrieben:Allerdings bekomme ich als Abfrageergebnis nun jeden Datensatz auf den die Suchbedingungen zutreffen ganz oft in den Ergebnissen.
Keiner ist doppelt vertreten, das sehe ich an den ID's.
Achte drauf, die Suchbedingung für die Abmessungen heißt >=. Liegt es daran?
Anbei meine parallelgeführte DB in der du dies nachvollziehen kannst.
Gruß R
- Dateianhänge
-
- Fertige Liste.zip
- (243.09 KiB) 180-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.