Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Rammsteiner am August 08, 2010, 18:42:58

Titel: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 08, 2010, 18:42:58
Hallo liebe Access-o-Mania User!

Ich bin neu hier und habe gleich einige Fragen an euch. Ich bin damit beauftragt worden eine Checkliste für elektronische Bauteile zu erstellen. Diese Checkliste soll den Zustand der Bauteile abfragen. Ich habe leider keine großen Vorkenntnisse über Access, hoffe aber das ihr mir weiterhelfen könnt. Ich bin derzeit soweit, das ich die Details der elektronischen Bauteile, wie z.B. "Typ" und "Seriennummer" in eine Tabelle über ein Formular eintragen kann. Nun möchte ich aber, dass im unteren Bereich des Formulars ein Botton ist, der zu den Fragen, die das Bauteil betreffen springt. Dies soll möglichst so sein, dass sich dafür kein extra Fenster öffnet, sondern alles im vorhanden Fenster stattfindet. Diese Fragen sollen immer nur mit Ja/Nein beantwortet werden können. Wenn die Fragen mit Nein beantwortet werden, soll es möglich sein Bilder und Kommentare für einen späteren Bericht anzugfügen. Ist dies mit Access und eurer Hilfe möglich zu erstellen? Ich danke für die Antworten.

mfg
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: DF6GL am August 08, 2010, 20:09:00
Hallo,

sicherlich ist das möglich, und helfen können wir Dir auch, nur umsetzen muß Du es dann selber. Dazu sind die Kenntnisse der Access-Grundlagen und ein paar Kenntnisse zu VBA nötig.

Zunächst muß Du Dir Gedanken über die Datenzusammenhänge machen und Tabellen dazu nach den Normalisierungsregeln erstellen und in Beziehung setzen (siehe u. st. Links 1 +2). Dann kommen die Formular an die Reihe, die die Datenmanipulationen erlauben. Zuletzt Berichte für die Auswertungen etc.



Prinzipiell benötigst Du (mindestens) 3 (bzw. 4) Tabellen  mit den entspr. Datenfeldern und Schlüsselfeldern:

tblBauteile
BTID  (Autowert, PK)
BT_TypID  (Long, FK)
BT_Identnummer  (Text)
BT_Seriennummer (Text, bzw. Long , je nachdem ob alphanumerisch oder nur numerisch)
BT_Notiz (Memo)


tblFragen
FrageID  (Autowert, PK)
Frage_Text  (Text, bzw. Memo)
Frage_Notiz (Memo)


tblBauteileFragen
BTFRID  (Autowert, PK)
BTFR_FrageID  (Long, FK)
BTFR_BTID (Long, FK)
BTFR_Beantwortung (Ja/Nein)
BTFR_Notiz  (Memo)


evtl. tblBauteileTypen
BTTypID (Autowert, PK)
BTTyp_Bezeichnung (Text)
.
.
.



Sodann über die Schlüsselfelder (PK, FK)  in Beziehung setzen:


tblBauteileTypen  -- 1 :n --   tblBauteile  --  1:n --   tblBauteileFragen  -- n:1  --  tblFragen




Einzelformulare für  Tabellen tblTypen  , tblBauteile  ,tblFragen

Endlosform für tblBauteileFragen 


Im Form "frmBauteile" ein UFO-Steuerelement einbauen, das "frmBauteileFragen" anzeigt, dabei die Eigenschaften "Verküpfen von/nach auf die richtigen Schlüsselfelder einstellen.

In "frmBauteile" wählt ein Kombifeld den entspr. Typ eines Bauteils aus ("tblBauteileTypen")
In "frmBauteilefragen" wählt ein Kombifeld die entspr. Frage(n) aus dem Fragenkatalog aus ("tblFragen")



Soweit das Rezept für den Tortenboden...  ;)
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 09, 2010, 20:29:59
Danke für deine rasche antwort. Zunächst stellt sich für mich einmal die Frage was PK und FKs und "longs" sind?  Desweiteren weiß ich nicht genau wie das mit den Beziehungen und Primärschlüsseln funktioniert. Kannst du eventuell versuchen dies mit deinen worten zu beschreiben?

