Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

C# ALTER TABLE auf ACCESS

Empfohlene Antworten

Veröffentlicht

Hi,

ich hoffe Ihr könnt mir helfen.

Ich möchte gerne während der Laufzeit meines Programmes eine Änderung in einer Tabelle einer Access Datenbank vornehmen.

Dabei bin ich wie folgt vorgegangen:

1. Verbindung zur Datenbank herstellen

2. AlterTable Statement

Meine Umsetzung wie folgt:


OleDbConnection CobraConn;


CobraConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.CobraDB;

CobraConn = new OleDbConnection(CobraConnStr);

CobraConn.Open();


CobraAlterCommand = new OleDbCommand("ALTER TABLE addresses ADD COLUMN mesoprim TEXT(50);", CobraConn);

CobraAlterCommand.CommandType = CommandType.Text; 

CobraAlterCommand.ExecuteNonQuery();

Vielleicht gehe ich die ganze Sache ja auch komplett falsch an??? Dennoch hoffe ich, dass Ihr mir helfen könnt.

LG Loewchen

Mach mal Access auf und schau Dir dort in der Hilfe die Syntax an, gerade im Hinblick auf ALTER Table kann Access nur ganz bestimmte Dinge.

Hi,

genau das ALTER TABLE Statement das ich im Code habe läuft in der Access.mdb

Ich habe auch schon versucht:

CobraAlterCommand.Connection.ChangeDatabase("DemoCoWiTest.mdb");
und:
CobraConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.CobraDB + ";Exclusive=1;";

also mit Exclusive=1; aber irgendwie klappt das nicht.

LG Loewchen

was für eine Fehlermeldung bringt er Dir denn?

das Problem war, dass ich vor dem Open das gemacht habe... schussligkeit aber jetzt bekomme ich diese Fehlermeldung:

kein installierbares ISAM gefunden wenn ich den Code benutze:


                    CobraConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Properties.CoWi.Default.CobraDB + ";Exclusive=1;";

                    CobraConn = new OleDbConnection(CobraConnStr);

                    CobraAlterCommand = new OleDbCommand("ALTER TABLE addresses ADD COLUMN mesoprim TEXT(50);", CobraConn);

                    CobraAlterCommand.CommandType = CommandType.Text;

                    CobraConn.Open();

                    CobraAlterCommand.Connection.ChangeDatabase("DemoCoWiTest.mdb");

                    CobraAlterCommand.ExecuteNonQuery();

mega komisch... lasse ich die zeile
CobraAlterCommand.Connection.ChangeDatabase("DemoCoWiTest.mdb");

weg, dann kommt wieder: Datenbank schreibgeschützt.

LG Loewchen

Hast Du die Datenbank evtl. noch in Access geöffnet und evtl. den Multiuserzugriff ausgeschaltet?

Hi,

geöffnet ist die Datenbank nur von meinem Programm...

den Multiuserzugriff??? Wo wird der denn ein bzw. ausgeschaltet???

Gruß Loewchen

Hallo Loewchen, bin leider kein Accessspezi, aber ein ISAM Fehler deutet darauf hin, dass etwas beim Multiuserzugriff schief geht, z.B. dass die DB schon geöffnet ist, oder bearbeitet wird.

In Deinem Code hast Du "Exclusive=1" geschrieben, evtl. gibt es dafür noch andere Werte.

mach mal hinter dein ExecuteNonQuery() noch einen Aufruf von Close().

Hi an alle,

also zuerstmal vielen dank für die ganzen Anregungen... ich habe die Lösung gefunden... :D und entschuldigt die späte Antwort... aber mich hatte zwischenzeitlich die Sommergrippe erwischt :(

Wie bin ich vorgegangen:

ich habe mir eine neue Applikation gebaut und ein dort per Knopfklick das Alter Table Statement ausgeführt und es funktionierte... dann bin ich auf die Suche gegangen... wo liegt der unterschied... der Rechner ist der Gleiche und die Installationen damit auch... also konnte es nur an den beiden Applikationen liegen... ja und da hatte ich auch schon den größten unterschied... das eine ist eine Applikation und das andere ein Dienst... dann irgendwann kam ich mal auf die Idee die Anmeldungen am SQL Server zu überprüfen und da war es auch schon... Ich bin an meinem Rechner immer als User einer Domain angemeldet... mein Service allerdings hat sich immer mit local angemeldet... und da war es.. ich habe dann für den Service die Anmeldungen geändert und siehe da, es funktioniert... Mein lokaler Benutzer hatte keine Vollzugriffsrechte auf die mdb und durfte daher nicht ändern, während ich mit dem Benutzer einer Domain diese Rechte besaß... dumm dumm dumm ... :upps das Leben kann so einfach sein...

Also zusammenfassend gesagt lag es an den Rechten des Benutzers mit denen sich der Dienst angemeldet hat... ändert man die Anmeldedaten oder die Rechte des Benutzers funktioniert alles einwandfrei...

Trotzdem danke an Euch alle für Eure Unterstützung und ich freue mich shcon auf meine nächste Aufgabe ("Problem") die ich mit Euch zusammen erörtern darf.

LG Loewchen :D

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.