Neue Spalten in Access hinzufügen

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von dive26.

    Neue Spalten in Access hinzufügen

    Guten Morgen!
    Ich habe ein Problem beim Hinzufügen von neuen Spalten in einer accdb-Datei. Ich will in einer vorerstellten Access-Datenbank neue Spalten hinzufügen, aber ich musste feststellen, dass ich nur maximal 7 weitere Spalten (Primärschlüssel war schon vorher vorhanden) hinzufügen und danach sagt er immer wieder die folgende Fehlermeldung: Datensatz zu groß.
    Ich weiß, dass man seine Tabellen normalisieren soll, aber ich möchte so viele Spalten hinzufügen.

    Auf der folgenden Seite habe ich den Beispielcode entnommen: vb.net-informations.com/ado.ne…nonquery-oledbcommand.htm

    Wenn z.b. 5 Spalten in meiner Datenbank-Datei bereits vorhanden sind, dann kann ich noch 3 weitere Spalten hinzufügen. Danach kommt wieder diese Meldung: Datensatz zu groß.

    Hat jemand eine Idee, wie ich das Problem beheben kann? Oder gibt es eine Methode, mit der ich diese 8 Spalten-Sperre aufheben kann?

    PS: Wie gesagt, ich möchte all meine Spalten in einer Tabelle hinzufügen und möchte diese nicht aufteilen.

    PS2: Als Provider nutze ich "Microsoft.ACE.OLEDB.12.0".

    PS3: Mein SQL-Statement lautet fürs Hinzufügen einer neuen Spalte: ALTER TABLE MeineTabelle ADD Spalte1 char

    Ich hoffe ihr kennt das Problem und könnt mir helfen.
    nö - kenne das Problem nicht.
    Halte die Idee, zur Laufzeit Spalten zuzufügen auch für ganz schlecht.

    Bei ner DB-Anwendung gibt die DB die Datenstruktur vor, und dann wird dafür eine Datenverarbeitung geschrieben.
    Wenn du nun zur Laufzeit an der Datenstruktur rumfummelst, dann arbeitest du im folgenden mit einer Datenstruktur, für die deine Anwendung nicht gecodet wurde. Mit viel Murx geht das sogar, aber sauber, sicher und einfach ist was anneres.

    Es ist halt kein Zufall, dass inne Datenbänkerei Normalisierung strikt gefordert ist. Genau son Murks, wie er jetzt bei dir auftritt, ist die Folge, wenn man die DB nicht vernünftig anlegt.
    Danke für eure Antworten!

    @ ErfinderDesRades
    Ja ich weiss aber es muss so sein. Ich habe aber nun eine Lösung gefunden und zwar muss ich nur Datentyp "Memo" benutzen, dann klappt es.

    @ xtts02
    Etwa 20-30

    @ VB1963
    Habe ich auch schon versucht.

    Naja egal hauptsache es funktioniert mit "Memo".
    Nun eine andere Frage. Um viele Add-Requests abzuarbeiten möchte ich es in einer Abfrage machen und nicht jeden einzeln.
    Wie bereits gepostet gibt es hier ein Beispielcode: vb.net-informations.com/ado.ne…nonquery-oledbcommand.htm

    Es ist nun die Frage wie ich bei Zeile "sql = "Your SQL Statement Here"" mehrere SQL-Anweisungen angeben kann, ohne dass ich jeden einzeln durchführen muss?
    Normalerweise kann man mehrere SQL-Requests mit ";" trennen und mehrere auf einmal senden, aber bei Access funktioniert das nicht.
    Dann sagt er, dass irgendwas mit dem Zeichen am Ende falsch sei oder so, aber es ist sql-syntaxmässig richtig.
    Z.b.

    SQL-Abfrage

    1. INSERT INTO MeineTabelle (Test1,Test2,Test3) VALUES ('hallo','test','abc'); INSERT INTO MeineTabelle (Test1,Test2,Test3) VALUES ('auto','baum','dfhksdhf')


    Warum geht es nicht? Wie kann man das lösen? Oder was mache ich falsch?

    ErfinderDesRades schrieb:

    nö - kenne das Problem nicht.
    Halte die Idee, zur Laufzeit Spalten zuzufügen auch für ganz schlecht.

    Bei ner DB-Anwendung gibt die DB die Datenstruktur vor, und dann wird dafür eine Datenverarbeitung geschrieben.
    Wenn du nun zur Laufzeit an der Datenstruktur rumfummelst, dann arbeitest du im folgenden mit einer Datenstruktur, für die deine Anwendung nicht gecodet wurde. Mit viel Murx geht das sogar, aber sauber, sicher und einfach ist was anneres.

    Es ist halt kein Zufall, dass inne Datenbänkerei Normalisierung strikt gefordert ist. Genau son Murks, wie er jetzt bei dir auftritt, ist die Folge, wenn man die DB nicht vernünftig anlegt.

    Sorry, dass ich so einen alten Thread wieder ausgrabe. Aber aktuell bin ich auch mit der Datenbankgeschickte beschäftigt und mit hat das obige Zitat doch etwas verwundert. Ihr seid sicher Programmierprofis und könnt sehr gut programmieren. Jedoch sieht es für mich so aus als ob vielen von Euch die Praxis von über Jahre dauernden Projekten fehlt. Warum?:

    Dass das Hinzufügen von Spalten in eine Access-Datenbank zur Laufzeit keine "saubere" Sache ist, das sehe ich ein. Aber stellt euch eine Software vor, die bereits einige Jahre auf dem Markt ist, jedoch trotzdem immer auf Kundenwünsche und neue Anforderungen adaptiert wird (also Programmupdates). Auch wenn man schon zur Erstellungszeit der Datenbank (vor ettlichen Jahren) ein paar "Reservespalten" eingebaut hat, kann es vorkommen, dass es trotzdem irgendwann um eine Datenbankzspalte zuwenig ist. Daher finde ich die Notwendigkeit zum Hinzufügen von Spalten in eine Datenbank nicht so weit hergeholt. Ich finde das sogar sehr praxisnah.

    Ich musste dies in meiner nunmehr 8 Jahre alten Software auch schon einmal machen (VB6). Aber das geht auch gar nicht anders, wenn man 3500 Kunden ein Update rausschickt.

    PS: Uns soweit ich mich da eingelesen habe, sollte man die Normalisierung nicht allzu übertreiben ;)

    LG Roland
    Liebe Grüße
    Roland Berghöfer

    Meine aktuellen und kostenlos verwendbaren Tools (mit VB.NET erstellt): freeremarkabletools.com | priconman.com | SimpleCalendar | AudibleTouch | BOComponent.com | bonit.at