Hallo zusammen, ich stecke fest.
Via Myodbc kann ich über MS-Query, über den Befehl sql.request() aus einer Tabelle und sogar über DAO aus VBA zugreifen.
Letzteres aber nur auf eine bestimmte Tabelle (ISAM). Will ich auf eine andere Tabelle zugreifen, hat er mir zuerst gemeldet, ein weiterer User wolle bereits darauf zugreifen, nachdem ich das neueste stabile myodbc (2.50.39) installiert habe, meldet er nur noch
„Laufzeitfehler 3146 - ODBC-Aufruf fehlgeschlagen“
Hat das was mit ISAM und MYISAM zu tun? Dabei ist doch MYISAM moderner. Irgendwo habe ich auch was mit einem counter gelesen, der eine Tabelle ‚locken‘ kann, habe aber schon mit Repair versucht, die Tabelle zu reparieren, war aber alles in Ordnung. Auch rechtemäßig habe ich mit absoluten Adminrechten darauf zugegriffen, will einfach nicht.
Hier die Daten:
Meine Super DAO-Programmierung (bloody beginner):
(Auszug)
abfragestring = „SELECT * from arbeitsplan where id = 635“
'Debug.Print abfragestring
Set ws = DBEngine.Workspaces(0)
Let strConnection = „ODBC;DSN=“ & databasename & „;UID=“ & username _
& „WD=“ & userpassword
Set db = ws.OpenDatabase("", False, False, strConnection)
Set rs = db.openrecordset(abfragestring)
rs.Edit
rs.Fields(feld) = wertfeld
rs.Update
rs.Close
Set rs = Nothing
ws.Close
Set ws = Nothing
Die MYISAM-Tabelle, auf die er nicht zugreifen kann:
Table structure for table ‚arbeitsplan‘
CREATE TABLE /*!32300 IF NOT EXISTS*/ arbeitsplan (
pid smallint(5) unsigned NOT NULL DEFAULT ‚0‘ ,
arbeitsgang tinyint(3) unsigned NOT NULL DEFAULT ‚1‘ ,
maschine decimal(4,1) NOT NULL DEFAULT ‚0.0‘ ,
bemerkung1 varchar(160) NOT NULL DEFAULT ‚‘ ,
bemerkung2 varchar(160) ,
status tinyint(3) unsigned ,
ruesten_min tinyint(3) unsigned ,
fertigen_min_je_einheit decimal(5,3) ,
einheit tinyint(2) unsigned DEFAULT ‚1‘ ,
pruef1 varchar(8) ,
pruef2 varchar(8) ,
pruef3 varchar(8) ,
id smallint(5) unsigned NOT NULL auto_increment,
PRIMARY KEY (id),
UNIQUE id (id),
INDEX masch (maschine),
INDEX arbg (arbeitsgang),
INDEX pid (pid),
INDEX id_0 (id)
);
Dumping data for table ‚arbeitsplan‘
INSERT INTO arbeitsplan VALUES(„63“,„1“,„120.0“,„ungefüllter Schmelzkleber - höhere Wärmestandfestigkeit“,"(es werden teilweise Bohrungen für Lampen angebracht)",„0“,„0“,„0.000“,NULL,"","","",„631“);
INSERT INTO arbeitsplan VALUES(„63“,„2“,„121.0“,„1xschleifen“,NULL,„0“,„0“,„0.000“,NULL,NULL,NULL,NULL,„632“);
INSERT INTO arbeitsplan VALUES(„63“,„99“,„35.0“,„Kurzlängen über 2 m gehen mit !“,„Furnierarten nebeneinander getrennt, gebündelt nach Furnierpaketen !“,„0“,„0“,„0.000“,NULL,NULL,NULL,NULL,„729“);
INSERT INTO arbeitsplan VALUES(„63“,„21“,„109.0“,„auf Europaletten“,NULL,„0“,„0“,„0.000“,NULL,NULL,NULL,NULL,„651“);
INSERT INTO arbeitsplan VALUES(„63“,„22“,„33.0“,„Blume nur im Berech 6 cm von der hinteren Seite !“,NULL,„0“,„0“,„0.000“,NULL,NULL,NULL,NULL,„652“);
Dies sind nur ein paar Beispielzeilen.
So, was jetzt?
Wenn das mit DAO klappen würde, wäre mir sehr geholfen. Über Mysql-Front und sql.request() kann ich ohne Probleme auf die Tabelle zugreifen. Auf die andere ISAM-Tabelle auch mittels obigem VBA-Code (der abfragestring wird normalerweise dynamisch generiert, wurde hier nur der Einfachheit halber direkt eingesetzt)
Wenn ADO funktionieren würde, wäre mir auch geholfen, aber das habe ich noch nicht zum laufen gebracht, kenne mich mit ADO und DAO noch nicht so super aus.
Danke für die Hilfe im Voraus
Easy