PDA

Vollständige Version anzeigen : Tabellen Verbinden


Dekay1986
01.06.2012, 10:58
Hallo,
habe ein kleines "Problem" wofür ich keine Lösung finde.
Ich habe eine Tabelle in der zwei Pfade zu verschiedenen Bildern stehen. (Spalte 1)
In einer zweiten Spalte steht eine Zahl (1 und 2).

Was muss ich tun, damit ich wenn ich im Formular Zahl 1 eingebe, der dazu gehörige Pfad geöffnet wird.


Ich möchte Quasi nicht immer den ganzen Pfad eingeben um auf ein Bild zu verlinken, sondern immer nur die Zahl 1, 2 u.s.w. .

(Zahl 1 soll sich auf Pfad 1, Zahl 2 auf Pfad 2 u.s.w. beziehen)

Leider kenn ich mich mit Beziehungen u.s.w. nicht aus da ich hier neu bin.

Vielen Dank für Hilfe-Vorschläge

Daniel Knodel

Atrus2711
01.06.2012, 11:08
Hi,

diese Tabelle könnte "Bildpfade" heißen und eignet sich gut, um in einer Bildertabelle den Pfad anzugeben.

Lege also eine weitere Tabelle für die Bilder an, und verbinde im Datenmodell die Pfadnummer der Bildpfade mit der Pfadnummer der Bildertabelle. Schalte die referenzielle Integrität ein. In der Bildertabelle wirst du dann noch den Dateinamen brauchen, vielleicht auch einen "Restpfad", falls die Dateien doch noch in einzelnen Unter-Ordner des jeweiligen Standardpfads liegen können.

Dekay1986
01.06.2012, 11:42
Vielen Dank erst einmal für die schnelle Antwort.
Ich habe jetzt:
Tabelle 1 (BilderTabelle) wo ich die Spalte BildPfad und Zahl habe.
Tabelle 2 (Zahl) nur mit der Spalte Zahl.
Habe die beiden Tabellen miteinander verbunden und ein Häckchen bei "Referenzielle Integrität" gesetzt.

Hab ich das bis hierher richtig verstanden?

Thomas Möller
01.06.2012, 12:15
Hallo Daniel,

Was muss ich tun, damit ich wenn ich im Formular Zahl 1 eingebe, der dazu gehörige Pfad geöffnet wird.
Ich möchte Quasi nicht immer den ganzen Pfad eingeben um auf ein Bild zu verlinken, sondern immer nur die Zahl 1, 2 u.s.w. .

wie stellst Du Dir das genau vor? Was soll genau passieren?

Eine einfache Lösung könnte der Befehl DLOOKUP sein. Mit diesem könntest Du den gespeicherten Pfad zur eingegebenen Zahl aus der Tabelle auslesen und weiter verarbeiten.

CU

Atrus2711
01.06.2012, 12:15
Fast. Ich sehe kein Feld, wo du nun die Pfade ablegen könntest.

Ich stelle mir sowas vor:

tblPfade
ID (Autowert)
Pfad (Text)

tblBilder
ID (Autowert)
F_Pfad_ID (Long Integer-Zahl)
Dateiname (Text)

Beziehungen:
tblPfade 1:n tblBilder anhand der Pfadnr.


Aber die Beziehung stimmt. Nun "weiß" Access, dass die Bildpfad-Zahlen zusammengehören. Mit einer Abfrage kann Access nun den Pfad zur Zahl ermitteln.

Dekay1986
01.06.2012, 12:26
Garnicht so einfach das ganze.
Um ehrlich zu sein weiß ich noch nicht einmal wie ich mir so einen Code ausgeben lasse.
Aber Sinngemäß hab ich das so gemacht glaube ich.
Muss da wohl erstmal im Büchlein blättern und mich in diese Code-geschichte rein denken.

Bisher musste ich nirgends was von hand eingeben, sondern nur ein paar kleine Macros schreiben oder sowas.

Beschäftige mich noch nicht lange mit Datenbanken und da dauert das alles noch nen bisschen bei mir.



Vielen Dank trotzdem erstmal.

Atrus2711
01.06.2012, 12:38
Das ist kein Code, sondern eine Tabellenstruktur.
Da steht nur Coe drumrum, weil ich die Struktur vom Fließtext absetzen wollte. Für dich nochmal umformatiert:


tblPfade
ID (Autowert)
Pfad (Text)
tblBilder
ID (Autowert)
F_Pfad_ID (Long Integer-Zahl)
Dateiname (Text)
Beziehungen:
tblPfade 1:n tblBilder anhand der Pfadnr

