Hallo Zusammen,
wie würdet Ihr vorgehen, wenn die Datenbank bereits 3 Textfelder in den Stammdaten hat, nun aber die Benutzer der Datenbank gerne im Export in Excel ein weiteres Feld hätten.
Das neue Feld sollte gefüllt werden mit:
- wenn gefüllt mit Textfeld1
- wenn aber Textfeld2 gefüllt ist, dann damit
- und wenn Textfeld3 gefüllt ist, dann damit
Ich hätte nun vorgehabt, in den Stammdaten ein 4tes Feld aufzunehmen, die auch in den Formularen anzeigen zu lassen, ggfls. gesperrt
Via VBA dies füllen zu lassen, nur bei welchem Ereignis? Denn dies sollte bei allen vorhandenen Datensätzen bereits erfolgen
Hallo,
Zitatwenn gefüllt mit Textfeld1
wenn aber Textfeld2 gefüllt ist, dann damit
und wenn Textfeld3 gefüllt ist, dann damit
das musst Du mal genauer erklären.
Was ist, wenn Feld2 und Feld3 gefüllt ist?
Solche Vorhaben deuten auch auf ein zu optimierende Datenmodell.
Erzähle mal was zum Hintergrund.
Die Schüler können wohl bis 3 Schulen zugewiesen bekommen, die Lehrer benötigen im Export ein Feld zum filtern in dem immer nur die zuletzt zugewiesene Schule enthalten ist.
Sprich wenn Schule3 gefüllt wurde, dann dessen Wert,
wenn Schule3 leer, dann den Wert von Schule2
Hallo,
hier ist eigentlich eine Tabelle erforderlich in der die Schüler den Schulen zugewiesen werden. Das ist eine n:m Beziehung zwischen Schule und Schüler.
Diese Tabelle benötigt einen Fremdschlüssel zur Schule und einen FS zum Schüler.
Das sind dann maximal 3 Datensätze und keine 3 Felder. Die Tabelle braucht dann noch ein Datumsfeld.
Das Datenmodell sollte überarbeitet werden.
Kannst Du mal ein Bild des Beziehungsfensters zeigen.
Leider ist die DB nicht so aufgebaut worden.
Die gelb markierten Felder sind die jetzt gefüllten, welche seit Jahren genutzt werden.
Die grün markierten hatte ich hinzugefügt, als Idee diese aus einen der ersten Drei zu füllen
Hallo,
Hallo,
ZitatLeider ist die DB nicht so aufgebaut worden.
Das ist unerheblich... Ändere es.
Wenn die Db nicht nach den Regeln der Normalisierung (siehe u. st. Links 1, 1a, 1b) aufgebaut wird, wirst es immer(!) Schwierigkeiten geben.
ZitatIch hätte nun vorgehabt, in den Stammdaten ein 4tes Feld aufzunehmen, die auch in den Formularen anzeigen zu lassen, ggfls. gesperrt
Via VBA dies füllen zu lassen, nur bei welchem Ereignis? Denn dies sollte bei allen vorhandenen Datensätzen bereits erfolgen.
Allein das zeigt, dass der Teufel mit dem Beelzebub ausgetrieben werden soll und die Db in keiner Weise nichts mit einer relationalen Datenbank gemein hat.
Trotzdem:
erst- und einmalige Änderung/Anpassung kann mit einer Aktualisierungsabfrage geschehen.
Weitere anschließende Bearbeitung ("Berechnung") im Formular beim Ereignis Form_BeforeUpdate.
Zitat von: Weissnix81 am April 02, 2019, 16:47:35
Das neue Feld sollte gefüllt werden mit:
- wenn gefüllt mit Textfeld1
- wenn aber Textfeld2 gefüllt ist, dann damit
- und wenn Textfeld3 gefüllt ist, dann damit[/l][/l]
Ich teile die hier bereits geäußerten Bedenken bzgl. deines Datenmodells.
Die reine Problemstellung hier ließe sich aber hier mit einer Abfrage und der
Coalesce-Funktion relativ gut lösen. Ich habe kürzlich ein Video zu
Coalesce bzw. dem ParamArray in VBA (https://www.youtube.com/watch?v=GfuBFON6aLQ) gemacht. Die dort gezeigte Funktion kannst auch direkt aus dem Englischen Text zur Coalesce Function (https://codekabinett.com/rdumps.php?Lang=2&targetDoc=coalesce-function-paramarray-keyword-vba-argument) kopieren.
[/list]
Hallo,
Oh je, was hat man da alles falsch gemacht.
Das ist eine Exceltabelle und keine Datenbank.
Und selbst bei dem falschen Aufbau hat man die eine Beziehung auch noch falsch gemacht.
Ein ganz schlimmer Fehler ist auch der fehlende Primärschlüssel.
Die eine angelegte Beziehung ist so auch wenig sinnvoll und relativ nutzlos.
Hier wurden die wichtigsten Regeln (Normalisierung) einer Datenbank einfach komplett ignoriert. Hier fehlen noch einige Tabellen.
Das solltest Du anpacken und umbauen. Hier wirst Du immer weider Probleme bekommen.
Wenn Du bei dem Aufbau bleiben willst, hat Dir Philipp eine Lösung gezeigt.
Das wird aber über eine Abfrage gemacht und die Abfrage wird dann exportiert.
Die bereits angelegten Felder (die grünen) kannst Du in der Tabelel wieder ersatzlos löschen.
Guten Morgen, vielen Danke für euren Input und Hinweis. Die "Datenbank" wurde vor 1,5 Jahren vom Vorgänger gemacht.
Ich werde mich versuchen diese zu Normalisieren und umzubauen, wobei ich dies auch noch nicht gemacht habe