collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 52
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13804
  • stats Beiträge insgesamt: 63539
  • stats Themen insgesamt: 8609
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: anzeigen und auswählen eines Anlagenfeldes in einem Formular  (Gelesen 491 mal)

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
anzeigen und auswählen eines Anlagenfeldes in einem Formular
« am: September 23, 2017, 09:02:36 »
Hallo Gemeinde,
ich brauche mal wieder eure Hilfe :-\

In einem Formular möchte ich den Inhalt eines Anlagefeldes einer Tabelle in einem Listenfeld / Kombinationsfeld
anzeigen und auswählen können.
Also z.B. zum Datensatz 1 gehören 3 PDF Dateien und 1 Word Dokument die sollen im
Listenfeld / Kombinationsfeld angezeigt werden und der Benutzer soll durch klicken diese geöffnet bekommen.
Gibt es da einen Trick oder VBA-Code?

Ich würde mich riesig über eure Hilfe freuen :)

Gruß
Danny

 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #1 am: September 23, 2017, 14:00:35 »
Hallo Danny,
Der Trick ist auf Anlagefelder zu verzichten und Pfad- und
Dateiname in einer Extratabelle "tblDokumente" zu speichern,
mit einem Fremdschlüssel zum zugehörigen Datensatz. Da du
verschiedene Dokumente hast, würde ich vielleicht sogar noch
eine zusätzl. Tabelle "tblDokumenteArten" anlegen um darin die
Dateiextension und evtl. den Pfad zur Anwendung zu speichern,
und auch diese per FK in "tblDokumente" zu hinterlegen.
Das Öffnen der Dokumente erfolgt dann mit der "FollowHyperlink"-
Methode (siehe OH, dann fragen).
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Brallu

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #2 am: September 23, 2017, 18:25:40 »
Hallo Ekkehard,
das werde ich mal versuchen aber gibt es da dann auch eine einfache Möglichkeit den Dateipfad wie z.B. im Explorer auszuwählen.
Also wenn ich Dateien zufügen will dann soll ein Button gedrückt werden und ich kann die Datei auf dem PC suchen und dann durch einen anderen Button speichern????
Geht das? Im Netz habe ich dazu nix brauchbares gefunden.

Ich danke dir für die Hilfe und hoffe du hast hierzu auch eine Idee!! Eventuell auch ein einfaches Beispiel?

Gruß
Danny
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23095
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #3 am: September 23, 2017, 18:37:21 »
Hallo,

klar geht das und nennt sich Filedialog.

Im Downloadbereich findest Du eines von vielen Beispielen:
http://www.access-o-mania.de/forum/index.php?action=downloads;sa=view;down=56

Ein anderes "Dateiauswahlfenster"  findest Du in der MSO-Library (im VBA-Editor Verweis setzen) als Application.Filedialog

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #4 am: September 23, 2017, 22:57:03 »
Moin und Danke DF6GL,
da werde ich mal mit rumspielen!!!

