Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Porsche Bauteildatenbank - ein paar Fragen
zurück: Adressen aufteilen in Kunden und Lieferanten? Wie am besten? weiter: Negative Abfrage Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
kazzig
Im Profil kannst Du frei den Rang ändern


Verfasst am:
15. Dez 2011, 12:47
Rufname:

Porsche Bauteildatenbank - ein paar Fragen - Porsche Bauteildatenbank - ein paar Fragen

Nach oben
       Version: Office XP (2002)

Zu allererst mal einen schönen guten Morgen und der Dank an dieses tolle Forum, wo ich ausnahmslos ALLES bis jetzt über Access gelernt habe.

Ich baue zur Zeit eine Bauteildatenbank für Porsche auf, wo die gesamte Abteilung Bauteile für unterschiedliche Fahrzeuge eintragen und zudem mit einem Formular bestimmte Einträge filtern kann.

Die Aufgabenstellung:

Es soll eine Datenbank aufgebaut werden, in der Bauteile bezogen auf die Fahrzeuge eingetragen und gesucht werden können. In dieser Datenbank kommen folgende Inhalte vor: Projekt, Derivat, Motor, Getriebe, Bremsen, Fahrwerk, Räder, usw.
Der Anwender dieser Datenbank soll beim Öffnen der Datenbank eine tabellarische Ansicht aller Einträge bekommen und kann entsprechende Einträge mit Filtern anpassen. Zudem soll die Möglichkeit offen gehalten werden, neue Datensätze / Bauteile in die Datenbank einzugeben.

Die Idee:

[/img]

Der aktuelle Stand:

Die Grundlage bildet das folgende Thema: Filtern HF für UFO.
Bis jetzt habe ich folgende Tabellen



Für den Anfang ist die Tabelle tblProjekte mit tblDerivate mit 1:n verknüpft.
Außerdem ist tblMotor mit tblDerivate mit 1:n verknüpft.
Es wurde eine Abfrage erstellt, die die Felder "Projekt", "Derivat" und "Motor" enthält.
Auf Basis dieser Abfrage wurde ein UFO (Endlosformular) erstellt und die oberen Felder eingefügt, wie auf dem Bild bei der Idee oben. Im Hauptformular kommen nun die Kombinationsfelder, die das UFO filtern. Bis jetzt sind nur "Projekte" und "Motor" vorhanden und eine Schaltfläche "Alle", die den Filter löscht. Klappt soweit!

Mein Problem ist nur, dass ich nicht weiß, ob die Tabellenkonstellation so richtig ist.
Ich habe für quasi alles eine eigene Tabelle erstellt und komme nun mit den Verknüpfungen durcheinander.
Es soll am Ende in einer Zeile stehen, welches Bauteil zu welchem Fahrzeug gehört und wann und wie es geprüft wurde. Beispiel:

Projekt = 911, Derivat = Carrera S, Motor = 3,8l, Getriebe = PDK, Fahrwerk = Performance, Versuch = 80.000km, Versuch-Start= 24.12.2012, Versuch-Ende = 04.03.2012

Ich versuche immer wieder in ein Denkmuster zu verfallen, dass ALLE genannten Angaben von oben ja unbedingt in EINER Tabelle sein müssten, aber das stimmt glaube ich nicht. Aber wie soll ich denn die Felder oben in einen Datensatz bringen, wenn alles in unterschiedlichen Tabellen vorliegt?

Das nächste Problem wäre die Anlage eines neuen Datensatzes über die "Neu" Schaltfläche, aber darum kümmere ich mich dann, wenn das Strukturproblem beseitigt ist.

Anhang: Der aktuelle Code

Code:
Option Compare Database

Private Sub Alle_Click()
On Error GoTo Err_Fehler
' Alles auf Null setzen und Filter aus
' SQL Abfrage für KW und Trainer ohne Kriterien starten

