Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mad am Mai 25, 2020, 20:02:01

Titel: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 25, 2020, 20:02:01
Hallo Zusammen,

ich habe nachfolgende Tabellen-Struktur. (Bild: Beziehungen.png)
Vorab: Ich habe ein HF mit diversen Unterformularen die im UFPruefungen immer in Abhängigkeit des Feldes ,,frm_rptNr" und der ,,InventarNr" ein entsprechendes/anderes Formular (insgesamt 21 verschiedene Formulare/Tabellen) anzeigt. Dort werden dann für die jeweilige InventarNr die entsprechenden Prüfungen bewertet. Mindestens einmal pro Jahr eine Prüfung pro InventarNr.
Welches Formular eingeblendet wird, wird über folgenden Code gesteuert: (nicht von mir)
'Diese Funktion ermittelt, welches Formular (Unterformular) eingeblendet wird, wenn eine Prüfpflicht besteht.
'In der Tabelle tblTypen muss im Feld frm_rptNr die entsprechende Nummer vorhanden sein.
'Ist dort keine Nummer eingetragen, wird automatisch das leere Formular frm_leer verwendet.

'Die frm_rptNr ist 3-stellig (als Vorschlag von mir, kann auch geändert werden):
'   1xx für Kategorie Fahrzeuge
'   2xx für Kategorie Geräte
'   3xx für Kategorie Material

'Die Formulare müssen die übereinstimmende Nummer tragen, mit einem vorangestellten "frm",
'also z.B. frm102

'Besteht eine Prüfpflicht (Haken gesetzt), wird dem Steuerelement UFPruefungen im Formular UFPruefpflicht
'das entsprechende Formular als SourceObject zugewiesen.

'Besteht keine Prüfpflicht, oder ist keine frm_rptNr vorhanden, wird das leere Formular
'frm_leer als SourceObject zugewiesen.

'Diese Funktion wird aufgerufen bei den Ereignissen
'       Pruefpflicht_AfterUpdate
'       Form_Current

'Die frm_rptNr kann in ähnlicher Weise auch für den Druck eines Berichtes bzw. Unterberichtes
'verwendet werden.

'29.01.2006/Köbi


Private Function Prueffrm()
'On Error GoTo Errorhandler
On Error Resume Next

Dim frmNr As Long

'********geändert 05.08.2006*************
    'Datenherkunft des Formular frmArtikel ergänzt mit einem INNER JOIN auf frm_rptNr der Tabelle Typen
    'Neues Feld frm_rptNr im Formular erstellt (kann unsichtbar gestellt werden wenn nötig)
    'Variable frmNr bezieht sich nun nicht mehr auf das Feld im übergeordneten Formular (Me.Parent),
    'sondern direkt auf das Feld in diesem Formular.

'frmNr = Me.Parent.frm_rptNr
frmNr = Me.frm_rptNr

'**************************************************************

    If Me.InventarNr <> 0 Then
   
        If frmNr > 0 Then
            Me.UFPruefpflicht.Form.UFPruefungen.SourceObject = "frm" & frmNr
        Else
            Me.UFPruefpflicht.Form.UFPruefungen.SourceObject = "frm_leer"
        End If
       
    Else
   
        Me.UFPruefpflicht.Form.UFPruefungen.SourceObject = "frm_leer"

    End If

Exit_Errorhandler:
    Exit Function

Errorhandler:
    MsgBox "Fehler Nr. " & Err.Number & vbCrLf & Err.Description
    Resume Exit_Errorhandler

End Function


Nun würde ich gerne eine Abfrage erstellen die folgendes kann:
In Abhängigkeit von tblTypen.frm_rptNr, tblArtikel.InventarNr = tblPruefpflicht.InventNr möchte ich nur die entsprechende Tabelle heranziehen und dann das Feld/Zeilen das mit ...Text endet angezeigt bekommen. Jede der oben genannten 21 verschiedenen Formulare/Tabellen hat ein Feld das mit ...Text endet. Aber alle haben eine andere Struktur. Die Dateinamen dieser 21 Tabellen haben die Namensstruktur das sie mit tbl beginnen und dann eine fünfstellige Zahl folgt (z.B. tbl14811).
Diese Abfrage soll dann die Basis für einen Bericht sein den ich aus dem HF per Button öffne und mir somit alle ...Textzeilen für die InventarNr angezeigt werden.

Das ganze ist etwas schwierig zu erklären, ich hoffe es ist trotzdem einigermasen Verständlich.
Ist das überhaupt machbar?

Gruss
mad

Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: markusxy am Mai 26, 2020, 17:50:37
Also ich sehe da kein Problem, außer dich natürlich  ;D

Wenn du eine Abfrage für einen Report brauchst, dann sollten immer alle Felder in der Abfrage gleich heißen.

Du solltest also für alles was dynamisch ist, einen Alias verwenden -> Tabelle und Feldnamen.
Du musst dann immer per VBA den SQL Text dynamisch zusammenstellen und speichern.
Voraussetzung wäre der sichere Umgang mit Objekten und die Beherrschung der Grundlagen in VBA.

