Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Daten automatisch zusammenstellen

Begonnen von DaScht, Januar 10, 2017, 14:15:38

⏪ vorheriges - nächstes ⏩

DaScht

Hallo liebe Community,

ich habe ein etwas komplexeres Problem. Ich erstelle gerade eine Datenbank die Messdaten zu verschiedenen Teilen (Welle und Gehäuse) beinhaltet. Nun möchte ich eine Welle allen Gehäusen gegenüberstellen, den Spalt zwischen beiden Teilen ausgeben lassen und das aber auch mit allen Wellen machen. Statisch (mit Hilfe einer weiteren Tabelle) habe das bereits schon geschafft, nun würde ich das ganze gerne automatisieren. Nutze ich dazu ein Formular, eine Abfrage, oder was ganz anderes? Als Info ich habe folgende Tabellen angelegt:

tblMessdatenWelle
tblMessdatenGehäuse
tblSeriennummern (Welle und Gehäuse zusammen)
tblPaarungen

VBA-Kenntnisse habe ich so gut wie keine und auch mit SQL ist es nicht soweit her. Ich hoffe, dass ihr mir dennoch weiterhelfen könnt. Vielen Dank schon mal!

MzKlMu

Hallo,
die Tabelle Seriennummern verstehe ich nicht, was heißt hier Welle und Gehäuse zusammen ?

Die Messdaten einer Welle sind ja individuell für jede Welle, also gehört die Seriennummer in die Tabelle mit den Messdaten.
Wie viele Messdaten pro Welle werden denn erfasst ?

Und theoretisch könnte es ja so sein, dass alle Wellen allen Gehäusen gegenübergestellt wird um die günstigste Paarung zu finden.
Ich glaube auch nicht, dass Du eine statische Tabelle brauchst für die Paarungen.

Erkläre das also mal genauer.
Gruß Klaus

crystal

Hallo

und willkommen im Forum!

Deine Frage ist etwas unklar.
Was willst du mit der Gegenüberstellung erreichen? Willst du zu einer Welle das Gehäuse finden, das am besten passt (kleinster Spalt)? Was soll geschehen, wenn du Messdaten neuer Wellen erfasst: ist dann eine zuvor gefundene optimale Paarung "tabu"? Soll eine einmal gefundene optimale Paarung "final" sein oder wie soll festgelegt werden, dass eine solche Paarung "final" ist, die betreffende Welle und das betreffende Gehäuse also aus dem Vorrat ungepaarter Bauteile herausgenommen werden?

Könnte man deine Frage als Aufgabe auch so formulieren:
1. finde zu einer Welle das optimale Gehäuse (kleinster Spalt) oder
2. finde zu einem Gehäuse die optimale Welle,
jeweils bezogen auf den aktuellen Bestand.

lg
crystal

Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

DaScht

Guten Morgen,

und erst mal vielen Dank für Euer Bemühen. Ich versuche mal eure Fragen der Reihe nach zu beantworten.

In der Tabelle tblSeriennummer werden die Seriennummern für Wellen und Gehäuse festgelegt (per Autowert). Diese nutze ich dann wieder in den tblMessDatenWelle, usw.
Pro Welle und Gehäuse werden einige Messdaten aufgenommen (bis zu 100). Für die Gegenüberstellung werden allerdings nur jeweils zwei Werte betrachtet (2x Wellendurchmesser + 2x Bohrungsdurchmesser im Gehäuse).
Ich möchte wie crystal bereits sagte, die beste Paarung finden = kleinster Spalt. Diese beiden Teile werden dann verbaut und stehen nicht mehr zur Verfügung. Dafür gibt es wiederum eine tblSpindel. Ich würde die Aufgabe daher mit
Zitat2. finde zu einem Gehäuse die optimale Welle,
jeweils bezogen auf den aktuellen Bestand.
beschreiben. Was für mich aber schon dem Idealzustand entspricht. Fürs erste würde es mir reichen eine automatische Gegenüberstellung aller Wellen und Gehäuse zu haben.