Me!kombiProjekt.RowSource = "SELECT tblProjekte.idProjekt, tblProjekte.Projekt " & _
                          "FROM tblProjekte " & _
                          "GROUP BY tblProjekte.idProjekt, tblProjekte.Projekt"
                         
Me!kombiMotor.RowSource = "SELECT tblMotor.idMotor, tblMotor.Motor " & _
                          "FROM tblMotor " & _
                          "GROUP BY tblMotor.idMotor, tblMotor.Motor"
                         
    'Me![kombiProjekt].ColumnCount = 4  ' 4 Felder im Kombifeld Trainer vorgeben
    'Me![kombiProjekt].ColumnWidths = "0cm; 15cm; 0cm;0cm" ' Zweites Feld im Kombifeld Trainer anzeigen
    ' Kombifelder auf Null setzen
    Me!kombiProjekt = Null
    Me!kombiMotor = Null
    ' Filter ausschalten
    Me!ufoProjekt1.Form.FilterOn = False
   
Exit_Err_Fehler:
    Exit Sub
Err_Fehler:
    MsgBox Err.Description
    Resume Exit_Err_Fehler
End Sub
----------------------------------------------------------------

Private Sub Form_Open(Cancel As Integer)
Cancel = True
'Für Trainer eine andere Einstellung
' SQL Abfrage für KW und Trainer starten
Me!kombiProjekt.RowSource = "SELECT tblProjekte.idProjekt, tblProjekte.Projekt " & _
                          "FROM tblProjekte " & _
                          "GROUP BY tblProjekte.idProjekt, tblProjekte.Projekt"
                         
        'Me![kombiProjekt].ColumnCount = 4 ' 4 Felder im Kombifeld Trainer vorgeben
        'Me![kombiProjekt].ColumnWidths = "0cm; 5cm" ' Zweites Feld im Kombifeld Trainer anzeigen

End Sub
----------------------------------------------------------------

Private Sub kombiMotor_AfterUpdate()
On Error GoTo Fehler ' Fehlerabfrage

'Ruft Filter auf
Call fctFilter
' Aktualisiert Ufo
Me!ufoProjekt1.Form.Requery
' Rest von Fehlerabfrage
Exit_Fehler:
    Exit Sub
Fehler:
    MsgBox Err.Description
    Resume Exit_Fehler
End Sub
----------------------------------------------------------------

Private Sub kombiProjekt_AfterUpdate()
On Error GoTo Fehler ' Fehlerabfrage

'Ruft Filter auf
Call fctFilter
' Aktualisiert Ufo
Me!ufoProjekt1.Form.Requery
' Rest von Fehlerabfrage
Exit_Fehler:
    Exit Sub
Fehler:
    MsgBox Err.Description
    Resume Exit_Fehler
End Sub
----------------------------------------------------------------

Private Function fctFilter()
On Error GoTo Fehler
' Filtert das Ufo

Dim strFilter As String

' Wenn Optionsfeld Wahr ist, also angeklickt wir hier dit Wochentage von Montag bis Freitag gefiltert
' Montag hat die Zahl 2 demzufolge ist die 6 Freitag!
' Dadurch muss man auch die Wochentagsnamen anpassen (leider)
' Ich habe es so in der Abfrage für das UFO und Kombifeld Wochentag gelöst, aber es gibt vielleicht eine bessere Möglichkeit!
' txtWT: Wenn(Wochentag([Datum])=1;Wochentagsname(Wochentag([Datum])+6);Wochentagsname(Wochentag([Datum])-1))

'If Me.Option = True Then strFilter = strFilter & " And [WT] Between " & 2 & " AND " & 6

' Für Erweiterungen einen solchen If-Abschnitt kopieren und unten anfügen ( Feldnamen ändern! )
'***************************************************
If Not IsNull(Me!kombiProjekt) Then
    strFilter = strFilter & " AND [idProjekt_f] = " & Me.kombiProjekt
End If
'***************************************************
If Not IsNull(Me!kombiMotor) Then
    strFilter = strFilter & " AND [idMotor_f] = " & Me.kombiMotor