Erstelle also erstmal eine Abfrage und den Report dazu.
Der Rest ist dann nicht so dramatisch, falls du die Basics beherrscht.
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 26, 2020, 18:19:12
Hallo,
verstehe ich das so richtig, daß die Feldnamen in meinen 21 Tabellen immer die selben Bezeichnungen haben sollten? Gilt das nur für meine gesuchten Felder ...Text, oder für alle Felder? Oder nur in der Abfrage: so wie z.B.: Info: [...Text]?

Gruß
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: markusxy am Mai 26, 2020, 20:02:28
Zitat von: mad am Mai 26, 2020, 18:19:12
verstehe ich das so richtig, daß die Feldnamen in meinen 21 Tabellen immer die selben Bezeichnungen haben sollten?

Die Namen in den Tabellen spielen keine Rolle.
Deine Frage lässt vermuten, dass du noch nicht weißt, was ein Alias ist.

Der Philipp hat da einen wunderbaren Artikel geschrieben.
Lies es dir durch, damit du das verstehst.
https://codekabinett.com/rdumps.php?Lang=1&targetDoc=sql-as-alias

Erstelle also eine Abfrage und verwende entsprechende Aliase und poste das Ergebnis.
Dann können wir uns um den dynamischen Teil kümmern.


Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 27, 2020, 16:17:04
Hallo,
habe mich den Aliasen angenommen, muß gestehen das ich das öfter durchlesen mußte und immerwieder ausprobiert habe. Ich glaube ich habe es bis dahin in den Grundzügen etwas verstanden.

Ich habe mal meine Test1_Abfrage-DB mit angehängt. Habe zum besseren Verständnis die anzahl der Tabellen reduziert.
Ich habe eine erste/einfachere Abfrage "abf_test1" erstellt. -->es wird was angezeigt.
Anschliessend habe ich noch die beiden anderen Tabellen (tbl14923 u. tbl50014) versucht mit in die "abf_test2" zu integrieren. Die Abfrage bringt zwar keinen Fehler, aber angezeigt wird auch nichts. Jetzt kommt vermutlich der Dynamische Teil?

SQL-Code "abf_test1"
SELECT p1.InventNr, t1.FLText
FROM tblPruefpflicht AS p1 INNER JOIN tbl14406 AS t1 ON p1.PruefID = t1.PruefID;


SQL-Code "abf_test2"
SELECT p1.InventNr, t1.FLText, t2.GurtText, t3.ExLampeText
FROM ((tblPruefpflicht AS p1 INNER JOIN tbl50014 AS t3 ON p1.PruefID = t3.PruefID) INNER JOIN tbl14923 AS t2 ON p1.PruefID = t2.PruefID) INNER JOIN tbl14406 AS t1 ON p1.PruefID = t1.PruefID;


Ich hoffe ich bin hierhin richtig unterwegs!

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Mai 27, 2020, 17:37:34
Hallo,

ich denke, dass das Thema "Aliase" hier nicht relevant ist.

M. E. stimmt da etwas Grundsätzliches nicht am Tabellenaufbau/-konzept.


Welche Bedeutung haben denn die Ziffern/Zahlen im Namen der n-Tabellen  (tbl14406, tbl14923,... ) ?

Es handelt sich m. M. nach um Prüflings-Kategorien, bzw. irgendwelche Module, die geprüft werden sollen.  Damit wäre dies eine Eigenschaft eines Objektes und darf (sollte) nicht als eigenständige Tabelle dargestellt werden.

Die Abfrage "abf_test2" zeigt nur die DS in den N-Tabellen an, bei denen die PrüfID in allen n-Tabellen mit dem Primärschlüssel aus tblPrüfpflicht übereinstimmt. Wenn die Verknüpfungsart zu "Alle DS aus P1 und nur die aus ...." geändert wird, werden DS angezeigt. Wie sinnvoll (für weitere Verwendung) das ist, kann ich nicht sagen.



Auch der Name "tblPrüfpflicht" ist mir suspekt. Offensichtlich handelt es sich hier um eine Sammlung von "Inventar"-Gegenständen, somit wäre "tblPrüflinge" passender.
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 27, 2020, 18:36:57
Hallo,

ZitatWelche Bedeutung haben denn die Ziffern/Zahlen im Namen der n-Tabellen  (tbl14406, tbl14923,... ) ?
Die Ziffer im Tabellennamen geben eine DIN, Prüfvorschrift wieder. So habe ich einen besseren überblickt.

ZitatDamit wäre dies eine Eigenschaft eines Objektes und darf (sollte) nicht als eigenständige Tabelle dargestellt werden.
Da es sich um verschiedene Prüfungen in Art und Anzahl je DIN/Prüfvorschrift handelt, möchte ich das gerne beibehalten.

ZitatAuch der Name "tblPrüfpflicht" ist mir suspekt. Offensichtlich handelt es sich hier um eine Sammlung von "Inventar"-Gegenständen, somit wäre "tblPrüflinge" passender.
Die "tblPruefpflicht" sammelt die Daten aus der Vorgelagerten "tblArtikel" und der nachgelagerten "tbl14406, tbl14923,...". Desweiteren werden hier nur Daten gesammelt die Prüfpflichtig sind und div. weitere Infos.

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Mai 27, 2020, 19:14:58
Hallo,