LG
Daniel


MzKlMu

Hallo,
die Tabelle mit den Seriennummer würde ich mal als überflüssig bezeichnen, wenn das ohnehin Autowerte sind kann der Autowert auch in den jeweiligen Tabellen erzeugt werden.
Zitatdie beste Paarung finden = kleinster Spalt.
möchte ich bezweifeln.
Der kleinste Spalt könnte auch negativ sein und dann wäre das keine mögliche Paarung. Eine Welle die gerade mal 0,001 mm kleiner ist, passt auch nicht in das Gehäuse.
Das heißt, für mögliche Paarungen muss ein Grenzbereich angegeben werden wo es gerade noch zulässig ist.

Wie ist denn die jeweilige Tabelle mit den Messwerten aufgebaut, als 100 Datensätze oder 100 Felder ?
Wenn es 2 relevante Messwerte sind, wie hängen die zusammen, es muss ja eine Abhängigkeit vorhanden sein.
Messwert1Welle zu Messwert1Gehäuse
Messwert2Welle zu Messwert2Gehäuse
und nicht
Messwert1Welle zu Messwert2Gehäuse
Messwert2Welle zu Messwert1Gehäuse

Und wie kommen die Messwerte in die Accesstabelle, durch Import oder werden diese von Hand eingetragen.

Auch die Tabelle "tblSpindel" würde ich zunächst mal für überflüssig betrachten, das lässt sich auch mit einer Abfrage ermitteln.
Gruß Klaus

DaScht

Hallo,

aufgrund der Toleranzen der Welle und des Gehäuses ist immer sichergestellt, dass das Gehäuse größer als die Spindel ist. Ein negativer Spalt ist somit - wenn man Gehäuse - Welle rechnet - nicht möglich.
Die Messwerte stehen in Spalten, somit habe ich bis zu 100 Felder pro Tabelle. Der Zusammenhang
ZitatMesswert1Welle zu Messwert1Gehäuse
Messwert2Welle zu Messwert2Gehäuse
ist richtig, allerdings möchte ich ja aber auch folgendes vergleichen

Messwert1Welle1 zu Messwert1Gehäuse1
Messwert2Welle1 zu Messwert2Gehäuse1
Messwert1Welle1 zu Messwert1Gehäuse2
Messwert2Welle1 zu Messwert2Gehäuse2 usw und auch

Messwert1Welle2 zu Messwert1Gehäuse1
Messwert2Welle2 zu Messwert2Gehäuse1
Messwert1Welle2 zu Messwert1Gehäuse2
Messwert2Welle2 zu Messwert2Gehäuse2

Bisher erhalten wir die Messdaten in Form eines Messprotokolls als PDF-Datei. Daher müssen diese von Hand in die Tabelle eingetragen werden. Das das recht umständlich ist und sehr stark fehlerbehaftet ist, weiß ich. Ob und wie die Messdaten von der Messmaschine in eine Excel-Tabelle geschrieben werden können, muss ich klären. Wenn das möglich ist, könnte man ja diese Excel-Liste in Access verknüpfen. Wobei sich dann die Frage stellt ob die Messmaschine alle Messungen in eine Tabelle schreiben kann, oder aber für jede Messung eine eigene Tabelle geschrieben wird.
Die Tabelle "tblSpindel" ist wichtig, da dort alle verbauten Teile festgehalten werden und somit nicht nur eine Auswertung über den Spalt zwischen Welle und Gehäuse gemacht werden kann.

MzKlMu

