Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Thomas55 am August 04, 2016, 10:30:59

Titel: Datensatz mit Schleife bearbeiten
Beitrag von: Thomas55 am August 04, 2016, 10:30:59
Hallo Mania-Gemeinde,
seit Januar 16 hab ich mich mit Hilfe des Forums Stück für Stück in Access reingearbeitet und baue an einer Access-DB, die inzwischen recht gut läuft. Mein Chef hat aber immer neue Wünsche. Jetzt hab ich eine Tabelle mit >100 Feldern. Ein Feld aller Datensätze kann ich mit VBA bearbeiten, aber wie bearbeite ich alle (oder viele) Felder EINES Datensatzes des zugehörigen Formulars mittels einer Schleife? vereinfachtes Beispiel: Anwender gibt ein "55" --> Die ersten 55 Felder erhalten ein "A", die anderen ein "B". Wie geht das mit VBA? (VBA kann ich einigermaßen, von SQL hab ich Null Ahnung)
Vielen Dank und Viele Grüße - Thomas
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: PhilS am August 04, 2016, 10:41:54
Zitat von: Thomas55 am August 04, 2016, 10:30:59Jetzt hab ich eine Tabelle mit >100 Feldern. Ein Feld aller Datensätze kann ich mit VBA bearbeiten, aber wie bearbeite ich alle (oder viele) Felder EINES Datensatzes des zugehörigen Formulars mittels einer Schleife? vereinfachtes Beispiel: Anwender gibt ein "55" --> Die ersten 55 Felder erhalten ein "A", die anderen ein "B".
Diese Anforderung hört sich für mich sehr seltsam an und ich habe die Vermutung, dass ein Datenbankdesignfehler dahinter steckt.

Du kannst die Felder eines Recordsets in einer For-Next-Schleife durchlaufen, wenn du nur den Index der Felder verwenden möchtest, um diese Anzusprechen.

Dim i as long
For i=0 to 54 ' bei 0 begonnen, daher nur bis 54
  me.Recordset.Fields(i).Value = "A"
Next i


Vielleicht gibt es aber eine viel bessere Lösung, wenn du dein DB-Design änderst. Dazu müsstest du mehr über den Hintergrund der Funktionalität schreiben.
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: MzKlMu am August 04, 2016, 10:42:50
Hallo,
mit einer Aktualisierungsabfrage kannst Du Felder direkt ändern.

Aber, ein dickes Aber:
ZitatAnwender gibt ein "55" --> Die ersten 55 Felder erhalten ein "A", die anderen ein "B".
bei einem solchen Vorhaben dürfte das Datenmodell erheblich falsch sein, aber wirklich erheblich.
Auch Accesstabellen mit mehr als 100 Feldern stellen das Datenmodell in Frage. 20 Felder in einer Tabelle sind schon viel. Hier dürften noch weitere Tabellen fehlen.

Kannst Du mal den Hintergrund des Vorhabens erläutern ?
Warum sind das so viele Felder, was steht denn da drin ?
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: Thomas55 am August 04, 2016, 12:13:31
Hallo Klaus, vielen Dank für die pfeilschnelle Antwort!
Wir verwalten Projekte bis max. 2025. Laufzeit also 10 Jahre mit je 12 Monaten. Es soll für jede Person (etwa 100) für jeden der 120 Monate eine von nur 2 oder 3 möglichen Zahl im Voraus notiert werden und später geändert werden können. Beispiel: Anna Lüse: bis 5/2017: 20%, dann bis 12/2018: 25%, Rest 0% usw. Da die DB recht umfassend ist (~ 60 abf und 100 frm) und schon läuft, kann man nur noch ändern, aber nichts Neues basteln.
(Und es ist meine erste DB überhaupt! Hab erst im Januar mit Access angefangen. Folglich New³bie)
Viele Grüße - Thomas
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: Thomas55 am August 04, 2016, 12:20:40
Hallo PhilS, ich glaube das ist die Lösung! Werde es sofort testen. VBA-Schleifen sind keine Hürde, ich wusste nur nicht, wie ich die Felder des Datensatzes per Index anspreche.
Gruß Th.
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: MzKlMu am August 04, 2016, 12:30:51
Hallo,
sorry, aber ein solcher Aufbau ist für eine Datenbank völlig unbrauchbar, aber wirklich völlig. Zumal da mit Sicherheit auch Auswertungen gemacht werden. So solltest Du erst gar nicht weiter machen, es wäre schade für die Zeit.
Die Zahlen für die Projekte müssen in Datensätzen erfasst werden (in einer extra Tabelle).
ZitatEs soll für jede Person (etwa 100) für jeden der 120 Monate
das gibt dann 100*120 (12000) Datensätze mit den 3 Feldern für die Zahlen. Die Tabelle benötigt einen Fremdschlüssel zum Projekt, einen Fremdschlüssel zur Person, ein Feld für JahrMonat, die 3 Felder für die Zahlen und einen eigenen Primärschlüssel. Das sind genau 7 Felder, mehr braucht es nicht, für immer und ewig, neue Zahlen sind neue Datensätze. Diese 7 Felder sind Ersatz für die 110 Felder Deiner jetzigen Tabelle.

Und das:
Zitat(~ 60 abf und 100 frm)
spricht auch nicht für einen korrekten Aufbau der DB. Wozu brauchst Du 100 Formulare, für jede Person eines ?