ich halte das Konzept für falsch und will jetzt nicht weiter auf die Datenzusammenhänge eingehen, wenn " möchte ich das gerne beibehalten." weiterhin gelten soll.

Zitat
So habe ich einen besseren Überblick.

Wozu brauchst Du einen Überblick?  Die einzelnen Tabelle gehören in eine Tabelle "tblNormen"  (bzw. tblPrüfvorschriften) die an eine Detailtabelle gebunden ist, die die einzelnen Prüfschritte und die daran angebundenen Prüfmethoden und Messergebnisse definiert. Diese "Grunddaten" könnten dann bei Durchführung einer Prüfung in eine Verlaufstabelle kopiert (als Struktur übernommen) und die sich ergebenden Messergebnisse erfasst werden.

Was machst Du in Deinem Konzept, wenn eine neue Messmethode oder Norm hinzukommt? Änderst/erweiterst Du jedes Mal das FE und das BE?

Das Ganze ist  etwas komplexer und nicht mit einer 1:n- Beziehung an mehrere verschiedene Tabelle abgetan.
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 27, 2020, 19:32:30
Ja das mit einer neuen Norm ist ein Problem mit einigem Aufwand.
Gibt es ein Musterbespiel für sowas, wo ich mir das mal ansehen könnte?
Ich bin ja lernwillig.

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 27, 2020, 19:51:24
Könnte so einen Datenstruktur funktionieren?

tblInventar  1-----n   inventarNr/Norm  n-----1  tblNormen  1-----n Norm/Pruefung  n------1 tblPrüfungen


Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: markusxy am Mai 28, 2020, 08:45:26
Zitat von: mad am Mai 27, 2020, 19:32:30
Ja das mit einer neuen Norm ist ein Problem mit einigem Aufwand.
Gibt es ein Musterbespiel für sowas, wo ich mir das mal ansehen könnte?

Es gibt kein Beispiel für jeden Anlassfall.
Es gibt Grundlagen die man kennen sollte und auf denen ein Datenmodell basiert.
Das Problem dabei: Es gibt die Theorie und dann die Realität.
Datenmodelle sollen die Realität abbilden, und die tatsächlichen Arbeitsabläufe berücksichtigen.

Kennst du die Grundlagen der Datennormalisierung?
Hast du überhaupt welche Grundlagen studiert - sprich verstehst du sie und kannst du sie anwenden?
Das wäre nun mal die Grundvoraussetzung für ein produktives Arbeiten.

Wenn nein, dann solltest du erstmal die Grundlagen lernen.
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 28, 2020, 14:31:23
Hallo,

ZitatWenn nein, dann solltest du erstmal die Grundlagen lernen.

Ich bin bestrebt soviel wie möglich in/über Access zu lernen. Habe auch schon einige Anregungen umgesetzt. Allerdings mache ich das nicht Beruflich sondern rein in meiner Freizeit für unsere Feuerwehr. Die DB wird auch nur Ehrenamtlich genutzt und nicht kommerziell. Ich werde nie der Access-Profi werden. Drum benötige auch die Hilfe des Forums.

Also ein Abfrageergebnis zu meiner aktuellen Struktur habe ich nun gefunden (mit Alias), dies ist erstmal ausreichend. Sh. Code. Das Thema Alias ist echt Interessant.
SELECT p1.InventNr, t1.FLText, t2.GurtText, t3.ExLampeText
FROM ((tblPruefpflicht AS p1 LEFT JOIN tbl50014 AS t3 ON p1.PruefID = t3.PruefID) LEFT JOIN tbl14923 AS t2 ON p1.PruefID = t2.PruefID) LEFT JOIN tbl14406 AS t1 ON p1.PruefID = t1.PruefID
WHERE (((p1.InventNr)=[Formulare]![TM2_Personal]![InventNr]) AND ((t1.FLText) Is Not Null)) OR (((p1.InventNr)=[Formulare]![TM2_Personal]![InventNr]) AND ((t2.GurtText) Is Not Null)) OR (((p1.InventNr)=[Formulare]![TM2_Personal]![InventNr]) AND ((t3.ExLampeText) Is Not Null));