maikek
01.06.2012, 12:41
Moin,
so schwer nu' auch wieder nicht ;) . Code sehe ich hier nirgends :D (auch wenn bei Martins Beitrag Code oben über den Tabellenvorschlägen drüber steht).
Aber: Kannst du bitte deine Anforderung noch etwas präzisieren?
Im Moment kann ich nicht erkennen, was du vorhast. Willst du dir einfach die Eingabe von Bildpfaden erleichtern, indem du das Verzeichnis schon mal vorgibst? Geht es um einzelne Bilder, deren Pfad du brauchst, um sie anzuzeigen? Oder ganz was anderes?
maike

Dekay1986
05.06.2012, 09:21
Hallo,
entschuldigt das ich erst jetzt wieder antworte.

Ich möchte mit die Eingabe erleichtern.
Ich erstelle einen Fertigungsmittelkatalog. (Bestandteil meiner Diplomarbeit im Studiengang Produktionstechnik. Also nicht Informationstechnik oder sowas ;) )

Dieser soll dann irgendwann weiter vervollständigt werden (nicht von mir, sondern von Praktikanten)

Nun soll es aber eben so sein, dass diese dann nicht den kompletten Pfad der jeweiligen Bilder eingeben sollen, sondern eben nur eine Zahl die auf einen Pfad verweist.

Also mal angenommen ich habe 5 Bilder auf meinem PC.
Ich möchte, dass man im Formular "1" eingibt, um über Pfad 1, Bild 1 zu öffnen.
2 für Pfad 2, Bild 2 u.s.w. .

Ich Pflege hier z.B. Kupplungen ein.
Es gibt an die 300Kupplungen und diese unterteilen sich in 10-15 verschiedene Arten.

Möchte zu jeder Kupplung eine Konstruktionszeichnung anzeigen lassen.
Wenn ich aber für alle 300 Kupplungen den Pfad angebe ist das nat. sehr aufwendig.

Deswegen möchte ich eben nur eine Zahl eingeben, die für das entsprechende Bilst steht.

Habe mal eine Bsp. DB angehangen.


Ich hoffe das war einigermaßen verständlich?!

maikek
05.06.2012, 09:46
Moin, deine DB kann ich nicht ansehen, 2010 hab ich nicht.
Daher noch mal Fragen:
Du willst dir die Eingabe von Daten erleichtern?
Du willst die Suche/den Aufruf vereinfachen?
Beides?
Zunächst mal brauchst du auf alle Fälle eine Tabellenstruktur etwa wie von Martin vorgegeben, erweitert um eine Tabelle Zeichnungen und Zuordnung der Bilder zur jeweiligen Zeichnung.
Die tblBilder sollte dann folgende Informationen enthalten:
IDBild, IDPfad_FS, IDZeichnung_FS, BildNr, NameBilddatei
Wobei das Kennzeichen _FS einen Fremdschlüssel auf die tblPfade bzw. Zeichnung enthält.
Die BildNr wäre dann, so wie ich es verstehe, Bild 1 (zu Zeichnung 45), Bild 2 (zu Zeichnung 45) ... etc.
Wenn die Bilder immer im selben Verzeichnis liegen wie die Konstruktionszeichnung, kannst du den Pfad auch über die Zeichnungstabelle verwalten.

maike

Anne Berg
05.06.2012, 09:51
Hallo,

du solltest Pfad und Dateiname getrennt speichern, dann lässt sich das leichter ändern, wenn der Ordner mal verschoben wird. Und dann kannst du mal überlegen, ob du nicht alle Bilder in einen einzigen Ordner packen willst, dann muss auch nicht der Pfad in jedem Datensatz stehen, sondern kann in eine separate Tabelle ausgelagert werden.

Die Dateinamen könnten aus der Artikelnummer (Satz-ID) der Kupplung generiert werden, dann kannst du dir die Bildtabelle komplett sparen.

@Maike:
Die DB ist recht unspektakulär und besteht lediglich aus der Bildtabelle (ID, Bildpfad, Zahl) und einem dazu passenden Formular.
In Bildpfad steht der vollständige Zugriffspfad zum Bild, wobei Zahl dem Dateinamen ohne Endung entspricht.

Dekay1986
05.06.2012, 10:03
Hey,

das ist aber auch schwer zu erklären wenn man sich so schlecht mit Access auskennt wie ich.

Ich möchte mir die Eingabe erleichtern.

Ich erstelle also eine Tabelle in der folgendes steht:
Spalte1: Bild_Pfad
C:\Desktop\Bild1.jpg
C:\Desktop\Bild2.jpg
Spalte2: Zahl
1
2

In meinem Formular was ich erstellt habe, möchte ich nun meine ganzen Kupplungen anlegen und dazu jeweils das Bild 1 oder 2 ausgeben.

Jetzt möchte ich aber nicht "C:\Desktop\Bild1.jpg" eingeben, um das Bild 1 im Formular zu sehen, sondern nur "1".

