Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Neue Spalten in runtime hinzufügen
Gehe zu Seite 1, 2  Weiter
zurück: Acchess2010, Endlosformular, einzelne Datensätze löschen weiter: Besprechung Outlook über Access Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Gerd82
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 08:33
Rufname:

Neue Spalten in runtime hinzufügen - Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo zusammen,

Ich möchte für die user meiner Datenbank eine Endlosdatenbank erstellen. Das ist, was Zeilen betrifft, kein Problem. Nur mit Spalten wird dies problematisch.

Jedes Jahr werden genau 4 Spalten hinzugefügt, die denselben Namen haben. Also zum Beispiel

Code:

Name | Datum | Nummer | Verfahren


Ich würde jetzt gerne per Button dem user erlauben, jedes Jahr 4 neue Spalten hinzuzufügen, die sich im Namen unterscheiden. Also zum Beispiel

Code:

Name 2014 | Datum 2014 | Nummer 2014 | Verfahren 2014 | Name 2015 | Datum 2015 | Nummer 2015 | Verfahren 2015 | ...


Dies würde jedoch erfordern, dass ich dynamische Spaltennamen erzeuge. In Excel wäre das beim Speichern ja z.B. so möglich

Code:

C:\Users\***\Desktop\Test" & " " & Date & ".xls


Sodass die Datei "Test 28.04.2014.xls" usw hieße, also dynamisch benannt wird.

Ist so etwas per VBA für "Alter TABLE .... Add Column" möglich?

Als kurze Zusammenfassung: Ich möchte dynamisch benannte Spalten per Button einfügen, nicht per "alter table... add column".
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Apr 2014, 08:59
Rufname:
Wohnort: Berlin

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo,

das Hinzufügen von Spalten ist der falsche Weg. Erstelle zusätzlich eine Spalte für das Jahr (natürlich nur, wenn es vom Jahr des Felds Datum abweicht bzw. abweichen kann) - und die Daten lassen sich jederzeit nach dem Jahr auswerten.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Gerd82
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 09:15
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo Nouba,

Ich verstehe, was du meinst, aber das ist in meinem Fall unmöglich. Mein Layout sieht ca so aus:

Code:

ID | Merkmal 1 | Merkmal 2 | Merkmal 3 | ... | [b]Name | Datum | Nummer | Verfahren[/b]


Es ändert sich nur der Inhalt der letzten 4 Spalten, d.h. jedes Jahr kopiere ich die ersten X Spalten in eine neue DB und füge die letzten 4 leer hinzu. Da gibt es kein Namensproblem, ich kann jedesmal Name, Datum, etc, benutzen.

Gleichzeitig brauche ich eine Art "Historie" - also eine DB, die die ersten X Spalten anzeigt, inklusive aller jemals erstellten letzten 4 Spalten. Ich nehme also meine aktuelle DB und jedes Jahr, jedes mal wenn meine aktuelle DB kopiert wird, sollen diese 4 Spalten an meine "Historie" angehangen werden.
Idealerweise sieht das dann so aus:

Code:

ID | Merkmal 1 | Merkmal 2 | Merkmal 3 | ... | [b]Name 2014 | Datum 2014 | Nummer 2014 | Verfahren 2014 | Name 2015 | Datum 2015 | Nummer 2015 | Verfahren 2015 | Name 2016 | ...
[/b]


Es ist für den user zu umständlich, wenn ich eine extra Spalte für das Jahr hätte, da in 5 oder 8 Jahren extrem viele Spalten auftreten würden und das Scrollen durch die DB einfach zu viel Zeit in Anspruch nimmt.
KlausMz
Moderator Access


Verfasst am:
28. Apr 2014, 09:34
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo,
das Vorhaben ist in dieser Form völliger Unsinn und widerspricht den Regeln für eine Datenbank. Es verstößt bereits gegen die 1. Normalform.
Wer zur Erfassung neuer Daten neue Felder benötigt hat etwas falsch gemacht.