Ich werde nachher mal meine "anfänge" der Datenbank posten.

Danke dir

EDIT: Würdest du mir deine Emailadresse verraten, damit ich dir meine Testdatenbank zukommen lassen kann um eventuelle falsche Anwendungen gleich korrigiert werden können. Würde mir echt weiterhelfen, da vieles aus den Hilfelinks deiner Signatur für mich unverständlich ist. Danke dir.
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: database am August 09, 2010, 21:19:03
Hallo, guten Abend,

ich darf an der Stelle ein paar Erklärungen dazu liefern ...

PK und FK sind Abkürzungen für Begriffe, die im Umfeld der Datenbankentwicklung von immenser Wichtigkeit sind.

PK steht für Primary Key und bezeichnet damit den Primärschlüssel einer Tabelle.
FK steht für Foreign Key also den Fremdschlüssel einer Beziehung.
Mit Hilfe dieser beiden Tabellenfelder werden Bezihungen zwischen Tabellen realisiert.

Der PK kennzeichnet einen Datensatz eindeutig, ist daher fachlich gesprochen UNIQUE.
Das Gegenstück z.B. in einer 1:n Beziehung ist der FK, der in einer Tabelle mehrmals vorkommen kann.
Zum Verständnis vielleicht als Beispiel ein einfacher Einkaufswagen:

Der Einkaufswagen hat einen Primärschlüssel, z.B. DICH, eine eindeutige Kennzeichnung, die einzhigartig im ganzen Geschäft ist (zum leichenren Verständnis - deine SozVers-Nr.).
Um festzustellen welche Waren auf dem Kassenband nun ua deinem Wagen sind bzw. dir gehören werden diese Waren mit einem FK versehen,
einem Kennzeichen, das dich als Besitzer der Ware eindeutig identifizieren kann (...also ebenfalls deine SozVers-Nr).

Somit ist leicht herauszufinden, wem der Einkaufswagen gehört - dem Kunden mit der Soz.Vers-Nr. sowieso und die Waren, welche die selbe Nummer haben gehören in deinen Einkaufswagen.

Was hat es nun mit den LONGs auf sich?
Wenn man in Access den Primärschlüssel einer Tabelle als ein Autowert-Feld deklariert, MUSS der Fremdschlüssel in der Beziehungstabelle eine Zahl vom Datentyp Long Integer sein.


Franz hat das in seinem Tabellenmodel auch so dargestellt...

tblBauteile
BTID (Autowert, PK)  ----> Feldname 'BTID'  Datentyp Autowert,  Primärschlüssel

und dazu die Beziehungstabelle

tblBauteileFragen
....
....
BTFR_BTID (Long, FK) ----> Feldname BTFR_BTID,  Datentyp Zahl / Long Integer, Fremdschlüssel.

Die Beziehnung zwischen den Beiden Tabellen wird eine 1:n Beziehung darstellen,
Für einen bestimmten Bauteil, einem einzigartigem Bauteil können mehrere Fragen gespeichert werden.

Na, eine langatmige Erklärung, ich hoffe du hast es einigermaßen verstanden, worum es da geht...   ;D

Grüße

Peter

p.s.
Zitatda vieles aus den Hilfelinks deiner Signatur für mich unverständlich ist
Du wirst, wenn du dich öfters, länger und intensivedr, vor allem aber erfolgreich mit der Datenbankentwicklung beschäftigen willst nicht darum herum kommen das zwingend notwendige Grundwissen nachzufassen. Die Hilfelinks in der Signatur von DF6GL sind allesamt recht umfangreich und im Allgemeinen gut verständlich. Ein passendens Einsteigerseminar könnte da für dich m.E. sehr geeignet sein das zwingend notwendige Grundverständnis zu erlangen :)

Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 09, 2010, 22:39:19
deine erklärung hat mich ein Stück weiter gebracht. Ich werde gleich anfangen damit zu arbeiten, berichte euch morgen abend von meinen erfolgen, danke :)
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 09, 2010, 23:30:28
Zitat von: database am August 09, 2010, 21:19:03

Franz hat das in seinem Tabellenmodel auch so dargestellt...