End If


'If Not IsNull(Me!KOMBINATIONSFELD) Then
    'strFilter = strFilter & " AND [ID_Trainer_f] = " & Me.KOMBINATIONSFELD
'End If


' Hier anfügen :)

' Nachstehend wird der Filter eingelesen und ausgeführt oder eben nicht ausgeführt!

If Len(strFilter) > 0 Then
        Me!ufoProjekt1.Form.Filter = Mid(strFilter, 6)
        Me!ufoProjekt1.Form.FilterOn = True
      Else
        Me!ufoProjekt1.Form.FilterOn = False
End If

Exit_Fehler:
    Exit Function
Fehler:
    MsgBox "Filter Function Error" & vbCr & vbCr & _
          Err.Number & " - " & Err.Description, vbExclamation, _
          "Filter Error"
    Resume Exit_Fehler
   
End Function

astern
Datenmodell-Missionar


Verfasst am:
19. Dez 2011, 17:17
Rufname: Andreas
Wohnort: Rastede


AW: Porsche Bauteildatenbank - ein paar Fragen - AW: Porsche Bauteildatenbank - ein paar Fragen

Nach oben
       Version: Office XP (2002)

Hallo!
Du brauchst erst einmal ein vernüftiges Datenmodell - den ganzen Code kannst Du vergessen. So weit bist Du noch LAAANGE nicht!!
Lies' Dir mal mein Tutorium durch: http://www.office-loesung.de/ftopic318127_0_0_asc.php und dann bilde die "A*'schen Sätze" mit den Worten:

- Projekt,
- Derivat,
- Motor (typ!),
- Getriebe (typ!),
- Bremsen (typ!),
- Fahrwerk (typ!),
- Räder (typ!)

Ich habe überall (typ!) dahinter geschrieben, weil ich denke, dass es nicht um ein ganz bestimmtes Rad geht (die sind ja wohl kaum durchnummeriert - oder!?), sondern um einen bestimmten Radtyp. Genauso bei allen anderen Objekten.

Also:
Zu EINEM Projekt gehört EIN Motor(typ).
EIN Motor(typ) gehört zu MEHREREN Projekten.
Also eine 1:n-Relation zwischen tblProjekt und tblMotortyp.
Richtig?

Zu EINEM Motor(typ) können MEHRERE verschiedene Getriebe(typen) gehören.
EIN Getrieb(typ) kann zu MEHREREN verschiedenen Motor(typen) gehören.
Also eine m:n-Relation zwischen tblMotortyp und tblGetriebetyp.
Richtig?

usw. usw.
Wenn Du das hast, sehen wir weiter!

MfG
A*

_________________
1. Access-Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Access-Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!
kazzig
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Dez 2011, 23:49
Rufname:

AW: Porsche Bauteildatenbank - ein paar Fragen - AW: Porsche Bauteildatenbank - ein paar Fragen

Nach oben
       Version: Office XP (2002)

Wooow! Hallo Andreas, ich habe bereits deine Datei, wo du in mehreren Punkte die Datenbank aufbaust, auf dem Rechner im Geschäft. Also ist die Idee schon mal gar nicht abwägig.

Es ist fast so, wie du das beschreibst. Nehmen wir mal den aktuellen Porsch 911 (991):

In dieses Auto verbauen wir ja, wie bekannt, den 3,4l und 3,8l Motor rein. Also gehören zum 991 schonmal zwei Motoren.
Ich müsste dann wahrscheinlich über den Umweg mit den Derivaten gehen.

Der C2 kann mit 3,4l und 3,8l bestückt sein.
Der C4 wird auch mit diesen beiden Motoren bestückt.

Dann ist es doch richtig, dass zwischen der Tabelle "tblDerivate" und "tblMotor" eine 1:n Beziehung steht oder?
Es ist in der Tat so, dass eigentlich fast alles eine eigene Teilenummer, sogar das Rad, aber in der Datenbank werden sie wirklich nur als Typ aufgefasst.