Zitat:
Es ist für den user zu umständlich, wenn ich eine extra Spalte für das Jahr hätte, da in 5 oder 8 Jahren extrem viele Spalten auftreten würden
da hast Du was falsch verstanden, an der Spaltenzahl ändert sich nie etwas, die bleibt immer gleich. Die Tabelle wird nur einmalig um eine Spalte für das Jahr erweitert, das heißt, die Tabelle besteht einfach aus 5 Spalten, auch noch in 10 Jahren.

Diese eine Tabelle kannst Du dann in beliebiger Form darstellen, z.B. auch als Kreuztabelle mit 2 Jahren nebeneinander oder gefiltert auf ein Jahr oder zwei.

Glaube es uns, es ist eine Sackgasse, drehe rechtzeitig um. Übrigens, bei 255 Spalten ist ohnehin Schluss, mehr kann eine Accesstabelle nicht haben. Reicht zwar eine Weile, bei Deinem Vorhaben, aber trotzdem mal vorbeugend der Hinweis.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Nouba
nicht ganz unwissend :)


Verfasst am:
28. Apr 2014, 09:41
Rufname:
Wohnort: Berlin

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo,

sorry - aber dann gib dem User Excel oder etwas Ähnliches - und importiere bei Bedarf Deine Daten in die DB. Alles andere scheint hausgemachter Murks zu werden.

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.
Gerd82
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 09:48
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo Klaus,

Wahrscheinlich fehlt mir dann ein bisschen das Verständnis, also der Ansatz. Die Zeile, die ich gezeigt habe:

Code:

ID | Merkmal 1 | Merkmal 2 | Merkmal 3 | ... | [b]Name | Datum | Nummer | Verfahren


ist fix, d.h. einer ID, einem Merkmal 1, etc etc, wird ein Name, Datum, Nummer, Verfahren, jedes Jahr zugeordnet. D.h. laut meinem Verständnis müsste ich bei der Lösung, die du meinst, meine (derzeit 600) Zeilen kopieren, an meine DB anhängen und dort dem user die Neueingabe der letzten 4 Spalteneinträge ermöglichen?

Wie bereits gesagt, die ersten X Spalten (abzüglich der letzten 4) sind fix, jedes Jahr, d.h. ich würde sie gerne einfach kopieren, das mache ich derzeit per VBA + SQL (insert into ... select ... from ...). Ich kopier also einfach die Spalten (inkl Einträge, wie gesagt, derzeit 600 Zeilen).

Wie würdest du das Problem lösen, ohne jedes mal neue Spalten hinzuzufügen?

Wie du schon sagtest, es fehlt mir der Ansatz.


Edit: Oder meinst du eine neue DB für jedes Jahr und dann eine Kreuzabfrage durch alle Tabellen hindurch?
KlausMz
Moderator Access


Verfasst am:
28. Apr 2014, 10:09
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo,
Auch "Merkmal 1 | Merkmal 2 | Merkmal 3" deutet bereits auf einen völlig falschen Aufbau hin. Das sind sogenannte Aufzählungsfelder (..1, ..2, ..3) die ebenfalls gegen die Normalisierungsregeln verstoßen und in einer Datenbank nichts zu suchen haben.

Hier fehlen noch weitere Tabellen, vermutlich etwa so:

- Merkmale (je Merkmal ein Datensatz
- Personen (nur die reinen Personen)
- Kombination Merkmal zu Person mit Jahr

Wie hängt das mit dem Verfahren zusammen?

Ich habe aber Deinen Tabellenaufbau noch nicht richtig verstanden, bitte besser beschreiben.

Du baust hier Exceltabellen aber keine Datenbanktabellen.

Zitat:
Oder meinst du eine neue DB für jedes Jahr
nein, natürlich nicht, das wäre ja noch falscher.

Du solltest Dich mit den Grundlagen zu Access beschäftigen.

Zur Datenmodellierung/Datenbankstruktur findest Du hier weitere Infos:
Dokumente zur Datenmodellierung
Datenmodell entwickeln: Welche Tabellen und Beziehungen?
Relationale Datenbanken, Eine Einführung

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Gerd82
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 10:51
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo Klaus,

Danke für die Tipps, aber ich stelle das Ganze hier etwas anonymisiert dar - meine Datenbank macht so schon Sinn und wird auf meinem Formular ausgewertet. Es ist definitiv nicht eine Excel-Datei. Razz

Es geht hier nicht um Personen, sondern Produktklassen. Tausende Produkte zu je einer Klasse zugeordnet, die Klassen hier dargestellt, einmal pro Jahr. Diese "Merkmale" sind völlig unterschiedliche Dinge, die nicht einmal dieselbe Kategorie haben und nichts miteinander zu tun haben. Jede Spalte dieser DB ist eine Tabelle, die auf meinem Formular zusammengefasst werden. Genau dies Formular möchte ich stets beibehalten.

Soweit ich es sehe, ist es (um eine Historie zu haben) notwendig, eine neue DB, für eben die 4 sich ändernden Spalten, jedes Jahr zu erstellen. Es sei denn, ich kann meinem Formular irgendwie sagen, dass es, wenn =Year() nicht mehr 2014 ist, eben diese 4 Spalten sich zurücksetzen lassen kann, ohne, dass die alten Einträge gelöscht werden. Nur müsste all dies jedes Jahr möglich sein, ohne, dass ich als Admin igendetwas tun muss.

Oder aber, ich wage mich in Neuland und versuche, eine neue DB für die 4 letzten Spalten jedes Jahr zu erstellen, diese nach =date() zu benennen und deren Spalten in mein Formular einzulesen - aber de facto hab ich keine Ahnung, wie das ginge.
KlausMz
Moderator Access


Verfasst am:
28. Apr 2014, 11:06
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo,
für die Merkmale ist eine eigene Tabelle erforderlich je Merkmal ein Datensatz. In diese Tabelle muss dann ein Fremdschlüssel zur jetzigen Tabelle.
Du kannst auf diese Art und Weise beliebig viele Merkmale zu einem Produkt erfassen.

Zitat:
Jede Spalte dieser DB ist eine Tabelle,
das ist die nächste Katastrophe. Laughing

Zitat:
Es ist definitiv nicht eine Excel-Datei
das ist mir klar, aber die Tabelle ist wie eine Exceltabelle aufgebaut und somit für Access unbrauchbar.

Du solltest Dich mit den Grundlagen beschäftigen, das wird so nichts.

Es gibt eine relativ einfache Regel:

Wenn es in einer DB die Notwendigkeit gibt wegen neuer Daten Spalten hinzufügen zu müssen, ist das Datenmodell der DB mit ziemlicher Sicherheit falsch.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Gerd82
Im Profil kannst Du frei den Rang ändern


Verfasst am:
28. Apr 2014, 11:18
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo Klaus,

Ich weiß, was du meinst, aber dies ist zwingend erforderlich für diese DB. Das hat firmeninterne Gründe, da viele Abteilungen und Leute (die sonst dieselben Daten editieren würden) involviert sind. Die DB ist bereits aufgeteilt, keine Sorge, aber in diesem Fall musste es so gelöst werden.

An sich funktioniert alles wie gewünscht, nur soll nun, statt wie bisher in Excel ausgelagert, in einer Access DB die Historie geführt werden. Bisher hab ich in eine Exceldatei die letzten 4 Spalten exportiert.

Ich möchte mich dennoch für die Hilfe bedanken, ich werde mal überlegen, wie ich mit diesen 4 Spalten verfahren kann. Vielleicht kann ich mit einem Filter arbeiten..
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
28. Apr 2014, 15:17
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo,

zwingend erforderlich ist lediglich, eine Datenbank wie eine solche aufzubauen, wenn man nicht ganz schnell in ein Datenchaos kommen will.

Als Anlage habe ich Dir mal schnell eine Datenbank zusammengebastelt, die zeigt, wie so etwas organisiert werden kann. Auch hier ist natürlich nicht erforderlich, für jede Abteilung eine eigene Datenbank zu verwenden, denn Du müßtest für Auswertungen die Daten wieder zusammenbringen und jeder hätte bis dahin eigene Stammdaten erstellt, was dann kaum überein zu bringen ist.

Der richtige Ansatz ist, der Datenbank einen Userlogin zu verpassen (was eine ganz simple Personentabelle mit Passwort sein kann, wenn es nicht um Hochsicherheit geht) und so zu unterscheiden, wer mit welchen Daten arbeiten darf (meine Datenbank müßte dazu natürlich erweitert werden, aber das Prinzip ändert sich dadurch nicht).

Die Datenbank enthält gerade mal ein paar Zeilen Code, lediglich um die Formulare im Startformular öffnen zu können. Der Rest ist alles Access-Automatismus. Die Controlnamen alle anzupassen, habe ich mir gespart, normalerweise würde ich jedem Control, das Daten bearbeitet, noch ein "ctl" als Prefix voranstellen und den Beschriftungs-Controls ein "lbl".

Was Du hiermit machen kannst:
  • eine beliebige Menge wiederverwendbarer Merkmale erstellen
  • eine beliebige Menge wiederverwendbarer Verfahrensarten erstellen
  • eine beliebige Menge Verfahren erstellen, der je eine Verfahrensart zugeordnet werden kann und über Beschreibung mit einem sehr langen Text genau erläutert werden kann (und zwar nur einmal, wie in einer Datenbank üblich)
  • eine beliebige Menge Produktklassen erstellen
  • eine beliebige Menge Produkte erstellen, wobei jedes Produkt hier je einer Produktklasse zugeordnet werden kann. Sollen einem Produkt auch mehrere Produktklassen zugeordnet werden können, so kann man eine m:n-Tabelle hinzufügen, wie in den Beispielen für Produktklassen zu Merkmale etwa.
  • jeder Produktklasse kann eine beliebige Menge Merkmale hinzugefügt werden, wobei Merkmale in verschiedenen Produktklassen wiederverwendet werden können und die Menge so auch variieren kann.
  • jeder Produktklasse können eine beliebige Menge wiederverwendbarer Verfahren zugeordnet werden, was Deiner History entspricht. Als Nummer habe ich einfach das ID-Feld verwendet, aber das kann man natürlich anders handhaben, wenn es eine spezielle Nummer sein soll.

Da Du nun eine genaue Zuordnung hast, kannst Du so hinterher auch beliebige Auswertungen fahren, die so eine Datenbank erst sinnvoll machen. Beispielsweise kannst Du alle Produkte listen, die einer bestimmten Produktklasse angehören, aber ebenso auch alle Produkte, die ein bestimmtes Merkmal gemeinsam haben (was bei Deiner Tabellenstruktur ein extremer bis unmöglicher Aufwand wäre). Du kannst auch alle Produkte listen, die jemals mit einem bestimmten Verfahren verwendet wurden, oder alle Verfahren eines Produktes ab oder zu einem bestimmten Datum usw.

Normalisierung ist also nicht nur, um Tabellentheoretiker zu befriedigen, Du siehst an diesem praktischen Beispiel, daß die Daten nun nach Belieben anders ausgelesen und in Zusammenhang gebracht werden können, was die eigentliche Macht der Datenbanken darstellt (Stichwort: Data Mining).

Gruß

Christian

PS.: Kann leider keine Datei hochladen, das Forum spinnt wieder rum und behauptet, MDB hochladen sei verboten. Auch die Umbenennung auf TXT ging nicht, gleiche Fehlermeldung. Wenn Du mir Deine Mailadresse per PN schreibst, schicke ich Dir die Datei zu.
MissPh!
Office-VBA-Programmiererin


Verfasst am:
28. Apr 2014, 16:10
Rufname:
Wohnort: NRW

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo Christian,

du solltest die Datei zippen vor dem Hochladen, dann klappt's bestimmt.

Es wäre doch schade, wenn dein Beispiel der Allgemeinheit verloren ginge. Smile

_________________
Gruß MissPh!


Zuletzt bearbeitet von MissPh! am 28. Apr 2014, 16:11, insgesamt einmal bearbeitet
Gast



Verfasst am:
28. Apr 2014, 16:11
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Zitat:
Kann leider keine Datei hochladen, das Forum spinnt wieder rum und behauptet, MDB hochladen sei verboten.

Question Rolling Eyes
War es das nicht schon immer?
Mit gepackten Dateien hatte ich noch nie Probleme.

HTH
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
28. Apr 2014, 16:26
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hallo zusammen,

üblicherweise packe ich eine Datei immer zuerst, bevor ich sie hochlade, also Zip hatte ich als erstes probiert, da gab es nur einen lapidaren "Upload Error". Keine Ahnung, was da los ist, mein Quota hat auch noch genug Platz.

Muß ich wohl einen anderen Upload-Ort suchen..Smile

Gruß

Christian
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
28. Apr 2014, 16:35
Rufname:

AW: Neue Spalten in runtime hinzufügen - AW: Neue Spalten in runtime hinzufügen

Nach oben
       Version: Office 2007

Hab's jetzt mal hier hochgeladen, vielleicht kann ja einer von Euch die Datei hier hochladen, dann kann man sehen, ob der Upload ein generelles Problem hat:
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Trennung von Zahlen in Spalten 6 Magnum1065 3219 06. Okt 2005, 08:39
Magnum1065 Trennung von Zahlen in Spalten
Keine neuen Beiträge Access Tabellen & Abfragen: verknüpfung zweier spalten in einer tabelle 4 teja 3796 08. Jun 2005, 09:34
teja verknüpfung zweier spalten in einer tabelle
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage eines Parameters aus mehreren Spalten gleichzeitig 3 Chrono_Trigger 662 21. Apr 2005, 14:24
Willi Wipp Abfrage eines Parameters aus mehreren Spalten gleichzeitig
Keine neuen Beiträge Access Tabellen & Abfragen: Zusammenrechnen von Spalten 1 Totengraeber87 569 12. Apr 2005, 20:53
lothi Zusammenrechnen von Spalten
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von mehreren Spalten 4 onkelfossy 988 05. Apr 2005, 09:01
onkelfossy Abfrage von mehreren Spalten
Keine neuen Beiträge Access Tabellen & Abfragen: Namensvergabe für neue Tabelle nach Tab-Erstellungsabfrage? 0 flatron 403 03. März 2005, 16:48
flatron Namensvergabe für neue Tabelle nach Tab-Erstellungsabfrage?
Keine neuen Beiträge Access Tabellen & Abfragen: Spalteninhalte trennen oder Spalten einzeln importieren 1 bjen 1211 28. Jan 2005, 13:54
lothi Spalteninhalte trennen oder Spalten einzeln importieren
Keine neuen Beiträge Access Tabellen & Abfragen: Kreuztabelle, auch leere Spalten anzeigen möglich? 1 Gast 1368 23. Jan 2005, 19:11
Hinrich Kreuztabelle, auch leere Spalten anzeigen möglich?
Keine neuen Beiträge Access Tabellen & Abfragen: Spalten in Tabelle löschen wenn ohne Inhalt 7 Zoran 776 14. Jan 2005, 16:33
Skogafoss Spalten in Tabelle löschen wenn ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Duplikatsuche über 2 Tabellen und 2 verschiedenen Spalten 1 bekirok 1273 11. Nov 2004, 18:45
Skogafoss Duplikatsuche über 2 Tabellen und 2 verschiedenen Spalten
Keine neuen Beiträge Access Tabellen & Abfragen: Durchschnittsberechnung über mehrere Spalten 1 IT-Studentin 1379 10. Nov 2004, 10:27
stpimi Durchschnittsberechnung über mehrere Spalten
Keine neuen Beiträge Access Tabellen & Abfragen: In Abfrage nachträglich neue Tabelle einfügen 2 Chris79 498 13. Okt 2004, 22:18
Gast In Abfrage nachträglich neue Tabelle einfügen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Frontpage Forum