Ich weiß ich habe mich ein bisschen schwer, bin nur leider noch nicht so tief im Access drin und hatte nur auch garkeine Vorkentnisse.
Vielen Dank aber für die Geduld mit mir ;-)

PS.: Die Bilder sind alle in einem Ordner gespeichert.

Dekay1986
05.06.2012, 10:10
@Anne.
Die zweite Spalte ist eine "erfundene" Zahl.
Diese soll nicht zwangsläufig so wie das Bild heißen.
Möchte im Grunde Zahlen von 1-15 verwenden, auch wenn die Daten z.b: "Bolzenkupplung_285.jpg" heißt.

maikek
05.06.2012, 10:18
Jetzt möchte ich aber nicht "C:\Desktop\Bild1.jpg" eingeben, um das Bild 1 im Formular zu sehen, sondern nur "1".
Willst du nun eingeben oder suchen/anzeigen?
Eingeben musst du den Pfad ja zumindest 1 Mal (in Worten "ein").
Zum Suchen/Anzeigen musst du den Pfad nicht nochmals eingeben, den erfragt die Datenbank bei entsprechendem Datenmodell aus den zugrundeliegenden Tabellen. Oder was versteh' ich da falsch?
Ich hab' so das dumpfe Gefühl, du denkst noch zu sehr in Excel ;) und wir reden hier aneinander vorbei.
Wirf doch mal einen Blick in diese beiden Links zu den Grundlagen einer relationalen Datenbank:
Kelz (http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/)
Access-Tutorial (http://www.access-tutorial.de/index.htm)
maike

Dekay1986
05.06.2012, 10:26
Habe auch das dumpfe Gefühl. ;-) .

Ich möchte eingeben.
Möchte meine Tabelle komplettieren und sämtliche Datensätze eintragen.
Habe einen Fertigungsmittelkatalog in nicht digitalisierter Form und möchte diesen Digitalisieren.

Meine Datenbank ist ist in soweit vorbereitet das nur noch meine Kupplungen hinzu gefügt werden müssen.

Ich öffne also mein Formular, und gebe die verschiedenen Parameter der jeweilgien Kupplungen ein.
Werkzeugnummer, Durchmesser, Maximal übertragbares Drehmoment, u.s.w. .
Als letztes dann die Zahl "1". Und in meinem Formular soll das Bild 1 erscheinen.

Im hintergrund ist das dann so vorbereitet, das sich hinter der Zahl 1 der Pfad zum Bild 1 verbirgt.

;-) garnicht so einfach.

dergrieche
05.06.2012, 10:32
Du hast eine DB in der du in einer Tabelle Informationen hast und zu jedem Datensatz ein Bild? Also wirst du über ein Formular später einen Selektor haben, der die Auswahl in einem Bericht darstellen wird, und dort soll das gewünscht Bild drin sein? Ist das korrekt?

Schließlich musst du ja später irgendwie an deinen Output rankommen.
Schon mal überlegt, was passiert, wenn die DB auf nen anderen PC verschoben/ kopiert/ genutzt wird? Dann kannst du fixen Pfade wieder in die Tonne hauen, wenn es um die Darstellung in einem bericht geht.

Dann steht, so wie es dir bsiher schon gesagt wurde, folgendes in deiner Tabelle als Spalten:
- ID (Primärschlüssel, definiert den genauen datensatz)
- Information (mit der du/ der Anwender weiß, um welches Bild oder Kupplung es geht bezieht)
- Textfeld (hier steht der Bildpfad)

Bevor ich noch weiter irnwas sage und dich sinnlos verwirre. Beantworte mir erstmal diese Fragen :-)
- wie willst du später an den output? wie wird es dargestellt werden?
- wir die DB auf anderen PC auch genuttz werden/ soll sie es im Fall der Fälle?

maikek
05.06.2012, 10:37
Die Auswahl bzw. Eingabe die du möchtest, kannst du im Formular super easy mit einem Kombifeld realisieren.
Wenn die Tabellen und deren Beziehungen stimmen.
maike

dergrieche
05.06.2012, 10:43
Jep! Das Formular dazu ist keine erausforderung,
Aber darf nicht vergessen werden, dass wen die DB "unterwegs" ist auf anderen Rechnern, dass die Darstellung der Bilder dynamisch sein muss. das problem hatte ich auch.

Habe ein land gehabt, jedes land hatte einige Infos, und ein Bild der Weltkarte, wo es drauf vermerkt ist. jedes land anderes Bild, soll aber immer das Bild angezeigt werden, welches Land bzgl ausgewählt wird.
Der Pfad zum Bild im Unterordner, sodass der Dynmische Pfad im Code immer zum unterordner führt, sodass gewährleistet ist, dass egal auf welchem Rechner sich er Ordner mit der DB befindet, immer auf die ilder zugegriffen werden kann.

Atrus2711
05.06.2012, 10:48
Da schlag ich doch mal zwei Felder vor:


einen "Rumpfpfad" vor, der tunlichst auf einem Server liegt und per UNC-Pfad angesprochen wird (\\Server\bilder\artikelbilder)
einen "Detailpfad", der nur den datensatzspezifisch ergänzenden Teil darstellt; ggf. bis hin zum Dateinamen. (\1\skizze.jpg)
Verkettung der beiden ergibt einen qualifizierten Dateinamen, der im ganzen Netzwerk eindeutig ist

Ich halte es übrigens nicht für eine gute Idee, die Datenamen nach den Artikelnamen zu benennen. Wenn die Namen sich ändern, muss das alles nachgezogen werden. Es genügt, wenn die Datenbank weiß: "du (Datei) gehörst zu dem (Artikel)". Da kann auch die Datei dideldum.jpg zum Artikel 4712 gehören. Alles andere sind unnötige Redundanzen.

Dekay1986
05.06.2012, 10:56
Siehe unten

Dekay1986
05.06.2012, 11:40
@ der grieche:
Ich habe ein Steuerelement "Bild" im Formular angelegt, welches auf den "Bild-Pfad" verweist.
Das funktioniert auch.
Wenn ich also den Pfad eines Bildes eingebe, wird dieses auch im Formular angezeigt.

Siehe Bild

Die Komplette datenbank wird später in einem Netzwerkordner abgelegt, wo sich an der Ordnerstruktur nichts mehr ändern soll.

Also dürfte es da keine Probleme geben.

Letztlich soll es so sein, dass verschiedene Mitarbeiter auf die DB zugreifen können um sie den Katalog anzuschauen. Also sie sollen eine Kupplung suchen und alle Parameter mit Bild sehen können.
Berichte dazu u.s.w. habe ich schon erstellt.

Es soll dann nur noch einen geben der das ganze auch bearbeiten kann

Atrus2711
05.06.2012, 11:53
Dann halt so:

Me!Bildpfad = "\\vem-swd-file01\profile$\dknodel\Desktop\" & Me!txtZahl & ".gif"
Auszuführen AfterUpdate des Zahlenfelds.

Aber:

ist das wirklich immer ein .gif? sonst krachts ja mit der Standardannahme .gif...
Den Rumpfnamen könntest du auslagern, wie jetzt mehrfach diskutiert. Im Code hier ist er demohalber hardcodiert.
Wer sagt, dass es die entstehende Datei wirklich gibt? Wäre eine Dateiauswahl oder gar ein "Hereinziehen" der Datei aus dem Explorer nicht einfacher?

Dekay1986
05.06.2012, 11:59
Ist das denn ein Problem wenn es ein *.gif ist?
Habe die Bilder alle als Gif gespeichert, damit die möglichst klein sind.
Die Qualität ist absolut ausreichend, da das nur zur veranschaulichung ist.
Deswegen als gif.

Ich probier das mal so wie beschriebe.

Dekay1986
05.06.2012, 12:06
Kannst du vielleicht eine Test_DB mit entsprechendem inhalt hochladen?
Glaub da lässt sich das besser für mich nachvollziehen.
Also sinngemäß versteh ich wie du das meinst.
Leider scheiterts an der Umsetzung. :-(


Ich versteh das so, dass ich die "1" in mein Zahlenfeld schreibe und wenn ich das Zahlenfeld verlasse, aktualisiert der dieses und es steht mein Pfad+Zah+.gif da.
Das macht ja sinn und ist letztlich auch ne super lösung.

Atrus2711
05.06.2012, 12:06
Es wäre ein Problem, wenn ein Bild kein Gif ist, weil der Code Gif unterstellt...

Dekay1986
05.06.2012, 12:14
Ja genau das habe ich auch gerade verstanden.

Atrus2711
05.06.2012, 12:19
Zahlen-Textfeld im Entwurf des Forms markieren
Eigenschaften aufrufen
Aufblättern der Eigenschaft "Nach Aktualisierung"
Cursor da reinsetzen
Aufklapp-Symbol (Pfeil) anklicken
Ereignisprozedur auswählen.
...-Symbol aufrufen -> VBA-Code öffnet sich an der richtigen Stelle
Code einfügen; ggf. Namen der Steuerelemente im Code korrigieren

Dekay1986
05.06.2012, 12:28
Damit geb ich dir Virtuell einen aus.

Vielen vielen Dank,... hat geklappt.
Ich Trottel hatte die Ereignissprozedur ins falsch textfeld gesetzt. ;-)
Klasse.
Bin begeistert und froh das es nun endlich funktioniert.
Das auch noch ohne eine zusätzliche Tabelle.

Nochmals vielen Dank.

Nat. auch an alle anderen die mir hier geholfen haben.
Wenn die Menschen im wahren Leben nur auch so hilfsbereit wären.


:-)