Aber ich würde auch gerne die neue Anregung von DF6GL aufgreifen.
Derzeit habe ich nachfolgende Datenstruktur (aktuell nur eine Test-DB im Anhang), siehe Beziehungen.
Es gibt eine Tabelle ,,tblArtikel" und eine ,,tblNormen". Eine ,,InventarNr" kann nur eine Norm haben. Dies wird in der ,,tbl_reg_InvNorm" mit einer 1:1-Beziehung zusammengefahren.
Weiter gibt es eine ,,tblPruefungen" die in der ,,tbl_reg_NormPruef" mit den Normen zusammengefahren wird. Ein Norm kann mehrere Pruefungen (1:n) haben.
Ich hoffe dieser Ansatz ist erstmal richtig.
Nun soll aber eine InventarNr (un-/regelmäßig) einer Prüfung unterzogen werden. Dies soll in der ,,tblPruefen" registriert werden. Im prinzip möchte ich das in einem HF mit UFs wie im Bild ,,HF_UFs.jpg" dargestellt umsetzen.
Im UF ,,Pruefungen" sollen nur die Pruefungen aus der ,,tblPruefungen" angezeigt werden die über die ,,tbl_reg_NormPruef" der ,,InventarNr" zugeordnet sind. Leider weis ich nicht wo die ,,tblPruefen" eingehängt werden soll und ob ich noch eine zusätzlich TAB benötige? (in der"tblPruefen" fehlen dann natürlich noch die entsprechenden Felder für Beziehungen).
Irgenwie bräuchte ich noch Felder in denen ich die Pruefungen ,,abhaken" oder ähnliches kann, wenn die Pruefung i.O. ist. Da habe ich auch noch keine Idee wie ich das umsetzen soll.

Hier wäre wieder euer Fachwissen gefragt.

PS.: Die Kombifelder in den Tabellen werde ich später wieder auflösen und über die Formulare umsetzen. Sind jetzt nur zu Testzwecken.

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Mai 28, 2020, 15:18:41
Hallo,

vergiss erst mal Formulare und Abfragen und konzentriere Dich nur auf das Beziehungsfenster. Dort werden alle Tabellen sichtbar hinzugefügt und die Beziehungen definiert. 

Erst wenn die Tabellen und Beziehungen sinnvoll und durchgängig erscheinen und man den Ablauf logisch nachvollziehen kann, kann man sich um Formulare kümmern.

1:1-Beziehungen sind in den meisten Fällen überflüssig, bzw. falsch. Die Felder können in einer Tabelle zusammengefasst werden.


Im Anhang ein Bild der Tabellen und -beziehungen, wie ich sie mir im Grundsatz vorstellen kann. Die tblArtikel ist sicherlich weiter normalisierbar. Zudem sollten Felder mit eindeutigen Index versehen werden, die keine doppelten Werte aufweisen dürfen, z. B. "InventarNr", falls eine bestimmte Inventarnummer einem bestimmten Artikel zugeordnet ist.




Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 28, 2020, 19:01:46
Fragen an DF6GL,

zum besseren Verständnis für mich:
In der "tblNormPruef" weise ich die Prüftexte "NP_Text" den jeweiligen Normen "NP_NormID" zu?
Was ich jetzt noch nicht so ganz verstehe wie einer "ArtikelID" über die "NormID" die verschiedenen "NPID" (NP_Texte) zuordne?
Was verstehst Du unter einem "NP_Sollwert", eine Wert wie 40N und unter "Pruef_Istwert" dann den erreichten Wert z.B. 30N? Könnte das auch ein Ja/Nein-Feld sein?
Was verstehst unter "NP_PrufAufbau? - z.B. eine Prüfablaufbeschreibung?

Ich hoffe das macht jetzt nicht zuviel Umstände, aber ich muß es erst richtig verstehen bevor ich eventuell weiter mache.

Zitatvergiss erst mal Formulare und Abfragen ...
Ich brauche das um es mir besser Vorstellen zu können, ist leichter für mich.

Gruss
mad

Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Mai 29, 2020, 07:57:42
Hallo,

die Texte aus tblNormPrüf  werden in tblPrüfungen  (zugeordnet). Dort ist der Text erforderlich, nicht beim Artikel. Hier wird nur die Norm angegeben, die für den Artikel Anwendung findet. (Und lt. Deiner Vorgabe gibt es nur eine Norm pro Artikel)

ZitatWas verstehst Du unter einem "NP_Sollwert"

Jede Norm hat doch bei den einzelnen Vorgaben irgendwelche Grenzwerte, bzw. Vergleichswerte, an denen sich das Prüfergebnis messen lassen muss. Das ist der Sollwert, der Istwert  das Messergebnis selber.  Das Ergebnis einer Prüfung kann natürlich auch eine Ja/Nein-Angabe sein, wenn die Messwerte selber irrelevant sind ( Was ich aber so nicht gutheißen möchte) . Die Ja/Nein-Entscheidung ohne harte Messwerte ist eine subjektive Entscheidung, die allenfalls bei Sichtprüfungen akzeptabel ist .

Mach mal ein paar Beispiele zu diesen Normen und den Prüfungen, damit man sich die Normen-Anwendungen vorstellen kann  (Maschinenrichtlinie, Störfestigkeit, EMV-Verträglichkeit , etc.).




Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 29, 2020, 08:45:49
Hallo,

im Anhang (zip) ein paar Beispiele wie die Prüfkarten bei uns in der Feuerwehr aussehen.
Zu 99% handelt es sich bei "uns" immer um Sitzprüfung (Ja/Nein). Nur bei Schläuchen macht eine Soll-/Istfeld sinn.
Was ich aber immer brauche ist ein Datumsfeld für "Zur Reparatur gebracht" und eins für "Von Reparatur zurück". Dann brauche ich ein Textfeld um freien Text für jede Prüfung eingeben zu können. Auch ein Feld um Anhänge (für TÜV-Bericht o.ä.) abzulegen wäre nicht schlecht. Diese vier Felder sollten jeder Norm zuordenbar sein.

