Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: fantacola am Dezember 14, 2011, 09:28:08

Titel: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 14, 2011, 09:28:08
Hallo zusammen
Gleich vorweg, ich bin absoluter Newbie in Sachen VBA...
Folgendes möchte ich machen: Habe die Tabelle Q-Infosatz und da die Spalte Dateien. Aus einem Verzeichnis möchte ich die Datei/-en auswählen und deren Pfad in die Spalte Dateien speichern.
Mit Help und Google bin ich auf den Filedialog gestossen (siehe nach meinem Text). Man sieht ich hab den sogar einem
Button zuordnen können. Nun folgende Probleme:

1. Nach Knopfdruck kommt Kompilierfehler Objekt unbekannt Me.FileList.RowSource = ""
   Meine Vermutung: Access hat keine Ahnung was diese Filelist ist...ich auch nicht
2. Irgendwie muss das Ergebnis dieses Filedialogs in meine Spalte Dateien....
   Keine Ahnung wo das in den Code rein muss.

Herzlichen Dank
Daniel

Die Sub aus der

Private Sub Befehl25_Click()


  ' Requires reference to Microsoft Office 11.0 Object Library.

  Dim fDialog As Office.FileDialog
  Dim varFile As Variant

  ' Clear listbox contents.
  Me.FileList.RowSource = ""

  ' Set up the File Dialog.
  Set fDialog = Application.FileDialog(msoFileDialogFilePicker)

  With fDialog

     ' Allow user to make multiple selections in dialog box
     .AllowMultiSelect = True
           
     ' Set the title of the dialog box.
     .Title = "Please select one or more files"

     ' Clear out the current filters, and add our own.
     .Filters.Clear
     .Filters.Add "Access Databases", "*.ACCDB"
     .Filters.Add "Access Projects", "*.ADP"
     .Filters.Add "All Files", "*.*"

     ' Show the dialog box. If the .Show method returns True, the
     ' user picked at least one file. If the .Show method returns
     ' False, the user clicked Cancel.
     If .Show = True Then

        'Loop through each file selected and add it to our list box.
        For Each varFile In .SelectedItems
           Me.FileList.AddItem varFile
        Next

     Else
        MsgBox "You clicked Cancel in the file dialog box."
     End If
  End With
End Sub


Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 14, 2011, 11:37:44
Hallo,

Du mußt nur lesen   ;)


and add it to our list box.


Soll heißen, "Filelist" ist der Name des Listenfeldes oder Kombifeldes in Deinem Formular , das die Datei-Pfade anzeigen soll.
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 14, 2011, 11:54:25
Hi,
mhh habe ich wohl gelesen, aber nicht verstanden.
Also habe im Formular eine ungebunden Listbox eingefügt mit Namen Filelist.
Wenn ich den Button drücke kommt folgende Kompilierfehlermeldung (siehe Bild), dass das Methode oder Datenobjekt me.Filelist.rowsource = "" nicht gefunden wurde...

Ziel, wenn dieses Problem gelöst ist:

Den Wert dieses Listenfelds in die entsprechende Spalte in der Tabelle QInfo schreiben

Wie löst sich denn das Kompilierproblem und wie erreiche ich mein Ziel?

Gruss





[Anhang gelöscht durch Administrator]
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 14, 2011, 12:37:33
Hallo,
mhmm,  der Fehler sagt aus , dass es kein Listenfeld mit Namen "Filelist" gibt. (Eigentlich , dass es keine Rowsource-Eigenschaft für das Steuerelement "FileList" gibt, die ein Listenfeld aber hat.)


Prüf das noch mal nach.


"Den Wert dieses Listenfelds in die entsprechende Spalte in der Tabelle QInfo schreiben"

wird erreicht, wenn das Listenfeld an das Tabellenfeld "Dateien" gebunden ist/wird (Im Steuerelementinhalt des Listenfeldes diesen Spaltennamen hinein schreiben)..

Die Eigenschaft "Mehrfachauswahl" des Listenfeldes  sollte dabei auf "keine" stehen .

 
Um welche Access-Version handelt es sich?
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 14, 2011, 13:35:07
Hi
Wir kommen der Sache näher..habe tatsächlich das Listenfeld nicht richtig benannt. Der Dialog startet jetzt und ich kann echt Dateien einfügen...
Hmm die spalte "Datei" habe zum Steuerelement eingetragen, aber gespeichert wird sie nicht. Im Gegenteil, wenn ich zum nächsten Datensatz springe bleibt der Link im Feld. Wenn ich dann das formular schliesse und wieder öffne ist gar nix mehr da und in der Tabelle ist auch nichts gespeichert unter Datei...

Gruss

[Anhang gelöscht durch Administrator]
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 14, 2011, 16:43:02
Hallo,

--benenne das Feld nicht "Datei", eher "PfadDateiName" oder ähnlich.

--von Hyperlinkfeld war nicht die Rede. Ändere das in ein normales Feld mit Datentyp "TEXT" (in der Tabelle) und entferne auch die Hyperlink-Definition im Formular , falls vorhanden/möglich.

-- Das Formular selber muss an die TAbelle gebunden sein (Tabellenname in der Eigenschaft "Datenherkunft")
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 16, 2011, 08:05:44
Hallo
Danke für die Ratschläge. Habe sie versucht umzusetzen, dabei kam folgende Fehlermelung (siehe Bild1, die Eigenschaften der Feldlist im bild2)

