Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Dipar am Januar 28, 2016, 11:00:54

Titel: Anlage aus Listenfeld laden
Beitrag von: Dipar am Januar 28, 2016, 11:00:54
Hallo ihr lieben,
bin noch ziemlicher VBA Neuling und habe gerade ein Problem mit einem Listenfeld. In dem Listenfeld sind unterschiedliche Felder und unteranderem auch ein Anlagenfeld (das Listenfeld bekommt seine Daten aus einer Tabelle).
Nun möchte ich eine Ereignisprozedur starten, die beim Klicken auf das Listenfeld die entsprechende Anlage läd. Mir ist da so etwas geistreiches wie:
Private Sub Liste1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.Anlagen.Open
End Sub

eingefallen was leider nicht funktioniert.
Habe auch schon einige Zeit mit Suchen verbracht und nichts so wirklich passendes gefunden. Jemand von euch eine Idee wäre echt super:)

Grüße Dipar
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Dipar am Januar 29, 2016, 12:32:19
Hat da echt keiner ne Ahnung:/
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: MaggieMay am Januar 29, 2016, 12:40:27
Hallo,

kommt ganz darauf an, wie du dir dieses "Laden" vorstellst. Am einfachsten dürfte die Anzeige per Formular sein, d.h. entweder du öffnest ein PopUp-Formular mit dem ausgewählten Datensatz oder du zeigst die Anlage im aktiven Formular an. Wenn du die Anlage als Datei öffnen willst, musst du sie ja erstmal "exportieren" - auch das geht wohl, müsstest du aber mal nach googeln.
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Dipar am Januar 29, 2016, 12:46:56
Also es gibt ja nen Anlagefeld wo dann schon entsprechende Daten hinterlegt sind(in der Tabelle auf die sich das Listenfeld bezieht). Aber im Listenfeld gibt es ja leider keine Büroklammer oder ähnliches wo man den entsprechenden Datensatz her raus aufrufen kann.
Deswegen ne Prozedur, die dann beim Klicken auf den Datensatz am besten den entsprechenden Datensatz sofort öffnet.
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: MaggieMay am Januar 29, 2016, 12:59:10
ZitatAber im Listenfeld gibt es ja leider keine Büroklammer
...eben drum schlug ich dir das Öffnen des Datensatzes via Formular vor.
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: DF6GL am Januar 29, 2016, 12:59:48
Hallo,

ich befürchte, Du verstehst "Anlage" nicht...

Eine Anlage ist kein "Datensatz" der DB, eher ein in die Tabelle eingefügtes (abgespeichertes) Dokument, das mit einem anderen Programm erstellt wurde, z. B. ein Excel-Sheet, eine Bild-Datei oder sonst was "Datenbank-Fremdes"...

Also lies nochmal den Post von MaggieMay und setze den passend um....
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Dipar am Januar 29, 2016, 13:13:16
Hey MaggieMay und DF6GL,

erst einmal Danke für den Input!!!
Aber ich glaube ich verstehe das schon. Nen popup Formular öffnen iwie über den Befehl "docmd.openform", aber das finde ich nicht allzu elegant wenn ich ehrlich bin. Es wär schon cool wenn nen ähnlicher Dialog entstehen würde, wie wenn ich bei einem normalen Formular auf das Anlagefeld drücke und ich dann mit dem Doppelklick die Anlage in ihrer entsprechenden Software Anwendung öffnen könnte (z.B. Word, Adobe Reader...). Das mit dem exportieren verstehe ich nicht ganz weil das ja auch so im normalen Formular klappen würde.
Wie würdest du dir das denn mit dem öffnen im aktiven Formular vorstellen?

Grüße Dipar
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: DF6GL am Januar 29, 2016, 13:46:59
Hallo,

mit einem Listenfeld ist das halt so ohne Weiteres nicht möglich....

Was hindert Dich denn daran, das Listenfeld durch ein entspr. formatiertes Endlosform zu ersetzen?
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Beaker s.a. am Januar 29, 2016, 16:28:14
Hallo Dipar,
FollowHyperlink sollte dein Freund sein.
Und zeige Mal die Abfrage, die hinter dem Listenfeld steckt.
Oder verwende gleich das zum Datentyp (Anlage) passende Steuerelement (heisst genauso).

@Maggie/Franz
Ein Anlagefeld gibt es erst seit A2007. Ist einer dieser neuen "Datentypen", und ist genauso hässlich wie diese Mehrwerte-Felder. Dahinter liegt eine 1:n-Tabelle (intern).
Man kann darauf ein RS öffnen, und es gibt ein passendes Control (siehe oben), wie ich der OH entnommen habe.

Ich würde empfehlen, diese Tabelle selber anzulegen und zu verknüpfen. Muss man zwar evtl. ein eigenes UFo dazu anlegen, aber das Laden in der zugehörigen Anwendung funzt dann per FollowHyperlink auch aus dem Listenfeld heraus.
gruss ekkehard
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: MaggieMay am Januar 29, 2016, 16:46:05
Hi,
Zitat@Maggie/Franz
ich denke schon, dass wir wissen was ein Anlagefeld ist und mit FollowHyperlink wirst du da wohl nichts ausrichten können, da die Anlage ja eben nicht in Dateiform vorliegt.
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: DF6GL am Januar 29, 2016, 16:49:57
Hallo Ekkehard,

das ist mir schon bewußt/bekannt    :P  ;)