Hallo,
ZitatDie Messwerte stehen in Spalten, somit habe ich bis zu 100 Felder pro Tabelle.
Damit ist Dein Vorhaben nicht umsetzbar. Das ist Excelgestaltung und für eine Datenbank völlig ungeeignet. Die Messwerte müssen als Datensätze vorliegen, also nicht 100 Felder, sondern 100 Datensätze. In die Tabelle muss dann noch ein Feld zur Kennzeichnung der für die Paarung notwendigen 2 Messwerte, sowei ein Kennzeichen ob Welle oder Gehäuse. Dabei ist darauf zu achten, dass die Messwertpaarungen sinnvoll sind.
Weiterhin wird eine Tabelle benötigt für Wellen und Gehäuse, mit einem Autowert als Seriennummer. Die Messwerte benötigen dann einen Fremdschlüssel zu diesem Autowert (Datentyp: Longinteger).
Die Eingabe der Messwerte erfolgt in einem Hauptformular (Wellen und Gehäuse) und darin einem über die Schlüsselfelder verknüpften Unterformular zur Erfassung der Messwerte.

Nur mit einem solchen Aufbau
Gruß Klaus

DaScht

Hallo,

ich merke gerade, dass ich mich falsch ausgedrückt habe. Die Messungen werden natürlich als Datensatz erfasst. Wobei ein Datensatz viele Messwerte (Spalten) hat.
Wahrscheinlich ist mein Vorhaben eh zu umfangreich für meine Access-Kenntnisse. Aber vielen Dank schon mal für deine Unterstützung.


MzKlMu

Hallo,
ZitatWobei ein Datensatz viele Messwerte (Spalten) hat.
Du hast Dich schon richtig ausgedrückt, Du hast meine Antwort nur nicht richtig verstanden. Es sollen eben nicht viele Spalten sein, sondern viele Datensätze mit einer Spalte für die Messwerte.
Haben die Messwerte Namen oder sind das einfach Nummern ?
Wahrscheinlich wird hier auch noch eine Tabelle benötigt für die Messwertbezeichnungen.
Für jede Welle und jedes Gehäuse hast Du dann jeweils 100 Datensätze, für jeden Messwert also einen Datensatz.

Du solltest Dich unbedingt mit den Grundlagen zur Erstellung relationaler Datenbanken beschäftigen.
Gruß Klaus

crystal

Hallo Daniel,

zunachst einmal muss ich Klaus Recht geben: die Messwerte gehören mit einer Referenz auf die Bezeichnung und das Bauteil in eine extra Tabelle, etwa so

Id TeileRef MessRef Messwert
1  12345    12      15,83
2  12345    18      0,063

Dabei ist Id ein Autowert, TeileRef ein Zeiger auf die Teile-Seriennr., MessRef ein Verweis auf eine Tab. der Messwertbezeichnungen und Messwert der Messwert selbst.

Nun könnte man so formulieren:
1. Hole aus der Messwert-Tabelle alle Werte, die die Kennung 12 oder 18 haben und zu einem Bauteil des Typs Welle gehören.
2. Gruppiere nach diesen Datensätzen.
3. Hole dann aus der Messwert-Tabelle alle Werte, die die Kennung 112 oder 118 haben und zu einem Bauteil des Typs Gehäuse gehören.
4. Bilde jeweils die Differenzen 112-12 und 118-18.

Ich denke, es wäre möglich, dies in einer Abfrage unterzubringen.

Aber:
11. Die optimale Paarung wird so nicht gefunden, sondern es werden lediglich alle Paarungen gegenübergestellt.
12. Für jede Welle werden also alle möglichen Paarungen mit Gehäusen  und die Messwert-Differenzen dargestellt, etwa so:
w1 g1 0,5
w1 g1 0,005
w1 g2 0,4
w1 g2 0,006
...
w2 g1 0,8
w2 g1 0,008