18", 19", 20"
Fahrwerk: Serie 0, Sport und Performance

Es wird aber wohl das beste sein, wenn ich deinen Vorschlag mal Stück für Stück durcharbeite und dann werde ich ja sehen, wie sich das Modell zusammensetzt. Morgen bin ich noch das letzte Mal vor den Feiertagen im Geschäft und werde mich ein bissl austoben Smile

Ich danke dir vorerst mal für die Mühe, die du dir gemacht hast - sehr nett von dir!
astern
Datenmodell-Missionar


Verfasst am:
22. Dez 2011, 00:41
Rufname: Andreas
Wohnort: Rastede


Re: AW: Porsche Bauteildatenbank - ein paar Fragen - Re: AW: Porsche Bauteildatenbank - ein paar Fragen

Nach oben
       Version: Office XP (2002)

Hallo!
Zitat:
Der C2 kann mit 3,4l und 3,8l bestückt sein. Der C4 wird auch mit diesen beiden Motoren bestückt. Dann ist es doch richtig, dass zwischen der Tabelle "tblDerivate" und "tblMotor" eine 1:n Beziehung steht oder?

Ich weiß nicht, was ein "Derivat" ist, aber es klingt eher nach m:n:
Zu EINEM Derivat ("C2", "C4"??) gehören MEHRERE Motoren?
EIN Motor gehört zu MEHREREN Derivaten?
Dann wäre es eine m:n-Beziehung zwischen tblMotor und tblDerivat.
Zitat:
Es ist in der Tat so, dass eigentlich fast alles eine eigene Teilenummer, sogar das Rad, aber in der Datenbank werden sie wirklich nur als Typ aufgefasst.

Tja, "in der Wirklichkeit ist es so und in der Datenbank ist es so", gibt es nicht! Die DB soll ja die Wirklichkeit abbilden. Du musst Dich also definitiv entscheiden, ob es um ein Rad (=individuell identifizierbar über eine Seriennummer) oder um einen Radtyp geht! Offenbar ist doch Ersteres der Fall!?

Gleich noch ein Tipp zu den Bauteilen (Motor(typ), Getriebe(typ), Bremsen(typ), Fahrwerk(typ), Räder (typ)): Wenn Du von vorneherein sicher bist, dass es soundsoviele Bauteile gibt und KEINE WEITEREN, dann kannst Du getrost für jedes Bauteil eine eigene Tabelle anlegen: tblMotor(typ), tblGetriebe(typ), ... usw. Wenn Du aber flexibel bleiben willst, weil es in Zukunft evtl. noch mehr und andere Bauteile geben könnte, dann legst Du eine Tabelle tblBauteil und eine Tabelle tblBauteiltyp an mit einer 1:n-Beziehung dazwischen:

tblBauteil (bau_id, btyp_id_f, bau_nummer, ...)
tblBauteiltyp (btyp_id, btyp_name, ...)

Dann kannst Du die DB in Zukunft um beliebige weitere Bauteile ergänzen, OHNE neue Tabellen anlegen zu müssen und vor allen Dingen: Ohne die Formulare ändern zu müssen!

Am nächsten Morgen:
Ich habe Dir mal was gebastelt (s.u.). Mit meiner DB kannst Du zunächst Fahrzeuge konfigurieren und dann festhalten, welches konkrete Bauteil in welchem konkreten Fahrzeug verbaut wurde.
"Bauteiltyp": z.B. "Motor"
"Bauteilvariante": z.B. "3,4l"
"Fahrzeugtyp": z.B. "C2"
"Fahrzeugvariante": z.B. "C2 mit 3,4l Motor und 20'' Sportbereifung"

In der Zwischentabelle tblBvar_Fvar steht dann drin, welche Bauteilvarianten zu welcher Fahrzeugvariante gehören (=Konfiguration der Fahrzeugvariante). Im Fremdschlüssel bvar_id_f in tblBauteil steht letzten Endes drin, welches konkrete Bauteil in welchem konkreten Fahrzeug verbaut wurde.