Mehr brauchen wir nicht.

Ich hoffe es wird etwas verständlicher.


Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Mai 29, 2020, 11:31:18
Hallo,

naja, da kann man ja nicht von Normen-Prüfung sprechen.  Das sind wie vorher schon angedeutet, reine Inspektions-Maßnahmen mit einer mehr oder weniger subjektiven Bewertung.


In diesem Fall kann das Sollwert-Feld entfallen und das Istwert-Feld in PrüfOk als Ja/Nein-Feld umbenannt werden.


Wahrscheinlich kann auch Tabelle tblNormen entfallen und die Norm_Nr in tblNormPrüf  eingebaut werden.

Mit angepassten Tabellenamen sieht das dann so aus wie im Bild im Anhang.

Die Anhänge gehören nicht zu einer Prüfvorschrift, sondern zu einer Prüfung (tblPrüfungen).

ZitatWas ich aber immer brauche ist ein Datumsfeld für "Zur Reparatur gebracht" und eins für "Von Reparatur zurück".

Dafür brauchst Du eine Verlaufstabelle, in der die Datumsangaben abgelegt werden und die n:1 mit tblPrüfungen verbunden ist. (Nicht im Vorschlag enthalten)


Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Mai 29, 2020, 17:31:03
Danke schon mal,
ich schau mir das alles an und melde mich wieder.
Wird allerdings etwas dauern.


Danke
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 01, 2020, 20:00:09
Hallo,

habe mich mal dran versucht, bin aber nicht wirklich zurechtgekommen.

So habe ich mit zusätzlichen Tabellen gearbeitet, und zwar um den Normen diverse Pruefschritte zuordnen zu können. Das ist nötig, da es einen Prüfschritt wie ,,Ölstand i.O. oder Zündkerzen i.O." in mehreren Normen geben kann. Dann habe ich die neue ,,tblReg_N_NP" mit der ,,tblPruefungen" in Beziehung gesetzt. Zusätzlich habe ich auch die ,,tblNormen" mit der ,,tblArtikel" in Beziehung gesetzt, denn einem Artikel soll eine ,,IDNorm" zugewiesen werden können, wenn es Prüfungen zu diesem Artikel geben muß.

Wie gesagt, um das ganze für mich besser verständlich zu machen, habe ich mir mal ein paar Formulare angelegt, zum testen.

Mein momentanes Problem versteckt sich im ,,frmArtikel" und dessen UF.
Wenn ich auf einen DS gehe z.B: DS-5 (InventarNr. 2.07.081.0001) werden mir im UF (,,frmPrueftexte222) die zugewiesenen Prüfschritte angezeigt. Wenn ich allerdings nun eine neue Prüfung im ,,frmPruefungen22" – ,,tblPruefungen anlegen möchte kommt die Fehlermeldung aus dem Anhang. Es müssten hier z.B. beim neu anlegen einer Prüfung auch die beiden Pruefschritte in der ,,tblReg_N_NP" kopiert werden. Das selbe müßte auch passieren wenn ich eine weitere Pruefung zu einer InventarNR anlege. Denn die Ergebnisse der Prüfschritte könne ja unterschiedlich ausfallen.

Wahrscheinlich bin ich mal wieder auf dem Holzweg, aber vielleicht hätte jemand ein Tip oder Idee.

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 02, 2020, 08:33:21
Hallo,

habe doch letzthin erklärt, dass Formulare zu diesem Zeitpunkt unbrauchbar sind...

Auch wenn Du meinst, es Dir nur mit Formularen vorstellen zu können, klappt das nicht, wie man sieht.... Da musst Du Dich umorientieren und in Tabellenbeziehungen denken. Formulare spiegeln die Datenzusammenhänge wider, die vorher definiert wurden, nicht umgekehrt.


Außerdem sollten wir bei gleichbleibender und definierter Benennung der Objekte bleiben. Wenn Du "Normen" sagst, bedeutet das die Tabelle "tblPrüfvorschriften", wenn wir bei der vorgeschlagenen Tabellenkonstruktion bleiben und die weiter ausbauen. Oder wir benennen "tblPrüfvorschriften" in "tblNormen" um.  Jedenfalls nur eines von beiden.

Bleiben wir bei meinem Vorschlag, ansonsten drehst Du Dich im Kreise und ich habe keine Lust, die Rotation mit zu machen...
Zitat
So habe ich mit zusätzlichen Tabellen gearbeitet, und zwar um den Normen diverse Pruefschritte zuordnen zu können.
Das gibt es doch schon...

ZitatDas ist nötig, da es einen Prüfschritt wie ,,Ölstand i.O. oder Zündkerzen i.O." in mehreren Normen geben kann.



--> neue Tabelle "tblPrüfschritte" , die alle möglichen Prüfschritte enthält und mit "tblPVPrüfschritte" in 1:n-Beziehung steht.

btw: "Ölstand i.O. oder "  sind keine Prüfschritte, das sind Prüfergebnisse, die in "tblPrüfDetails" zu stehen kommen. Prüfschritte wären:  "Ölstand prüfen"   und "Zündkerzen auf elektrische und mechanische Fehler testen"