tblBauteile
BTID (Autowert, PK)  ----> Feldname 'BTID'  Datentyp Autowert,  Primärschlüssel

und dazu die Beziehungstabelle

tblBauteileFragen
....
....
BTFR_BTID (Long, FK) ----> Feldname BTFR_BTID,  Datentyp Zahl / Long Integer, Fremdschlüssel.

Die Beziehnung zwischen den Beiden Tabellen wird eine 1:n Beziehung darstellen,
Für einen bestimmten Bauteil, einem einzigartigem Bauteil können mehrere Fragen gespeichert werden.

Na, eine langatmige Erklärung, ich hoffe du hast es einigermaßen verstanden, worum es da geht...   ;D


Habe das problem das ich bei meinen tabellen keinen fremdschlüssel bestimmen kann, wie genau tuh ich das denn?
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: database am August 10, 2010, 10:27:58
Hallo,

ZitatHabe das problem das ich bei meinen tabellen keinen fremdschlüssel bestimmen kann

Wenn du die Tabellen gemäß dem Vorschlag von DF6GL erstellt hast, sollten die Feldnamen dem entsprechen.
Du wchselst aufs Beziehungsfenster und dort holst du die Tabellen tblBauteile und die Tabelle tblBauteileFragen ins Fenster.
Danach ziehst du von der tblBauteile das Feld BTID auf die Tabelle tblBauteileFragen und lässt das Feld auf BTFR_BTID los.
Im jetzt sich öffnenden Fenster setzt du den Haken bei 'Referenzielle Integrität' und das war's.

Du hast die beiden Tabellen in Beziehung gesetzt und diese über PK und FK mit Wahrung der referenziellen Integrität  erstellt.
Die referenzielle Integrität legt unter Anderem fest, dass in der Detailtabelle (tblBauteileFragen) keine Datensätze existieren, die keine PK-Entsprechung in der tblBauteile haben, wodurch ein Datenchaos ausgeschlossen wird.

Soweit  alles klar?

Grüße
Peter
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 10, 2010, 22:10:54
Gute Abend,

Wenn ich das so mache wie du es beschreibst und ich den Haken bei "mit referentieller Integrität" setze kommt folgende Fehlermeldung:

"Für Beziehung ist die selbe Anzahl an Feldern mit den selben Datentypen erforderlich"

wenn ich den Haken nicht setze, setzt er die Beziehung.

Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: DF6GL am August 10, 2010, 22:44:57
Hallo,


dann nimm die Fehlermeldung ernst und benutze für alle Felder, die miteinander in Beziehung gesetzt werden, denselben Datentyp.
Soweit ich sehe, habe ich für alle Schlüsselfelder (PK und FK) nicht umsonst den Datentyp LONG INTEGER angegeben .
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 10, 2010, 23:51:10
danke, jetzt habe ich das verstanden ^^ ... :)


Ich habe nun die Tabelle wie oben genannt verknüpft. Es hat nun endlich alles funktioniert und das mit den Beziehungen wurde auch soweit verstanden. Ich denke es geht dabei in erster Linie darum Werte die in der einen Tabelle vorkommen automatisch in der anderen Tabelle erscheinen zu lassen, damit man am Ende ein Eingabeformular für verschiedene Tabellen hat. Ich hoffe das ist so richtig verstanden worden.

Ich möchte nun einen Schritt weitergehen. Ich möchte nun den Bauteiltyp mit einem Pulldownmenü auswählen können. Ich weiß das die Textbeschreibung für unser Beispiel über die Tabelle tblBauteileTypen beschrieben wird und durch diese Tabelle jedes Bauteil einer Nummer zugeteilt wird. Wie genau realisier ich nun in der Formularvorlage ein Pulldownmenü?

Eine weitere Frage wäre dann noch folgendes Beispiel.

Ich habe einen Hersteller X und einen Hersteller Y. Beide Hersteller habend jeweils 2 Bauteiltypen. Nennen wir diese Bauteiltypen BauteilX1, BauteilX2, BauteilY1 und BauteilY2.
Ich möchte nun über ein Pulldownmenü den Hersteller auswählen und dann soll für jeden der beiden Hersteller X und Y jeweils nur der passende Bauteiltyp angezeigt werden. Beispiel:

