Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Verzeichnisse auslesen und in Tabelle ablegen

Begonnen von HabNeFrage, Januar 21, 2019, 15:00:49

⏪ vorheriges - nächstes ⏩

HabNeFrage

Hallo, ich habe eine Bitte,
könnte mir jemand die angehängte DB so ändern, das die auszulesenden Verzeichnisse aus der Abfrage "AbfFealligkeitErmitteln02" und dort aus dem Feld "Datenquelle" entnommen werden?
Die Tabelle "tbl_ist_nur_eine_Hilfe" ist was der Name schon sagt, nur eine Datenquelle auf die ich mit meiner Abfrage zugreife. Die Abfrage holt sich später alles mögliche zusammen, heißt aber dann so.

Die Ursprungsdatei ließt immer nur ein Verzeichnis ein, ich benötige aber mehrere.
Die Einträge im Feld Datenquelle sind einfach nur Testeinträge und können von Euch frei verändert werden.

Der Button "Meine Variante" im Formular ist nur Testhalber da und soll später wegfallen. Das mache ich dann selber.
Eigentlich ist es nicht meine Art das ich frage das mir das "fertig" geliefert wird.
Ich tüftle eigentlich gern selber. In dem Fall hängt mir die Zeit im Nacken.  :-\

Lachtaube

Nun, dann sorge dafür, dass nur in der ersten Runde die Dateien gelöscht werden.
Grüße von der (⌒▽⌒)

HabNeFrage

 ??? ich kann Dir gerade gar nicht folgen....
würde es aber sehr gern, denn ich muss wirklich vorwärts kommen.
Ich dachte das ein wirklicher könner hier schmunzelt und in 2min das ganze fertig hat.
Das dachte ich wirklich, denn es gibt in meiner angehängten Datei alles zum einlesen bereits.
Nur das die Auswahl was ausgelesen werden soll über einen Dialog geschieht
und nicht wie ich es vor habe bereits "mundgerecht" in einem Feld vor liegt.
Ich bin aber ein absoluter Anfänger und da muss ich tatsächlich Hilfe in Anspruch nehmen.
Wenn das soweit funktioniert möchte ich es kommentieren und für ein anderes Projekt nutzen.

Lachtaube

Die Argumente kommen aus dem Recordset. Da aber bei jeder Runde das zweite Recordset gelöscht wird, muss nur sicher gestellt sein, dass dies nur am Anfang passiert. Wo liegt sonst das Problem?
Grüße von der (⌒▽⌒)

HabNeFrage

Hallo Lachtaube,
ich dache anfangs Du willst mich.... ich hab Dich tatsächlich nicht verstanden.
Da gibts nur ein Problem. Du schaust auf den Code und weist was da abläuft, ich hingegen.... habe da arge Probleme zu erkennen was Du gerade willst.
Kannst Du bitte den Codeabschnitt mal hier rein kopieren, dann kann ich es vielleicht erkennen.
Ich will mirklich mit machen.

Lachtaube

Vorgekaut.
Private Sub MeineVarianteAufrufen_Click()   'hier will ich meinen Aufruf starten,
                                            'habe aber keine Ahnung wie ich
                                            '"AbfFealligkeitErmitteln02 - Datenquelle"
                                            'da hinein bringe
   Dim rs As DAO.Recordset
   
   CurrentDb.Execute "DELETE tbl_Files.LNR FROM tbl_Files;"
   Me.lst_Files.Requery
   Set rs = CurrentDb.OpenRecordset("select Datenquelle from AbfFealligkeitErmitteln02")
   Do While Not rs.EOF
      ReadFolder rs.Fields(0), "*.*"
      rs.MoveNext
   Loop
   rs.Close
   Me.lst_Files.Requery
End Sub
Grüße von der (⌒▽⌒)

HabNeFrage

#6
Mensch Lachtaube, Du bringst mich zu lachen  ;D
Das hat funktioniert, ich werd bläd. SUPER !

So, an welcher Stelle müsste ich jetzt noch etwas ändern so das ich das Formular nicht mehr benötige.
So das keine Unterverzeichnisse verwendet werden und wie jetzt auch schon alle Dateien verwendet werden (kein Filter).
ReadFolder rs.Fields(0), "*.*"  ist das doch schon, oder?

Muss ich den Code jetzt aus dem Formular Klassenobjekt in ein Modul bringen?
Lege ich dazu ein eigenes an, oder nutze ich z.B. mod_Allgemein? Wäre aus meiner Sicht übersichtlicher wenn es ein eigenes ist, oder?

Lachtaube