DB umbauen, es gibt keine Alternative.
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: Thomas55 am August 04, 2016, 14:41:26
Liebe Leute draußen in der Welt,
hadert doch bitte nicht so mit mir Computersaurier! Als ich geboren wurde, gab es die ersten Radios mit Transistor! Integrierte Schaltkreise, Prozessoren oder PCs waren noch längst nicht erfunden. Ich habe die Informatik nicht als Kind gelernt, wie es meine Kinder getan haben und jetzt meine Enkel tun! Es wird sicher bessere Lösungen geben, aber wer baut mir die? Einen Grundlehrgang für Access hab ich besucht, mehr ging nicht. Hab absolut Null Erfahrung mit DB. Mein Chef hat eine DB verlangt, also musste ich mich hineinarbeiten. Ich hab niemanden in unserer Firma, der davon Ahnung hat. Koche komplett im eigenen Saft. Meine DB hat knapp 100 Formulare für diverse verschiedenste Ein- und Ausgaben. Es werden hunderte Personen in diversen Gruppierungen und Funktionen verwaltet, sehr viel Geld registriert (nur Controlling - es kann nicht zu finanziellen Problemen führen) und alles funktioniert!!! Früher haben wir das mit ungeheuer vielen Excel-Tabellen erledigt. Das soll vereinfacht und in eine einzige DB zusammengeführt werden. Die wichtigsten Excel-Tabellen - da wo's um Geld geht - laufen zur Sicherheit noch einige Zeit parallel. Meine DB mag vielleicht nicht den Standards einer professionellen DB entsprechen (vermutlich denke ich noch zu sehr im Excel-Maßstab), aber sie läuft! und meine Kollegen können komplett ohne Access-Kenntnisse damit arbeiten. Sie ist sicher nicht optimal, aber es ist meine allererste "Nicht-Übungs-DB".
Viele Grüße - Th.
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: MzKlMu am August 04, 2016, 15:12:47
Hallo,
dieser Aufbau ist eine Exceltabelle und somit für eine Accesstabelle völlig ungeeignet. Man kann keine Exceltabelle ohne Veränderungen in Access verwenden.
ZitatEinen Grundlehrgang für Access hab ich besucht,
wenn Du den vorliegenden Tabellenaufbau in einem Grundlehrgang gelernt hast, lasse Dir Dein Geld wieder geben. Und in einem Forum hast Du einen solchen Aufbau garantiert auch nicht gesehen.
ZitatDas soll vereinfacht und in eine einzige DB zusammengeführt werden.
das hast Du aber für Access  nicht vereinfacht, sondern eher verkompliziert. Access kann damit nicht umgehen. Du wirst auf Dauer mit einem solchen Aufbau nur Probleme haben. Eine Datenbank erfordert einen normalisierten Aufbau, besonders dann, wenn man Auswertungen machen will. So wie das jetzt ist, kannst Du auf einfachem Weg noch nicht mal eine Summe bilden über einen Teil der Felder eines Datensatzes. Anders wie bei Excel geht das bei Access nicht. Summe nur mal als Beispiel um die Probleme zu verdeutlichen.

Übrigens, habe auch ich Dir eine Lösung angeboten, nämlich eine Aktualisierungsabfrage. Da kannst Du ohne Schleife viele Felder auf einen Schlag ändern.

Und was zum Nachlesen:
https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/

PS:
Ich habe auch nicht Informatik studiert und als ich geboren wurde, gab es noch nicht mal Transistoren, da war der 2. Weltkrieg noch im Gange.  ;D
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: Thomas55 am August 04, 2016, 16:10:49
Hallo Klaus,
ich zieh den Hut vor Dir! Respekt! Ich dachte bisher, um Magie (also sowas wie Access) vernünftig zu erlernen, müsste man so jung wir Harry Potter sein. Und nun hast Du noch ein paar Tage mehr erlebt!
Viele Grüße - Th.
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: MaggieMay am August 04, 2016, 16:19:05
Naja, Klaus macht das ja auch nicht erst seit gestern... ;-)
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: Thomas55 am August 05, 2016, 09:50:09
Liebe Experten,
es funktioniert! Ein herzliches Dankeschön an alle - im Besonderen an PhilS, denn sein heißer Tipp hat das Problem gelöst! Vielen Dank auch an alle Kritiker, denn Eure Meinungen sorgen vielleicht mit dafür, dass  unsere IT-Gruppe außer Hardware-Spezialisten auch mal einen Software-Experten erhält, so dass entsprechende Probleme nicht von solchen Laien wie mir gelöst werden müssen.
Viele Grüße - Thomas
Titel: Re: Datensatz mit Schleife bearbeiten
Beitrag von: Beaker s.a. am August 10, 2016, 14:06:25
Hallo Thomas,
Auch wenn's jetzt "läuft", oder gerade deshalb würde ich (Lust und Zeit vorausgesetzt)
mich trotzdem parallel dazu damit beschäftigen die DB mit den hier genannten Ansätzen
(korrekt normalisiertes Datenmodell) neu aufzubauen. Er wird nämlich (früher oder später)
der Tag kommen, wo Cheffe sagt "wir hätten aber gerne noch dies und das, oder jene
Auswertung", und dann kommst du wieder hier an (was natürlich gerne gesehen wird),
und wirst mit den gleichen Kritiken am DM konfrontiert.
Und evtl. gibt es dann auch keine einfache Lösung mehr, eben weil das DM nicht stimmt.
Denk drüber nach.
gruss ekkehard