Ich wähle den Hersteller X. Im nächsten Pulldownmenü sollen dann nur die Bauteile X1 und X2 angezeigt werden.

Ich denke das mit den Beziehungen wurde von mir verstanden. In diesem Fall würde ich folgendermaßen vorgehen.

Tabelle Hersteller
HerstellerID  Autowert  Primärschlüssel (Dieser Schlüssel wird mit der Tabelle Bauteiltypen HerstellerID und der Tabelle Auswahlmenü HerstellerID in Beziehung gebracht)
Herstellername  Text

Tabelle Bauteiltypen
BauteilID  Autowert  Primärschlüssel (Dieser Schlüssel wird mit der Tabelle Auswahlmenü BauteilID in Beziehung gebracht)
HerstellerID  Zahl  Fremdschlüssel
Bauteiltyp  Text

Tabelle Auswahlmenü
HerstellerID Zahl Fremdschlüssel
BauteilID Zahl Fremdschlüssel


Bei der Tabelle mit der ich das Auswahlmenü über ein Formular erstellen möchte bin ich mir nicht ganz sicher. Hier fehlt auch der Primärschlüssel. Ich hoffe ihr könnt meinem Beispiel folgen und mich auf Fehler in den Beziehungen hinweisen. Vielleicht bzw hoffentlich habe ich dort aber keinen Denkfehler drin. Jeder Hersteller ist nun einer laufenden Nummer zugeteilt und jedes Bauteil ist einem Hersteller und einem Typen zugeordnet.

ICh danke für eure Geduld.

Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: DF6GL am August 11, 2010, 08:35:02
Hallo,




es stellt sich die Frage, ob EIN Bauteil von MEHREREN Herstellen stammen kann, oder es für EIN bestimmtes Bauteil nur EINEN bestimmten gibt.

(wobei weiter zu klären ist, ob es dann nicht eher um einen Lieferanten anstatt eines Herstellers geht, oder sogar um Beides....)


Bei EINem Hersteller für EIN Bauteil ergibt sich diese Konstellation:

tblHersteller
HerstID (Autowert, PK)

Herst_Name (Text)
Herst_PLZ  (Text)
Herst_Ort (Text)
Herst_Strasse (Text)
Herst_TelNr (Text)
.
.
.

tblBauteile
BTID  (Autowert, PK)
BT_TypID  (Long, FK)
BT_HerstID (Long, FK)



Bei MEHREREN Herstellern für EIN Bauteil:


tblHersteller
HerstID (Autowert, PK)

Herst_Name (Text)
Herst_PLZ  (Text)
Herst_Ort (Text)
Herst_Strasse (Text)
Herst_TelNr (Text)
.
.
.

tblBauteileHersteller   (so ählich, wie von Dir schon vorgeschlagen)
BTHID  (Autowert, PK)
BTH_BTID  (Long, FK)
BTH_HerstID (Long, FK)
BTH_Verfügbarkeit  (als Beispiel, je nachdem, was das Feld aussagen soll)
BTH_Einkaufspreis (Währung)
BTH_Notiz (Memo)
.
.



tblBauteile
BTID  (Autowert, PK)
BT_TypID  (Long, FK)
BT_Identnummer  (Text)
BT_Seriennummer (Text, bzw. Long , je nachdem ob alphanumerisch oder nur numerisch)
BT_Notiz (Memo)



tblBauteileFragen
BTFRID  (Autowert, PK)
BTFR_FrageID  (Long, FK)
BTFR_BTHID (Long, FK)
BTFR_Beantwortung (Ja/Nein)
BTFR_Notiz  (Memo)


Zitat

es geht dabei in erster Linie darum Werte die in der einen Tabelle vorkommen automatisch in der anderen Tabelle erscheinen zu lassen, damit man am Ende ein Eingabeformular für verschiedene Tabellen hat


das ist erst sekundär.