Wenn Du den Bezug auf lst_Files löschst, ist die Routine von einem allgemeinen Modul nutzbar.
Grüße von der (⌒▽⌒)

HabNeFrage

#8
Du meinst "Me.lst_Files.Requery" im obrigen Code in der 4. Zeile vom "Private Sub MeineVarianteAufrufen_Click()"?

Ich rufe den dann mit call "Private Sub MeineVarianteAufrufen_Click()" z.B. von wo anders her auf?

Ich habe es jetzt in ein Modul gebracht und die Zeile raus-kommentiert, das funktioniert aber nicht.
Aufrufen tue ich es vorerst (damit nicht über das Formular) mit einem Macro. ausführen Code :MeineNeueVarianteAufrufen()

Private Sub MeineNeueVarianteAufrufen()   'hier starte ich meinen Aufruf
    Dim rs As dao.Recordset
   CurrentDb.Execute "DELETE tbl_Files.LNR FROM tbl_Files;"
   ' Me.lst_Files.Requery
   Set rs = CurrentDb.OpenRecordset("select Datenquelle from AbfFealligkeitErmitteln02")
   Do While Not rs.EOF
      ReadFolder rs.Fields(0), "*.*"
      rs.MoveNext
   Loop
   rs.Close
   Me.lst_Files.Requery
   End Sub

Lachtaube

Grüße von der (⌒▽⌒)

Beaker s.a.

@HabNeFrage
Wie's scheint kommst du hier ja wirklich weiter als im anderen Forum.
Aber, Me.lst_Files.Requery
funktioniert in einem allgem. Modul nicht, - das Form muss komplett
referenziert werden. Entweder als Parameter
Private Sub MeineNeueVarianteAufrufen(ByRef frm As Access.Form)
.
frm.lst_Files.Requery
.

Aufruf vom Form dann mit
Call MeineNeueVarianteAufrufen(Me)
oder direkt
Private Sub MeineNeueVarianteAufrufen()
.
Forms.DeinForm.lst_Files.Requery
.
Das Form MUSS dazu in beiden Fällen offen sein.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

HabNeFrage

#11
Hallo Beaker s.a.,
ja Du hast Recht. Vielleicht bin ich es falsch angegangen. Danke, Du verstehst...
Glücklicher weise hat sich aber eine Lachtaube hier hin verirrt.  ;)
Das sind solche Dinge die Ihr wisst und ich nicht, ich kenne nicht mal den Begriff Refernzieren (in VBA).

"Das Form MUSS dazu in beiden Fällen offen sein." klingt auch nicht so gut.
Wie Du weist will ich das ganze ja ohne Formular mal aufrufen können.

Kommt das daher das ich den Code in dem Klassenobjekt des Formulars stehen habe?
Da kommt das nächste, worauf muss ich achten wenn ich den Code,
wo anders hin bringen will. "funktioniert in einem allgem. Modul nicht, ".... wie Du schreibst.

Oft hänge ich mich selber auf weil ich bestimmte Prinzipien noch nicht kenne.
Und dann das nette Thema Zeit... es ist ja nicht "ich probiere mal" ich muss es auch erfolgreich anwenden.

Lachtaube

Kopiere den Schei.. in ein allgemeines Modul und entferne den Bezug auf lst_Files - und gut ist.
Grüße von der (⌒▽⌒)

Beaker s.a.

@HabNeFrage
Checke gerade erst, dass das hier ein X-Posting ist.  >:(
Lösung im anderen Forum.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

HabNeFrage

#14
Hallo Beaker s.a.

Hier Deine Antwort:
Habe mir deine DB nun mal angeschaut und angepasst.
Geändert habe ich nur den Code im Start-Formular. Alle Änderungen sind
kommentiert. Bei mir läuft die DB jetzt wie gewünscht.
Lässt sich sicher noch weiter verbessern, aber das überlasse ich dir jetzt
mal.
gruss ekkehard

Das hast Du echt gut kommentiert, danke.
Lese gerad "wenn du keinen Button willst rufe die Sub beim Ereignis "Load" auf"
Das Formular wird doch dann gar nicht mehr geladen...

Was mir aufgefallen ist das die Anzahl der gefundenen Dateien nicht mehr richtig angezeigt wird.
Muss mal sehen ob ich das finde.

Ansonsten hatte Lachtaube geschrieben
"Kopiere den Schei.. in ein allgemeines Modul und entferne den Bezug auf lst_Files - und gut ist."
Ich muss das ja machen weil ich die Einlesegeschichte in einer anderen DB nutzen will.
Muss ich erst mal nachsehen welcher Code alles gebraucht wird.
Wenn ich das nicht hin bekomme melde ich mich mal.