ZitatZusätzlich habe ich auch die ,,tblNormen" mit der ,,tblArtikel" in Beziehung gesetzt

Das ist überflüssig, weil in "tblPrüfungen"  ein Prüfling (Artikel)  über "tblPVPrüfschritte" mit der entsprechenden Prüfvorschrift (Norm) in Beziehung steht. Allenfalls kann diese Info dafür herangezogen werden, einen "Satz" Prüfungen ("Prüfplan") in "tblPrüfungen" zu generieren.


Weiterhin:  in "tblPrüfdetails" fehlt ein Datumsfeld, wenn diese Tabelle eine Art Historie (Prüfung fehlerhaft--> Reparatur--> Erneute Prüfung ) darstellen soll.



Zeige einen Screenshot des Beziehungsfensters.... 



PS:
Sorry, habe den Anhang nicht gesehen.


Wie hängen jetzt die Prüfschritte mit den Normen zusammen?  Eine Norm  definiert doch (alle dazugehörenden) Prüfschritte oder sind die Normen unabhängig von Prüfschritten? Ich würde die "tblPrüfvorschriften" beibehalten und eine "Norm"  einer "Prüfvorschrift" gleichsetzen.

Das Feld "Reg_N_NP_iO" ist überflüssig/falsch, weil wie oben gesagt, das ein Ergebnis beinhaltet und in "tblPrüfdetails" vorhanden ist.

Anbei modifizierte DB
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 02, 2020, 14:04:55
Hallo,

ich würde gerne auf den Stand den Du heute morgen eingeastellt hast weitermachen. Entschuldigung das ich mich da manchmal etwas verselbstständige.

Zum Thema Prüfvorschriften ("tblNormen"):
ZitatWie hängen jetzt die Prüfschritte mit den Normen zusammen?  Eine Norm  definiert doch (alle dazugehörenden) Prüfschritte oder sind die Normen unabhängig von Prüfschritten?

Jede Norm "tblNormen" hat eine unterschiedliche Anzahl an Pruefschritten/-texte  "tblPVPruefschritte", wobei sich der ein oder andere Pruefschritt bei mehrere Normen wiederfinden kann. z.B. "Ölstand i.O. kann es bei der Norm für Fahrzeuge aber auch bei einer Motorsäge, Stromerzeger, etc. wiederfinden.

was ich damit meine:
siehe Bild im Anhang.
z.B. könnte ich "Zündkerze..(8, ) u. Ölstand..(9)" auch der "Feuerlöschpumpe...(4) und dem Tragbaren Stromerzeuger..(5)" zuordnen. Selbes gilt für "Schweißnähte i.O...(13) das könnte ich allen z.B. allen drei ..leitern (6, 7, 8,) zuordnen.
Dafür hatte ich eigentlich die "tblReg_N_NP" gedacht gehabt, um der Norm die jeweiligen Prüfschritte zuzuordnen. Im wesentlichen sind die Pruefschritte auf den früheren Prüfkarten, sh. Anhang, als Fragen zu sehen (Sichtprüfungen),
in den wenigsten Fällen müssen wir Meßergenisse ermitteln, dazu sind wir als Feuerwehren garnicht eingerichtet, daß übernehmen in solchen aufwendigen Prüfungen dann bei Bedarf Fachwerkstätten. Wenn mal ein Ölstand zu gering sein sollte dann wird nachgefüllt und die Prüfung als i.O. abgehackt. Die nachgefüllte Menge müssen wir nicht erfassen, könnten wir ab jetzt in der DB wenn wir möchten! Wir Prüfen maximal bei Leitern die Durchbigung in Millimetern, ansonsten sind es alles Sitzprüfungen. Aber auch hier, wenn die Durchbiegung im Soll ist, ist die Prüfung i.O., wenn sie n.i.O. wäre, müsste die Leiter sofort ausgemustert werden.

Was sich mir noch nicht ganz erschließt, wie sich die jeweiligen Prüfschritte der jeweiligen "InventarNr" zuordnen und diese dann bei der tblPruefung als i.O./n.i.O. (Ja/nein) markiert werden. Ist dafür die "tblPruefDetails" zusändig? Wie gesagt ich tu mich da schwer nur in Tabellen und Beziehungen zu denken.

Ich würde mir wünschen das ich weiter Unterstützung bekommen könnte.

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 02, 2020, 14:55:57
Hallo,

alles gut...  :)

Mir ist nicht klar, nach was Ihr prüft...

Prüft Ihr ein Gerät nach einer Norm, die bestimmte Prüfschritte hat und dann nur diese Prüfschritte oder kommen zusätzlich zu einem Prüfvorgang andere Prüfschritte dazu, die von woanders (nicht von dieser bestimmten Norm)  stammen  ?

Mein anfänglicher Gedanke war, dass ein Gerät nach einer bestimmten Prüfvorschrift ("tblPrüfvorschriften", nicht "Norm") geprüft wird, die alle Prüfschritte für einen  Prüfvorgang auflistet, ob nun aus einer Norm stammend oder die z. B. von Euch selber definiert wurde.