Meinst Du das so?

MfG
A*

PS: Namensunsauberkeit in tblBvar_Fvar: Dort muss es "bvarfvar_id" statt "btypftyp_id" und "bvarfvar_bemerkung" statt "btypftyp_bemerkung" heißen!!

_________________
1. Access-Gebot: Du sollst lange und gründlich über Dein Datenmodell nachdenken!
2. Access-Gebot: Du sollst keine Formulare erstellen ohne gutes Datenmodell!



porsche-v01.JPG
 Beschreibung:
Datenmodell
 Dateigröße:  44.68 KB
 Angeschaut:  687 mal

porsche-v01.JPG



Porsche-v01.zip
 Beschreibung:
.mdb-Datei

Download
 Dateiname:  Porsche-v01.zip
 Dateigröße:  18.06 KB
 Heruntergeladen:  45 mal

Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Fragen bzgl. des Aufbaus einer Aktienkurs-Datenbank 58 äxcel 1645 03. Jan 2013, 22:30
äxcel Fragen bzgl. des Aufbaus einer Aktienkurs-Datenbank
Keine neuen Beiträge Access Formulare: Datenblattansicht und ein paar Probleme 3 Ex-Siemens-Handy-Fan 292 20. Jul 2010, 21:34
MissPh! Datenblattansicht und ein paar Probleme
Keine neuen Beiträge Access Formulare: Drei Fragen zu Datenbank 13 Simon-Jan 1118 17. Mai 2010, 18:07
Simon-Jan Drei Fragen zu Datenbank
Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten. Access Tabellen & Abfragen: Fragen zu verschiedenen Abfragen 1 ushergirl 193 22. Apr 2010, 17:01
KlausMz Fragen zu verschiedenen Abfragen
Keine neuen Beiträge Access Tabellen & Abfragen: Fragebogen mit fixen Fragen für mehrere IDs 2 Blitzableiter 401 21. März 2010, 01:42
Blitzableiter Fragebogen mit fixen Fragen für mehrere IDs
Keine neuen Beiträge Access Tabellen & Abfragen: Einige Fragen z.B. Eingabe einer ArtNo und Anzeigen 1 IocusDiabolo 203 13. Nov 2009, 17:54
KlausMz Einige Fragen z.B. Eingabe einer ArtNo und Anzeigen
Keine neuen Beiträge Access Formulare: 2 Fragen von Anfänger 3 Spaggi 287 03. Apr 2009, 11:43
Marmeladenglas 2 Fragen von Anfänger
Keine neuen Beiträge Access Formulare: Mehrere Fragen :-( (nooby fragen?!) 5 Dammy 795 30. Aug 2007, 11:26
Scarlet Mehrere Fragen :-( (nooby fragen?!)
Keine neuen Beiträge Access Formulare: Formular aufrufen und nach PW fragen 3 MaxBErlin 597 04. Mai 2007, 07:43
MaxBerlin Formular aufrufen und nach PW fragen
Keine neuen Beiträge Access Tabellen & Abfragen: Ein paar Fragen zu meiner Datenbank. Bitte um Hilfe! 5 Gast 710 06. Apr 2007, 16:59
stpimi Ein paar Fragen zu meiner Datenbank. Bitte um Hilfe!
Keine neuen Beiträge Access Tabellen & Abfragen: 2 Fragen, die denk ich relativ einfach zu beantworten sind 2 Blattl 711 02. März 2007, 21:32
Nouba 2 Fragen, die denk ich relativ einfach zu beantworten sind
Keine neuen Beiträge Access Formulare: Weiterführende Fragen zu 'Formular mit Alphabet' 5 dot 3526 12. Jan 2007, 14:59
Willi Wipp Weiterführende Fragen zu 'Formular mit Alphabet'
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: HTML Editoren Forum