Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Feldinhalt übernehmen aus vorherigem Datensatz wenn Kriterium erfüllt

Begonnen von homersektor7g, Januar 30, 2020, 13:25:36

⏪ vorheriges - nächstes ⏩

homersektor7g

Hallo zusammen,

aus einer Textdatei lese ich eine Tabelle in Access ein und versuche Informationen darin zur späteren Analyse aufzubereiten.
Im Grunde geht es darum alle Elemente in einem Bild zählbar zu machen. Leider sind sie im zu lesenden Code nachfolgend geschrieben. Den Namen des Bildes kann ich extrahieren und auch die für mich relevanten Elemente darin. Die Zuordnung zueinander möchte ich gerne erreichen in dem der Name des Bilder so lange untereinander geschrieben wird, bis der nächste Bildname erkannt wird.

Wie kann ich das mit VBA in Access oder SQL erreichen? Ein Beispiel dafür habe ich als Exceldatei angehangen.

ID   |   RELEVANZ      |   ROHDATEN   |   BILDNAME      |   ZIEL
4   |   x         |   EB001:model   |   EB001      |   EB001
29   |   _         |   element01      |   _         |   EB001
34   |   x         |   element02      |   _         |   EB001
35   |   _         |   element03      |   _         |   EB001
59   |   x         |   element04      |   _         |   EB001
...
1974   |   x         |   EB002:model   |   EB002      |   EB002
1997   |   x         |   element01      |   _         |   EB002
2006   |   _         |   element02      |   _         |   EB002
...

DF6GL

Hallo,

warum wählst Du Access für eine solche Aufgabe?

Ich würde in Excel bleiben und die Zellen mit einem Scheifenindex von oben nach unten durchlaufen und jedes Mal den Inhalt der Spalte D ("Bildname"), ob die leer ist oder einen bestimmten Inhalt hat.   (Bedeutet "_" leer?). Wenn dann ein Bildname gefunden ist, schreibst Du fortlaufend diesen Bildnamen in die darauf folgenden Zellen.

In Access müsste das ähnlich vonstatten gehen, wäre aber mit mehr Aufwand wegen dem Import und Export der Text-(oder Excel-) Datei verbunden.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

homersektor7g

Vielen Dank für den Tip.
Ich möchte gerne weiter Access verwenden, um die Vorteile einer relationalen Datenbank nutzen zu können. Der beschriebene Schritt ist nur ein Teil der Analyse.

DF6GL

Hallo,


habe bereits angedeutet, das die Schleifenmethode auch in Access anzuwenden wäre. Soll heißen, importiere die Datei in eine Access-Tabelle und (sofern der Tabelleninhalt anschließend  dem Excel-Sheet entspricht)  durchlaufe die Datensätze mit einer Recordset-Schleife. Prüfe dabei das Feld Bildname auf Inhalt und schreibe den gefundenen Namen in den nächsten Datensatz solange, bis dieser nicht leer ist. Dieser Bildname wird dann in die weiteren DS mit leerem Bildnamen geschrieben.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

homersektor7g

Ich habe bereits dazu versucht ähnliche Probleme zu suchen und zu verstehen, wie man das macht.
Bisher bin ich gescheitert. Welche Aktion ruft die Schleife auf? Bisher bin ich es gewohnt sowas zur Laufzeit aufzurufen, sprich beim Ausführen einer Abfrage. Meine erste Idee war eine Funktion zu schreiben, die beim Öffnen der Abfrage ausgeführt wird, aber das hieße ja, dass die Funktion in jedem Datensatz die Schleife durchläuft? Müsste man das auf eine Tabelle anwenden und ein neues Feld beschreiben?

DF6GL

Hallo,

die Funktion, die die Datensätze mit einer Recordsetschleife durchsucht, innerhalb einer Abfrage aufzurufen, ist hier fehl am Platz.

Dabei wäre SQL involviert und das ist der falsche Schauplatz.

Richtig ist, die Funktion auf Knopfdruck (Klick auf einen Formular-Button) auszuführen. Dieser Klick erzeugt ein Event (Ereignis) an das eine (Ereignis-) Prozedur abgehängt werden kann und somit diese Prozedur startet.  Man kann auch eine Public-Prozedur direkt aus dem VBA-Editor starten, sofern sie keine Argumente besitzt.

Ob für das Schreiben in die selbe Tabelle oder das Kopieren in eine andere Tabelle  verwendet wird, hängt vom Konzept ab.

Für Dich wäre es durchaus sinnvoll, die korrigierten DS in eine zweite Tabelle zu schreiben und damit die Ursprungstabelle unangetastet zu lassen.  Wenn sich ein (Programm-)Fehler eingeschlichen hat, sind wenigstens die Ausgangsdaten nicht zerstört.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

homersektor7g

Am liebsten hätte ich es beim Öffnen einer Abfrage ausgeführt, weil es dann ohne manuellen Eingriff eines Benutzers auskommen würde.
Der vorausgehende Teil der Analyse, beispielsweise die Aufbereitung der gelesenen Rohdaten erledige ich in einer Abfrage und die weitere Behandlung in darauf aufbauenden Abfragen.

Ich muss das dann konzeptionell nur anders handhaben. Ich würde natürlich wie beschrieben auch mein Ursprungsfeld nicht verändern, um den Bezug nicht zu verlieren. Ich habe mir ein Beispiel gesucht in dem die Datensätze einer Tabelle in einer Schleife behandelt werden, um dann wieder in die Tabelle geschrieben zu werden. Ich werde es heute Abend mal ausprobieren.

Vielen Dank soweit.

DF6GL

Hallo,

ZitatAm liebsten hätte ich es beim Öffnen einer Abfrage ausgeführt, weil es dann ohne manuellen Eingriff eines Benutzers auskommen würde.

Warum bestehst Du auf einer Abfrage? Das ist konzeptionell sinnlos.

Wenn Du eine Funktion beim Start der DB automatisch aufrufen willst, dann benutz ein Makro mit "Ausführen Code", dem Du den Namen Autoexec gibst.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

homersektor7g

ZitatDas ist konzeptionell sinnlos.
Wer möchte das beurteilen?

Dieses Werkzeug in Form von einer Datenbank richtet sich an die Personen in meinem Umfeld, die zwar in der Lage sind Abfragen zu bauen, aber keinen VBA Code zu schreiben. Aus diesem Grunde wäre es wünschenswert bei Abfragen und den dort zu benutzenden Funktionen zu bleiben.

Leider funktioniert es nicht auf diese Weise und ich habe es über den DAO Zugriff gelöst, nachdem ich herausgefunden habe wie der rs.edit keinen Fehler mehr für die 650000 Datensätze produziert.
Vielen Dank für die Hilfe.