13. Es fehlt ein entscheidener Schritt: wenn ich z.B. die Paarung w1-g1 als optimal benenne, müssen w1 und g1 als gepaart gekennzeichnet werden, also "geeignet für Spindel-Bau".
14. Die Abfrage kann die Messwerte ohne weiteres nur "einen pro Zeile" ausgeben; das spricht m.E. eher für eine De-Normalisierung, also dafür, die beiden relevanten Messwerte nebeneinander in einer Tabelle zu führen und die anderen 98 für Dokuzwecke in eine Messwert-Tabelle auszulagern.
15. Jetzt könnte man sich ein Formular vorstellen, das im Kopf (Hauptformular) Daten zu einer Welle darstellt und in einem Unterformular die relevanten Daten aller "noch freien" Gehäuse inkl. berechneter Differenzen (z.B. sortiert nach geringster Differenz). In diesem UFo müsste nun das optimale Gehäuse gefunden und markiert werden. Diese Markierung müsste dann zum Gehäuse und im Hauptformular zur Welle gespeichert werden ("zu dieser Welle passt am besten das Gehäuse mit der Kennung xyz").
16. Weiter geht's dann zur nächsten Welle (nächster Datensatz im Hauptformular).
17. Man könnte sich auch vorstellen, das HFo an die Spindel-Tabelle zu knüpfen, zum neuen Datensatz zu gehen und zuerst eine "noch freie" Welle auszuwählen, dann im UFo ein passendes Gehäuse. Dadurch würden die selektieren Bauteile gleich einer neuen Spindel zugeordnet werden können.

Um auf deine Eingangsfrage zurück zu kommen:
Zitatnun würde ich das ganze gerne automatisieren. Nutze ich dazu ein Formular, eine Abfrage, oder was ganz anderes?

Automatisieren kann man das wohl nur schwer, es sei denn, es lassen sich eindeutige Bedingungen für die Paarung definieren (möglich geringe Differenz, aber mindestens xxx).
Ich tendiere eher zu einem Formular, weil man dort die Möglichkeit hat, selbst auszuwählen. Alles mit einer Abfrage zu lösen, ist wohl schwer.

Vielleicht so:
select into tblSpindeln
  wellenRef,first(gehaeuseRef),
  min(messwertA-MesswertB) as Diff1,
  min(messwertC-MesswertD) as Diff2
from
  tblWellen, tblGehaeuse
where
  tblWellen.WellenID not in (select tblSpindeln.WellenRef from tblSpindeln)
and
  tblGehaeuse.GehaeuseID not in (select tblSpindeln.GehaeuseRef from tblSpindeln)
and
  Diff1 >= 0,05
and
  Diff2 >= 0,005
Order by
  Diff1, Diff2

Achtung: nicht getestet! Hier müssten mal die Profis drüber schauen, würde bei mir zu zu lange dauern...

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

DaScht

Hallo zusammen,

wahrscheinlich bin ich einfach zu doof für das Ganze. Ich habe mich etwas in relationale Datenbanken eingelesen und dachte auch eigentlich das ich es verstanden habe. Bisher hat es ja auch funktioniert wenn ich die Paarung vorgegeben habe. Ich verstehe den Sinn dieser Tabelle noch nicht ganz
Zitat
Id  TeileRef  MessRef  Messwert
1  12345    12             15,83
2  12345    18             0,063
Die müsste ich ja auch manuell erstellen, oder?! Oder kann ich das über eine Abfrage erledigen lassen? Hilft es wenn ich mal meine Datenbank hier hochlade? Vielen Dank schonmal für eure Hilfe und entschuldigt mein fürchterliches "auf dem Schlauch stehen".

Grüße

MzKlMu

Hallo,
ZitatHilft es wenn ich mal meine Datenbank hier hochlade?
Ja, aber als MDB (ich habe nur Access2003) und komprimiert (Access Dienstprogramm) und dann gezippt. Mit einigen plausiblen Spieldaten und Hinweisen welche Messwert gepaart/verglichen werden muss. werden muss.
Gruß Klaus

DaScht

#12
Hallo,

hier meine nachgebaute Datenbank. Ich kann meine leider nicht mehr nach Access2003 downgraden. Des weiteren enthält sie sensible Daten die ich leider nicht weitergeben kann.
Die nachgebaute ist allerdings genauso aufgebaut wie die originale auch. Miteinander vergleichen möchte ich die Messwerte1 und 2. Die restlichen Messdaten sollen dennoch in der Datenbank gespeichert werden. Zum einen damit alle Daten an einem Ort gespeichert werden, zum anderen könnte man dann noch irgendwelche Auswertungen damit machen...

