Loewchen0507 Geschrieben 4. Juni 2007 Teilen Geschrieben 4. Juni 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 4. Juni 2007 Teilen Geschrieben 4. Juni 2007 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 4. Juni 2007 Autor Teilen Geschrieben 4. Juni 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 4. Juni 2007 Teilen Geschrieben 4. Juni 2007 was für eine Fehlermeldung bringt er Dir denn? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 4. Juni 2007 Autor Teilen Geschrieben 4. Juni 2007 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 4. Juni 2007 Teilen Geschrieben 4. Juni 2007 Hast Du die Datenbank evtl. noch in Access geöffnet und evtl. den Multiuserzugriff ausgeschaltet? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 5. Juni 2007 Autor Teilen Geschrieben 5. Juni 2007 Hi, geöffnet ist die Datenbank nur von meinem Programm... den Multiuserzugriff??? Wo wird der denn ein bzw. ausgeschaltet??? Gruß Loewchen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MarkusLe Geschrieben 11. Juni 2007 Teilen Geschrieben 11. Juni 2007 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(). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Loewchen0507 Geschrieben 12. Juni 2007 Autor Teilen Geschrieben 12. Juni 2007 Hi an alle, also zuerstmal vielen dank für die ganzen Anregungen... ich habe die Lösung gefunden... 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.