FollowHyperlink direkt auf das Listenfeld (die Listenfeld-Spalte) angewendet bringt wohl nichts.  Die Lösung mit einem Recordset2 ginge zwar, aber ich denke, das wäre dem TS zu kompliziert, wenn schon ein "Docmd.Openform" zu "unelegant" ist und er das Access-interne "Anlage-Verwaltungsfenster" wünscht.


Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Beaker s.a. am Januar 29, 2016, 17:24:38
Hallo,
'tschuldigung, wollte nicht naseweis sein. Es gibt aber hier und dort  Regulars, die immer noch mit A2003 arbeiten, oder sich zumindest damit nicht auskennen (weil sie es nicht verwenden, so wie ich).

@Maggie
Zitatmit FollowHyperlink wirst du da wohl nichts ausrichten können, da die Anlage ja eben nicht in Dateiform vorliegt.
Nee, ist klar, mit dem Anlagefeld geht das nicht, aber eben WEIL die Anlage als, eine Art Kopie des Originals (habe ich jedenfalls so verstanden), gespeichert wird, und NICHT der Pfad.

@Franz
ZitatFollowHyperlink direkt auf das Listenfeld (die Listenfeld-Spalte) angewendet bringt wohl nichts
Ja, weil wahrscheinlich nicht der RS des Anlagefeldes die Datenherkunft ist, sondern die Tabelle/Abfrage mit dem Feld an sich.
Wie gesagt, würde ich, wenn's dann unbedingt dieser "Datentyp" sein soll, empfehlen sich mit dem passenden Control zu beschäftigen (ich bin da jetzt zu faul). Das sollte doch eigentlich passende Eigenschaften/Methoden zur Verfügung stellen.
gruss
ekkehard
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: DF6GL am Januar 29, 2016, 17:41:10
Hallo Ekkehard,

ja, wir reden letztendlich am Thema vorbei...  ;)

Zitatsich mit dem passenden Control zu beschäftigen

Klar, das wurde ja auch schon angesprochen:  Das Textfeld im Formular, das an das Anlagenfeld gebunden ist.  In meinem Vorschlag (Formular als Listenfeldersatz) wird genau dieses praktiziert.  Dieses St.-El. hat die Eigenschaft "Value", die im Gegensatz zu "normalen" Textfelder nicht den Wert, sondern einen Recordset vom Typ Recordset2 beinhaltet.

Dahinter liegt eine interne n-Tabelle (sieht man z. B. im Beziehungsfenster) , die sozusagen die Verschlimmbesserung einer expliziten  1-n-Tabellenbeziehnung darstellt und die eben auch ein Binary- Feld enthält , in dem die Binärdaten der Anlagedateien hinterlegt werden.

Titel: Re: Anlage aus Listenfeld laden
Beitrag von: MaggieMay am Januar 29, 2016, 17:58:05
ZitatDas Textfeld im Formular, das an das Anlagenfeld gebunden ist.
Naja, so kann man das nun wirklich nicht sagen, das ist eben kein Textfeld, sondern ein Anlagenfeld.

Zitat von: Dipar am Januar 29, 2016, 13:13:16
Wie würdest du dir das denn mit dem öffnen im aktiven Formular vorstellen?
Du könntest das Formular an die Tabelle oder Abfrage binden und bei Auswahl im Listenfeld auf den markierten Datensatz springen. Dann wird dir die Anlage je nach Datentyp direkt angezeigt oder du musst das Feld anklicken, um zur Auswahlmaske zu kommen.
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Beaker s.a. am Januar 29, 2016, 18:09:24
Hallo Franz,
ZitatDieses St.-El. hat die Eigenschaft "Value", die im Gegensatz zu "normalen" Textfelder nicht den Wert, sondern einen Recordset vom Typ Recordset2 beinhaltet.
Und da gibt es kein Feld mit dem Pfad zur Originaldatei?
ZitatDahinter liegt eine interne n-Tabelle (sieht man z. B. im Beziehungsfenster) , die sozusagen die Verschlimmbesserung einer expliziten  1-n-Tabellenbeziehnung darstellt und die eben auch ein Binary- Feld enthält
Hatte ich bereits in #8 unnötigerweise (s. #9) erwähnt.
gruss ekkehard
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: DF6GL am Januar 29, 2016, 20:33:46
Hi,

ZitatUnd da gibt es kein Feld mit dem Pfad zur Originaldatei?

ich sehe nur den nackten Dateinamen + Extension .....  Den Pfad mit zu abzuspeichern, wäre nicht ganz vorteilshaft.


Die Daten sind ja in der Tabelle gespeichert und der Ursprungspfad wäre nur dem speziellen Fall gültig, wenn die DB-Datei nicht verschoben oder gar auf einem anderen Rechner eingesetzt würde.
Titel: Re: Anlage aus Listenfeld laden
Beitrag von: Dipar am Februar 04, 2016, 15:37:18
Hallo ihr Lieben,

möchte mich entschuldigen, dass ich als Fragensteller jetzt ein paar Tage inaktiv war. Hatte verschiedene Gründe hoffe ihr nehmt es mir nicht allzu böse.
Werde das mal bis morgen mit dem Endlosformular versuchen und schauen ob das optisch irgendwie okay ist ansonsten werde ich noch mal nachhorchen ansonsten werde ich nochmal konkrete Fragen zu den anderen Möglichkeiten stellen.

Vielen vielen Danke bis hierhin!!!

Herzliche Grüße Dipar