Die zu einem bestimmten Prüfvorgang an einem bestimmten Gerät nötigen Prüfschritte können entweder manuell (in "tblPrüfungen") erfasst  oder mittels Insert-Abfrage (Kriterium "PVID") in einer Button-Klick-Ereignisprozedur eingefügt werden. 

Die Ergebnisse werden manuell in "tblPrüfdetails" eingepflegt. Dort ist auch eine wie vorher angesprochene Reparatur-Historie darstellbar. (Wobei ich hier nicht die Bedeutung von "PrD_von" und "PrD_bis" erkenne. Vielleicht soll das ja den Zeitraum der Reparatur darstellen.)

Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 02, 2020, 15:45:30
Hallo,

ich denke wir reden immer an den Begrifflichkeiten aneinander vorbei. Ob Norm oder Prüfvorschift spielt für mich keine Rolle, ist das selbe. Denn unsere Themen die geprüft werden sollen kommen zum einen aus DIN-Normen aber auch aus Vorschriften der DGUV (Deutsche gesetzliche Unfallversicherung).

Eine "InventarNr" aus "tblArtikel" (betrifft nicht alle InventarNummer, manche Artikel müssen nicht geprüft werden) wird nach einer "IDNorm" aus "tblNormen" geprüft. Eine "IDNorm" hat natürlich verschieden viele "PVID" die geprüft werden müssen, meistens Sichtprüfungen (Text ist meistens als Frage aufgebaut) und mit i.O. oder n.i.O. zu beantworten. Welche "PVID" welcher "IDNorm" zugeordnet ist, soll/kann wie in Deinem Beziehungen dargestellt in der "tblPruefschritte" erfaßt werden.
Beim erfassen einer Erst- od. Wiederholprüfung unter "tblPruefungen" müssen die Pruefschritte aus "tblPruefschritte" dubliziert oder nur angezeigt werden? Aber wie hier die Pruefschritte und die Ergebnis der "tblPruefDetails" zusammen finden, verstehe ich noch nicht.

Zitat(Wobei ich hier nicht die Bedeutung von "PrD_von" und "PrD_bis" erkenne. Vielleicht soll das ja den Zeitraum der Reparatur darstellen.)
PrD_von = am "Datum" zur Reparatur gebracht
PrD_bis = am "Datum" von der Reparatur zurück

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 02, 2020, 17:32:51
Hallo,

doch, die Benamsung spielt schon eine Rolle, unter anderem, damit wir nicht aneinander vorbei reden.

Anbei nochmal ein erweiterter Entwurf. Die Reparaturhistorie ist eine weitere andere Baustelle, die bleibt erst mal unberücksichtigt.

Es gibt Artikel, die jeweils nach einer bestimmten Prüfvorschrift geprüft werden sollen. (PV zum Artikel zugeordnet)

Eine PV enthält die einzelnen Prüfschritte, die teilweise aus "Tests" bestehen können oder auch nicht. Ein "Test" ist ein einzelner  Prüfvorgang aus einer Norm.

Wenn eine Prüfung durchgeführt werden soll, so sind nach tblPrüfungen die Artikel-ID und alle zur Prüfvorschrift zugeordneten Prüfschritte zu übertragen (z. B. Insert-Abfrage).  Die Ergebnisse der Prüfungen werden in tblPruefdetails erfasst, desgleichen dazugehörenden Dateien als "Anhänge".


Wie gesagt, Historie für Reparaturvorgänge ist noch nicht vorhanden.

Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 02, 2020, 19:17:06
Jetzt bin ich ganz abgehängt. Ich verstehe die Zusammenhänge jetzt gar nicht mehr.
Warum jetzt noch Tests?
Es gibt doch die tblNormen und die tblPruefvorschriften, ich dachte das diese in der tblPruefungen zusammengeführt werden. Ich dachte bisher das die "neuen "Tests" bisher die tblPruefungen sind!

Wenn ich Dich richtig verstehe dann ist ein "Test" für Dich z.B. "Ölstand kontrolieren". Ich verstehe da drunter eine Prüfung, Du scheinbar was anderes. Wenn aber "Ölstand kontrollieren" bei mehreren Normen vorkommt, z.B. bei der Norm für Fahrzeuge oder der Motorsäge oder bei einem Motorboot, dann funktioniert das doch mit dieser Beziehungskonstellation so gar nicht, oder?

Was verstehst Du unter Norm, Tests, Pruefvorschriften und Pruefschritte?

Ganz ehrlich weis ich nicht wo mich das hinführen soll?  Entweder denke ich zu einfach, oder Du zu kompliziert. Ich glaube wenn ich es auch mal verstehe, das ich es nicht in Abfragen u. Formularen umsetzen kann. Ich würde es gerne besser machen, aber soll halt nicht sein!

Hier mal mein aktuelles Gefühl: Weis nicht wie wir weiter machen wollen? Obs mit mir überhaupt Sinn mach? Ob das Thema für mich nicht zu kompliziert ist? Wie gesagt für mich hängt da jetzt auch kein beruflicher Erfolg davon ab.