Gruss

PS Ich arbeite mit Access 2007



[Anhang gelöscht durch Administrator]
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 16, 2011, 11:20:00
Hallo,

naja, genau das Problem, das die Fehlermeldung aussagt, besteht wahrscheinlich auch...



Stell im Tabellenentwurf die Feldgröße des Textfeldes auf 255 ein.

Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 16, 2011, 11:44:25
hi,
ha so cool...es geht. die pfade sind auch riesig, das ist etwas kacke. kein wunder passten die nicht ins feld...ein link geht jetzt.

wie stell ich es denn an, dass ich mehrere links einfüge. habe eine tabelle tblDateienQInfo erzeugt, die n:1 mir der tblQinfo verknüpft ist.
Dann ein Unterformular, endlos und jede Zeile mit Button ausgestattet...es funktioniert nicht .-(
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 16, 2011, 13:20:52
Hallo,

naja,  "funktioniert  nicht" sagt mir nichts....


Was steht denn "hinter" dem Button   (in dessen Klick-Ereignisprozedur)?

Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 19, 2011, 13:14:39
hallo
ja meine erklärung war etwas dürftig..
habe ein unterformular erstellt (endlosformular) mit diesem listenfeld und dem button für den filedialog. leider kann ich nur genau einen datensatz im ufrm anlegen, es kommt dann keine neue zeile für einen weiteren. komischerweise bleibt der inhalt des datensatzes auch drin, sprich, wenn ich im hauptformular eins weiterspringe, steht im unterformular immer noch dieser datensatz mit dem link.
ob da eine einstellung nicht passt...

habe mal bilder angehängt, hoffe die helfen...

guten start in die woche
gruss

[Anhang gelöscht durch Administrator]
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 19, 2011, 21:39:13
Hallo,

mhmm, blicke nicht durch...  Soll das Feld neben dem Button im Detailbereich das Listenfeld ("FileList") sein?

Das würde aber lediglich nur einen (den ersten) Eintrag anzeigen können...


Gibst Du direkt in das normal geöffnete Formular die Daten ein?

Das wird dann vermutlich am nicht existierenden (bekannten) PK-Wert aus der zugehörenden 1-Tabelle scheitern.




Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 20, 2011, 08:08:53
hallo
ja genau, das war meine absicht. im uf als endlosformular wird immer ein neues filelist-feld mit button erzeugt und in einen neuen datensatz geschrieben. bei anderen endlosformularen geht das ja ganz gut. in kombifeld zb etwas eingeben und schwupps erscheint eine neue zeile mit einem leeren datensatz usw. mit dem filedialog irgendwie nicht...

der ansatz ist wahrscheinlich falsch. ein zweiter wäre von hand einfach z.b. filelists1 - filelist10 mit jeweils einem button zu erstellen. dann kann ich einfach 10 datein so ablegen. lieber wäre mir das halt variabel, weil zum Teil habe ich 20 Dateien, manchmal aber auch nur eine...

gruss
Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: DF6GL am Dezember 20, 2011, 17:07:45
Hallo,

irgendwie hab ich den Faden verloren, den Du ausgerollt hast..


Wenn Du in ein TEXTfeld (nicht Listenfeld) einen Pfaddateinamen (kompletter Dateiname) eingeben, bzw. aussuchen willst. bietet sich ein API-Filedialog oder der Application.Filedialog (sofern die passende A-Version benutzt wird) zur Auswahl an. Das hat mit einem Kombifeld (und dem Füllen des Listenteils des Kombifeldes) nichts zu tun.

Natürlich kannst Du auch per Code ein Kombifeld mit DAteinamen füllen. Dann musst Du halt die Dateinamen z. B: mittels DIR()-Funktion in einer Schleife suchen und dabei z. B. mittels AddItem-Methode die Wertliste des Kombi(listen)feldes zusammenbauen.

Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: fantacola am Dezember 20, 2011, 20:26:13
Hi du
Hehe ja den faden muss ich auch wieder finden....
Folgendes ist zu bewerkstelligen: mehrere dateien aus einem verzeichnis einem datensatz beilegen.
Folgendes habe ich mir überlegt: haupttabelle + untertabelle für diese dateinamen mit 1:n beziehung.
Füllen mit formular und ufrm.

Benutzen tu ich access 2007 und kann bisher nicht mehr als code kopieren :-) muss mir mal passende codeschnippsel für deine vorschläge googeln....

Titel: Re: Filedialog in Tabelle/Formular einbauen
Beitrag von: daolix am Dezember 21, 2011, 01:50:21
Hallo

erstelle HForm und UForm wie von dir gewollt und verbinde beide.
den von dir oben geposteten oder von dir veränderten code hinterlegst du hinter einen Button klick, welchen du im UForm erstellst.

in der do/loop schleife fügst du die Daten ungefähr wie folgt an




....
....
....
         dim rs as dao.recordset
         set rs = me.recordset
         'Loop through each file selected and add it to our list box.
         For Each varFile In .SelectedItems
                rs.addnew
                       rs![Fremdschlüssel] = me.parent.form![primärschlüssel_im_HForm]
                       rs![DeinPfadFeld] = varfile
                rs.update
         Next
....
....
....