Gruß
Danny
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #5 am: September 25, 2017, 12:50:44 »
Hallo Danny,
Den Filedialog brauchst du sicher, oder willst du Pfade und Dateinamen mit der Tastatur eingeben?
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 
Folgende Mitglieder bedankten sich: Brallu

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #6 am: Oktober 02, 2017, 10:08:15 »
Hallo Gemeinde :) ,
ich habe geglaubt ich habe es jetzt, aber nein weit gefehlt  :-[

Ich habe Hondos Link benutzt und das Beispiel für Datei- und Verzeichnisdialog von Karsten Pries versucht abzuspecken so dass ich meine kleine Aufgabe erledigen kann.  http://www.kpries.de/index.htm?Entwicklertools/filedialog.htm
Das klappt auch super der Datei-Link wird angezeigt und dann gespeichert.

Beim ausprobieren des Beispiels über frmMat öffnen dann auf Neu klicken wegen der Zuordnung der ID!!!

So und nun kommen meine Probleme:

1.
Beim Speichern in die Tabelle tblPfadSpeichern im Feld Pfad wird der Hyperlink nicht richtig gespeichert.
Wenn ich in der Tabelle einen Link manuell hinzufüge über rechts Klick dann klappt das mit dem öffnen. Aus dem Formular frmPfadSpeichern nach dem speichern allerdings nicht. In der Zeile steht das selbe aber die Farbe ist anders.

2.   
Im Formular frmMat habe ich ein Kombinationsfeld (Prüfungshilfen) hier sollen die Links zu den einzelnen Datensätzen angezeigt werden und dann per Doppelklick geöffnet werden.
Aber ich kriege es nicht hin das so einzustellen, dass beim Doppelklicken der Link aus der 3 Spalte zum öffnen genommen wird.

Ich habe ein Beispiel erstellt wo das nachzuvollziehen ist und würde mich riesig freuen wenn da mal einer drüberschauen könnte. Ich habe Access 2016 und da gibt es kein Hyperlink mehr als Felddatentyp sondern nur noch Link. Ich hoffe das ist das selbe wie Hyperlink. Ach und im Modul FileDialog habe ich weggelöscht was ich nicht brauche. Wenn es da weiteres gibt was ich noch löschen kann dann würde ich mich auch freuen wenn ihr das einfach löscht und mein Beispiel wieder hochladet. Da im Netz sehr viele Fragen hierzu rumschwirren und es kaum einfache Beispiele für Anfänger gibt wäre das hier sehr Brauchbar.

Wieder einmal danke ich euch im vorraus fürs Lesen bis hier her  :-[

Gruß
Danny



 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #7 am: Oktober 02, 2017, 13:34:50 »
Hallo Danny,
Als erstes musst du die DB mal soweit bringen, dass sie fehlerfrei kompiliert
werden kann. Anschliessend "Reparieren/Komprimieren" und neu hochladen.
Dann musst du den Datentyp des Feldes "Pfad" umstellen auf "Text". Das hatte
ich in der ersten Antwort vergessen zu erwähnen.
Öffnen des Links mit
FollowHyperlink Me!Kombinationsfeld128(unbedingt noch ordentlich benennen)

gruss ekkehard

--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1600
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #8 am: Oktober 02, 2017, 13:58:41 »
Hallo Danny,
Sorry, gerade erst gesehen. "FollowHyperlink" hast du ja schon
verwendet. Allerdings im falschen Ereignis. Kombifelder werden
normalerweise "AfterUpdate" ausgewertet.
Das funzt dann allerdings nur mit einem Textfeld. Ein Hyperlinkfeld
bringt das von Haus aus mit.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 854
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #9 am: Oktober 02, 2017, 14:23:47 »
Danny, ich habe die Punkte einmal eingebaut.

Bei Verwendung von Hyperlink-Feldern braucht es keinen Doppelklick und auch keine Ereignisprozedur. Persönlich verwende ich die Dinger nie, sondern bevorzuge so etwas wie ShellExecute.
Grüße von der (⌒▽⌒)
 

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #10 am: Oktober 02, 2017, 15:02:00 »
Hallo Lachtaube und Ekkehard, :)
 
Lachtaube:
das mit dem Link öffnen klappt bei dir super! :)
Aber ich kann keine Datei anfügen. :(
Das ich mit dem Aussuchen des zugehörigen Materials sollte auch automatisch laufen (bei 1500 Artikeln)
Ich habe die Dinge die Ekkehard mir geschrieben hat mal eingebaut und das Formular über die Qry erstellt jetzt zeigt er sie mir an und ich kann sie auch speichern.

Aber deine Möglichkeit direkt den Link anzuklicken ist optisch natürlich viel schöner. Also wenn du magst kannst du nochmal schauen?

Ekkehard:
Das fehlerfreie kompilieren scheint an der Access Version zu liegen. Ich habe 2016 und beim in .mdb wandeln meckert er das ich Features aus 2106 benutze die ich noch nicht gefunden habe.

Also ich danke euch schon einmal für die schnelle Hilfe und stelle hier nochmal die Aktuelle Version rein.
(an .mdb arbeite ich!!!)
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 854
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #11 am: Oktober 02, 2017, 15:40:13 »
Danny,

dass Dein Klassen-Modul zerschossen ist und nicht 64-Bit-fähig ist, obwohl es das vorgibt, habe ich noch nicht erwähnt.

Zum Anderen ist es wenig sinnvoll, in einer Tabelle, die neben Material-Id nur noch einen Dateipfad enthält, diesen leer lassen zu dürfen oder gar mit dem Text (keine) zu bestücken. Und in der Regel passen Pfadanganben auch noch in ein Textfeld (Kurzer Text).

Das Formular über die Abfrage der beiden Tabellen (soetwas mag ich zur Datenpflege gar nicht - warum kein Unterformular?) dürfte ja bereits alle Detaildatensätze anzeigen. Was soll denn da ein Kombifeld noch bezwecken? Wandle das Ding in ein Textfeld um und sperre es. Dann funktioniert Dein Doppelklick, der mich gleich beim Testen mit einer Zip-Datei genervt hat.
Grüße von der (⌒▽⌒)
 

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #12 am: Oktober 02, 2017, 16:24:03 »
Moin Lachtaube nochmal,
also ich habe Access 2106 mit 64 bit und er macht eigentlich das was er soll. Ich verstehe nicht was bei euch so zerschießt :(

Bei den Tabellen handelt es sich nur um ganz vereinfachte Beispiele. Die tblMat hat normalerweise 20  Felder mit verschiedenen UFOs.
Das was in der tblPfadSpeichern steht wird wohl auch noch durch 2 weitere Felder ergänzt.
Es geht darum einem Datensatz also Artikel die Beipackzettel, Anleitungen und so ein Zeugs zuzuführen und diese dann bei Bedarf zu öffnen.

Der Inhalt des frmMat hat normalerweise 3 UFOs und ich wollte das nicht noch voller machen aber ich schätze du hast recht!
Aber so wie ich es jetzt reingestellt habe funktioniert es bei mir. Nur ist deine Version optisch schöner mit dem Link Direkt-Klick.
Da mache ich mir jetzt auch Sorgen ob ich das auf einem anderen Rechner zum laufen bringe!

Ich danke dir wirklich für deine Mühe. Da ich immer noch nur wenig von VBA verstehe habe ich so meine Problemchen.

Gruß
Danny
 

Offline Brallu

  • Access-Profi
  • **
  • Beiträge: 132
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #13 am: Oktober 02, 2017, 16:37:51 »
Noch ein Nachtrag,
ich wollte ein Kombifeld da es zu einem Datensatz auch verschiedene Dokumente geben kann und da soll der Benutzer auswählen was er öffnen muss.

Gruß
Danny
 

Offline Lachtaube

  • Access-Meister
  • ***
  • Beiträge: 854
Re: anzeigen und auswählen eines Anlagenfeldes in einem Formular
« Antwort #14 am: Oktober 02, 2017, 17:04:40 »
Hier habe ich mal Deine Type-Deklaration der von Win32AP_PtrSafe.txt von Microsoft gegenübergestellt und IMHO fehlerhafte Stellen mit einem Stern (*)am Anfang der Zeilen markiert. Desweiteren ist im sogenannten 32-Bit-Bereich die Kopfzeile Private Type BROWSEINFO auskommentiert. Statt #If Win64 Then wäre es besser #If VBA7 Then zu verwenden und nur unterschiede zwischen 64- und 32-Bit Deklarationen (die gibt es aber hier niht nicht) als solche zu unterscheiden.
Private Type TOpenFileName     Private Type OPENFILENAME               
*  lStructSize As LongPtr         lStructSize As Long
   hOwner As LongPtr              hwndOwner As LongPtr
   hInstance As LongPtr           hInstance As LongPtr
   lpstrFilter As String          lpstrFilter As String
   lpstrCustomFilter As String    lpstrCustomFilter As String
   nMaxCustFilter As Long         nMaxCustFilter As Long
   nFilterIndex As Long           nFilterIndex As Long
   lpstrFile As String            lpstrFile As String
   nMaxFile As Long               nMaxFile As Long
   lpstrFileTitle As String       lpstrFileTitle As String
   nMaxFileTitle As LongPtr       nMaxFileTitle As Long
   lpstrInitialDir As String      lpstrInitialDir As String
   lpstrTitle As String           lpstrTitle As String
*  Flags As LongPtr               flags As Long
   nFileOffset As Integer         nFileOffset As Integer
   nFileExtension As Integer      nFileExtension As Integer
   lpstrDefExt As String          lpstrDefExt As String
   lCustData As LongPtr           lCustData As LongPtr
   lpfnHook As LongPtr            lpfnHook As LongPtr
   lpTemplateName As LongPtr      lpTemplateName As String
End Type                       '#if (_WIN32_WINNT >= 0x0500)
                                  pvReserved As LongPtr
                                  dwReserved As Long
                                  FlagsEx As Long
                               '#endif // (_WIN32_WINNT >= 0x0500)
                               End Type
Grüße von der (⌒▽⌒)