Historie (erster Eintrag):
Wie gesagt, heute sieht meine DB dazu so aus (Bild: aktuelles_Form), was aber eben den Nachteil hat das ich bei einer neuen Norm (weil wir eventuell neue Geräte bekommen haben) eine neue Tabelle anlegen muß und neue Formulare. Viel Aufwand. Weiter kann ich keine einzelne InvetarNr mit den entsprechenden Prüfungen auswerten. Dann muß ich halt damit leben!


Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 02, 2020, 19:45:00
Hallo,

warum willst Du aufgeben?

Das ist alles nicht so kompliziert, wie es Dir vorkommt.

Unter Tests verstehe ich jetzt alle(!) überhaupt möglichen (!) Prüfschritte , die insgesamt vorkommen können. (bei Dir "Prüfungen") (ein besserer Name an dieser Stelle ist mir jetzt nicht eingefallen, weil "tblPrüfschritte" schon vergeben ist ).

Weil Du anfangs gesagt hast, dass z. B. "Ölstand kontrollieren" öfters mit und ohne Norm vorkommt, muss das eben aufgeschlüsselt werden und es braucht eine Zusammenfassung (tblPrüfvorschriften) , damit man den spezifischen Prüfschritte-Block auch benennen kann.

Eine Prüfvorschrift ist ein "Dokument" , in dem alle notwendigen Prüfungen (Prüfschritte) für einen oder mehrere  Artikel aufgelistet sind. Dies ist als "Vorlage" oder Prüfplan zu verstehen. Du hast also ein Gerät und willst es prüfen. Zu diesem Gerät ist eine Prüfvorschrift (mit den zugehörigen Prüfschritten) zugeordnet, die Dir eben sagt, welche Prüfungen durchzuführen sind. Von diesem Dokument machst Du eine Kopie als Arbeitsunterlage (..> tblPrüfungen) , führst die Prüfungen durch und füllst es aus (PRD_OK und weitere Daten.)

Das ist alles.

Sicher kannst Du es einfacher machen, aber dann gehen manche Anforderungen über den Jordan, sprich, sind nicht auswertbar.

Und: Ich denke nicht zu kompliziert. Ich denke so, wie solche Arbeitsabläufe normalerweise ablaufen mit Berücksichtigung, was Du zur Datenkonstellation beigetragen hast. (Dabei  spreche ich aus Erfahrung. Ich habe jahrzehntelang Wareneingangsprüfungen, Fertigungsprüfungen, Endkontrollen CE-Konformitätsprüfungen etc. gemanaged).  ;)



Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 02, 2020, 20:38:05
Hallo,

wirklich aufgeben will ich ja nicht, ich verliere aber immer mehr die Zusammenhänge und den Glauben an mich selbst..

ZitatWeil Du anfangs gesagt hast, dass z. B. "Ölstand kontrollieren" öfters mit und ohne Norm vorkommt
So ist das nicht gemeint, ein Test wie "Ölstand kontrollieren" muß immer einer "Norm" angehören, allerdings hat nicht jede "InventarNr" eine "Norm" zugeordnet und muß somit nicht auf einezelne Tests geprüft werden, z.B. ein Brecheisen.

tblNormen und tblTests bin ich noch bei Dir. Aber warum ich tblPruefvorschriften und tblPruefschritte benötige, daß verstehe ich nicht. Warum kann ich die tblPruefvorschriften nicht weglassen und die tblNormen und tblTests in tblPrüfschritte zusammenfahren und PSID aus tblPruefschritte nicht mit Art_PVID aus tblArtikel in Beziehung setzen.

Gruss
mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 02, 2020, 21:36:47
Hallo,

das kannst Du schon machen..  Ob es nachher tatsächlich funktioniert, wird sich herausstellen.  Baue mal die Tabellen so zusammen, wie Du es denkst und lad die DB anschließend hoch.
Dann "durchdenken" wir die Sache   ;)

Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 02, 2020, 21:54:53
Hallo,

siehe DB im Anhang, so hätte ich mir das gedacht.

Wo ich immer noch total hänge, wie und in welcher Tabelle bekommen die "ID_PSID"s die hoffentlich für die Pruefung der "InventarNr" zugeordnet sind, die markierung iO/niO?
Wahrscheinlich denke ich schon wieder zu weit!

Gruss
mad

Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 03, 2020, 12:17:38
Hallo,

in Tabelle "tblPruefdetails"  Feld "PrD_ok".

Man kann nie zu weit denken.   Man kann sich höchstens verirren..  ;)

Ich habe noch ein paar weitere Anmerkungen, die wir aber besprechen sollten .

Schreib mir mal eine Mail an de ef sechs ge el  ät  ge em ix punkt de e


Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: mad am Juni 03, 2020, 12:53:15
Habe ich geschrieben, ist hoffentlich angekommen.

mad
Titel: Re: mehrere Tabellen mit * ansprechen
Beitrag von: DF6GL am Juni 03, 2020, 13:02:40
Hallo,
nein, nicht angekommen..

Adresse von hinten:   ed.xmg   tä  lg6fd