Die ref. Integrität weist die Jet-Engine (das eigentliche access-interne Datenbankprogramm) an, für die Konsistenz der abhängigen Daten zu sorgen, d. h. keine Datensätze in Detail (n-) Tabellen zuzulassen, wenn es dafür keinen "Haupt"-Datensatz in der 1-Tabelle gibt oder Änderungen am Primärschlüssel(wert) auf die Fremdschlüsselfelder zu übertragen. Desgleichen werden beim Löschen eines Hauptdatensatzes auch alle dazugehörenden Detaildatensätze gelöscht, sofern die Lösch-Option bei der ref. Int. eingestellt ist.  Das Alles passiert intern auf TABELLENebene und hat mit Formularen erst mal wenig zu tun. Evtl. Fehlersituationen schlagen aber natürlich beim Bearbeiten der Daten mit einem Formular dort durch.
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 11, 2010, 22:16:58
ok, danke für die Antwort :).

Zu der Frage wieviele Hersteller und wieviele typen. Es gibt für ein Bauteil verschiedene Hersteller. Die Hersteller bezeichnen aber alle dieses Bauteil anders und haben für dieses Bauteil verschiedene Typen. Diese Typen unterscheiden sich meist aber nur im Aufbau haben aber die selbe Funktion. Ich möchte nun ein Eingabeformular erstellen indem ich den Hertseller wähle und dannach soll das Forumlar nur die Typen von dem Hersteller zur auswahl anzeigen und die anderen ausblenden. Wie genau geht das?

danke :) ...
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: DF6GL am August 14, 2010, 19:43:17
Hallo,


zunächst geht es um die Datenverhältnisse, bevor etwas ausgewählt wird. In diesem Fall ist eben mein 2. Tabellenvorschlag gültig.  (Ich habe nicht umsonst, eben aus Kenntniss dieser Herstelle-Bauteile-Situation) die Tabellen so aufgeführt.

Allerding haben auch die Hersteller für jeden einzelnen Bautteiletyp eine Artikel- (Bestellnummer), die als Feld noch in "tblBauteileHersteller" aufzunehmen wäre.


Sobald die Tabellen so erstellt sind, ist es möglich, über abhängige Kombifelder (erst Typ, dann Hersteller, bzw. erst Hersteller, dann Typ) alle Artikel (Bauteile) eines Herstellers aufzulisten und einen davon auszuwählen (für eine Bestellung, Beurteilung  oder Ähnlichem)


Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 15, 2010, 13:46:24
danke für all eure antworten. Ich bin nun soweit und konnte mit eurer Hilfe eine komplette Datenbank nach meinen Vorstellungen realisieren. Ich habe nun nur ein kleines problem.

Ich möchte im Bericht Bilder anzeigen lassen, die ich vorher über die Formularansicht mit Hilfe eines bottons angefügt habe. In der Berichtsanzeige zeigt er dieses Bild aber nicht an. Sondern nur eine Symbolik aus der Windowasanzeige für ein .jpg Bild und den Bildernamen. (Beispiel: eigensbild.jpg) Dannach habe ich mir gedacht, dass ich auf das eigenschaftenblatt gehen muss und dort auf "anzeigeart" und dann "inhalt", in der Hoffung das der Inhalt der Datei bzw des Bildes angezeigt wird, dies passiert aber nicht, wieso?

Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: DF6GL am August 15, 2010, 14:58:53
Hallo,


es ist unklar, WIE die Bilder gespeichert werden. Hier vermute ich allerdings, dass dazu ein OLE-Feld in der Tabelle benutzt wird.

Solche OLE-felder zum Speichern von Bildern habe aber viele Nachteile.


Wie auch immer, vermutlich ist kein OLE-fähiges Grafikbearbeitungsprogramm (z. B. der Photoeditor) oder kein entspr. Grafikfilter installiert.
Titel: Re: Checkliste erstellen mit Microsoft Access 2003 und 2007
Beitrag von: Rammsteiner am August 16, 2010, 21:31:33
also der photoeditor ist auf meinem pc vorhanden. Muss ich ihn irgendwie mit access verbinden? Ich weiß, dass die datenbanken mit oleobjekten irgendwann unfassbar groß werden, aber ich benötige fotos für meine checklisten um die lieferanten auf ihre fehler hinzuweisen. Diese fotos sollen bzw werden derzeit im automatisch erstellten bericht eingefasst aber leider nicht angezeigt. Gibt es noch andere möglichkeiten als ein OLE-objekt?