[Edit PhilS: Anhang gelöscht]

crystal

Lieber Daniel,

bevor du eine DB hier hochlädst, bitte anonymisieren - persönliche Daten entfernen!!!
Rechte Maustaste -> Eigenschaften -> Details -> ...entfernen!

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

crystal

Hallo,

die Abfrage in deiner DB stellt Daten aus der Spindel-Tabelle dar, inkl. Daten aus abhängigen Tabellen.
Die Frage ist, wie die Daten in die Spindel-Tabelle kommen.

Ich habe inzw. etwas gespielt. Meine DB besteht aus 3 Tabellen Wellen, Gehäuse und Spindeln (jeweils 1. Buchstabe). Mit der Abfrage (Name Abfrage3)


SELECT TOP 1 W.WId, First(G.GId) AS ErsterWertvonGId, Min([gmw1]-[wmw1]) AS D1, Min([gmw2]-[wmw2]) AS D2
FROM G, W
WHERE (((W.wid) Not In (select swref from s))
AND ((G.GId) Not In (select sgref from s)))
GROUP BY W.WId
ORDER BY W.WId, Min([gmw1]-[wmw1]), Min([gmw2]-[wmw2]);


erhalte ich eine Datenzeile zu einer Welle, die noch nicht "verspindelt" wurde, deren Id also noch nicht in der Spindel-Tabelle existiert und dazu genau das Gehäuse mit den geringsten Messwert-Differenzen, das ebenso noch nicht "verspindelt" wurde.

Mit einer weiteren Abfrage4:

INSERT INTO S ( SWRef, SGRef )
SELECT Abfrage3.WId, Abfrage3.ErsterWertvonGId
FROM Abfrage3;


speichere ich die IDs dieser Zeile in die Spindel-Tabelle (könnte man natürlich auch in einem Rutsch machen...).

Funktioniert prima, aber nur jeweils für genau eine Datenzeile.
Wenn ich das "TOP 1" weglasse, erhalte ich mehrere Datenzeilen, in denen ein Gehäuse mehrfach vorkommen kann. Das Problem ist, dass die Bedingungen
...not in...
in Abfrage3 für alle Paarungen noch passt, weil sie ja noch nicht in S gespeichert wurden.

Wenn ich das "TOP 1" in Abfrage3 drin lasse und Abfrage4 immer wieder starte, klappt es, d.h. ich erhalte in S alle Paarungen, ohne dass W oder G doppelt vorkommen.

Man muss vllt. beide Abfragen zusammenfassen, werde ich mit deiner DB probieren.

Noch zwei Anmerkungen:
1. Wenn du die Tabellen nicht wie von Klaus vorgeschlagen normalisierst, verstößt du zwar gegen eine Grundregel relationaler Datenbanken, aber das Leben ist so zunächst etwas einfacher. Ich persönlich halte den Normalisierungs-Zwang für zu hart, zumal es u.U. recht schwierig werden kann, Daten aus normalisierten Tabellen "schön" nebeneinander darzustellen. Deshalb auch mein Kompromiss-Vorschlag, die Messdaten zwar normalisiert auszulagern, die je zwei Messwerte für die Paarung aber jeweils zu Welle und Gehäuse zu speichern.
2. Das PD-Format (PDF) ist eine Seitenbeschreibungs-Sprache, ähnlich postscript oder HTML. Man müsste ein Messdaten-Protokoll mit einem Editor analysieren. Vielleicht sind die einzelnen Messwerte eindeutig zu identifizieren, so dass sie mittels eines Programms ausgelesen werden können. Dann würde sich die fehlerträchtige Tipparbeit erübrigen. Vielleicht kann das Messsystem aber auch Textdateien erzeugen.

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...