Mysql linked tables Access97 auf win2k

gesegneten guten tag,

ich habe hier ein kleines schoenes tueftel problem, dass ich leider ueber foren und faq nicht loesen konnte.

fangen wir mal mit der hw an:
pentium 4
512 MB RAM
40 GB FP davon mehr als 20 GB frei.

BS
linux 2.4.20-4GB (Suse 9.1)
Win2k (auf linux unter VMWare)

Server unter linux
Server mysql 3.23.55-Max-log
apache, shh, mail usw. was man halt noch so alles braucht.

SW unter win2k
Access 97
MyODBC 3.51
Alle SP installiert (fuer Access SR)
MDAC 2.8

Fehler
Urspruenglich hatte ich alle daten in einer MS Access Datenbank, aber wir wollen von Access auf MYsql umsteigen. Daher wurden die Daten von Access nach MySQL portiert. um aber den User moeglichst in seiner alten Umgebung zu lassen, wurde die Tabellen via linked Tables in die alte DB eingelesen, die alten Tabellen umbenannt, die neuen nach den alten Tabellen benannt.

Nach anfaenglichen Fehlern wie dem #Deleted problem, ich habe in jeder Tabelle nun einen Timestamp , sowie einigen Problemen mit den Access Formularen, jetzt folgendes Problem:

Ich hatte mich gewundert, dass ueber die alten Formulare zunaechst die Daten korrekt angezeigt werden, als ich aber am naechsten tag an meinen arbeitsplatz kam war dem nicht mehr so. ich wunderte mich und suchte verzweifelt nach einem fehler in dem Axccess script. arbeitete in jedes Formular extra noch einen tinmestamp mit ein, half aber nichts.

Schliesslich habe ich nun herausgefunden was passiert ist.

(1.)
Die Betroffenen Tabellen haben ein Datumsfeld, das bei den Betroffenen Feldern in den Tabellen nach und nach auf NULL gesetzt wird. Dass scheint aber nicht nur per hand zu passieren (wenn ich also in dem Access Formular rumklicke), sondern bei querys, da schon mehr als 1000 felder so erkrankt sind, und die habe ich nicht alle angeklickt. Es muss anscheinend was mit den Formularen zu tuen haben, denn ueber das einfache klicken auf die tabellen, indem ich mir alle Tabelleneintraege anschauen kann, bekomme ich alles angezeigt, aber die Daten sind nachher nicht krank.

(2.)
Ebenso scheint MyODBC mit den Access Booleschen Werten nicht umgehen zu koennen, denn die werden in der Datenbank nicht als 0 oder 1 gespeichert sondern als -1.

ich denke aber das ich zu dem letzteren schon einen ansatz habe, ich denke mich erinnern zu koennen, dass man in diesem Fall den Typ bei MySQL auf Char setzen soll.

Allerdings lasse ich mich hierbei natuerlich gerne von euch wissenden unterstuetzen…

Sorry fuer den langen Thread, aber ich will ja nicht irgendwas vergessen habe, was am ende noch wichtig sein koennte.

Schoenes Wochenende

  • joshua bacher -

Hallo joshua

(2.)
Ebenso scheint MyODBC mit den Access Booleschen Werten nicht
umgehen zu koennen, denn die werden in der Datenbank nicht als
0 oder 1 gespeichert sondern als -1.

In Access gilt:
True = -1
False = 0

Gruss
Peter

Ja/nein-Felder:

Um das Problem 0 und 1 (SQL-Server) und 0 und -1 (Access) zu umschiffen, gehe ich wie folgt vor:

In der in Access per ODBC (System-DSN) eingebundenen Tabelle, stelle ich im (Access-) Entwurf der betroffenen Tabelle die Format-Eigenschaft auf Ja/Nein zusätzlich nochmals der Vollständigkeit halber ein (obwohl verknüpft, kann eine solche Eigenschaft in Access abgespeichert werden). In Formularen wird dann eine Checkbox positioniert mit Steuerelementinhalt des entspr. Feldes. Grafisch ist somit schonmal alles perfekt (Häkchen an oder aus ist sichtbar). In Abfragen funktioniert das Kriterium „False“ oder „True“ ebenso perfekt, jedoch halt nicht mit 1, da Access den SQL-Sever-Typ „bit“ (0 und 1) nach seiner Konvention interpretiert (0 und -1). In Code-Schnipseln dann analog „True“ und „False“, damit’s klappt.

Dein Datum-Problem: ich vermag das leider (oder Gott sei Dank) hie nicht nachzuvollziehen.
Aber an dieser Stelle mal eine Bemerkung: ich staune immer wieder, wie „leichtsinnig“ man immer wieder von Access nach SQL-Server umrüstet, nur weil das so herrlich leicht mit Exportfunktionen (vermeintlich!) funktioniert. Nur leider ist es damit NIEMALS getan - meistens wartet eine nicht unerhebliche manuelle Nacharbeit auf denjenigen, der das alles angestoßen hat - von etlichen Fallstricken mal abgesehen, die da diesbezüglich noch so alles schlummern. Und wenn man das gleich in der Live-Produktionsumgebung macht, wird das Eis auch sehr schnell sehr dünn!

GruĂź
Stephan

http://it-werkstatt.com

Kleiner Nachsatz…
Lese gerade jetzt erst Eure Umgebungs-Konfiguration:

alleine schon „Windows unter VMWare“: da mag man z.B. zum Datumsproblem nun eigentlich gar nichts mehr sagen. Access guckt gerne nach Datumseinstellungen in den BS-Einstellungen; und da haben wir’s jetzt mit Linux zu tun, mit der virtuellen VMWare, die ein Windows tragen soll… also da kommen unter Umständen Faktoren zusammen, die ja kein Mensch mehr durchschaut…

GruĂź
Stephan

http://it-werkstatt.com

hallo stephan,

Ja/nein-Felder:

Um das Problem 0 und 1 (SQL-Server) und 0 und -1 (Access) zu
umschiffen, gehe ich wie folgt vor:

In der in Access per ODBC (System-DSN) eingebundenen Tabelle,
stelle ich im (Access-) Entwurf der betroffenen Tabelle die
Format-Eigenschaft auf Ja/Nein zusätzlich nochmals der
Vollständigkeit halber ein (obwohl verknüpft, kann eine solche
Eigenschaft in Access abgespeichert werden). In Formularen
wird dann eine Checkbox positioniert mit Steuerelementinhalt
des entspr. Feldes. Grafisch ist somit schonmal alles perfekt
(Häkchen an oder aus ist sichtbar). In Abfragen funktioniert
das Kriterium „False“ oder „True“ ebenso perfekt, jedoch halt
nicht mit 1, da Access den SQL-Sever-Typ „bit“ (0 und 1) nach
seiner Konvention interpretiert (0 und -1). In Code-Schnipseln
dann analog „True“ und „False“, damit’s klappt.

vielen dank, hilfreiche Antwort!

Dein Datum-Problem: ich vermag das leider (oder Gott sei Dank)
hie nicht nachzuvollziehen.

schade, denn das ist mein eigentliches Hauptroblem, an dem ich gerade zu beissen habe.

Aber an dieser Stelle mal eine Bemerkung: ich staune immer
wieder, wie „leichtsinnig“ man immer wieder von Access nach
SQL-Server umrĂĽstet, nur weil das so herrlich leicht mit
Exportfunktionen (vermeintlich!) funktioniert. Nur leider ist
es damit NIEMALS getan - meistens wartet eine nicht
unerhebliche manuelle Nacharbeit auf denjenigen, der das alles

also auf mich, das ist mein Projekt, ob es mir, oder wem auch immer gefaellt. ;o)

angestoĂźen hat - von etlichen Fallstricken mal abgesehen, die
da diesbezĂĽglich noch so alles schlummern. Und wenn man das
gleich in der Live-Produktionsumgebung macht, wird das Eis
auch sehr schnell sehr dĂĽnn!

deswegen bin ich auch nicht direkt an einer live produktionsumgebung. das ist leichtsinnig, da gebe ich Dir uneingeschraenkt Recht.

Meine Hauptaufgabe, deswegen bin ich hier angestellt, ist einen glatten Uebergang zu schaffen. ich wuerde lieber gleich damit anfangen in php eine neue Umgebung fuer die neue Situation einzuhacken, aber schliesslich bin ich hier ein Angestellter. Sollte ich merken, das die Aufgabe unmachbar oder nicht lohnend ist, so werde ich das meinem Chef mitteilen. Aber ich werde auf keinen Fall, bei den ersten Anzeichen von Problemen den Rueckzug blasen. Schliesslich bin ich hier um ein Problem zu loesen. Und wenn ich das sagen darf: das ist ja haeufig unser Einsatzgebiet, nicht?

alleine schon „Windows unter VMWare“: da mag man z.B. zum Datumsproblem nun
eigentlich gar nichts mehr sagen. Access guckt gerne nach Datumseinstellungen
in den BS-Einstellungen; und da haben wir’s jetzt mit Linux zu tun, mit der
virtuellen VMWare, die ein Windows tragen soll… also da kommen unter
Umständen Faktoren zusammen, die ja kein Mensch mehr durchschaut

hmm, Hmm, Zeit von Windows unter Vmware ist synchronisiert mit linux. da sollte das Problem eigentlich nicht sein.

zudem: ich dachte gerade fuer solche Aufgaben, waere vmware vor allem geeignet. aber anscheinend sollte ich mir dann wohl noch einen zweiten rechner beantragen. vielleicht hilft es ja. Aber wenn ich den Artikel richtig lese, hast du also auch keine konkrete Idee woran es liegen koennte.

GruĂź
Stephan

http://it-werkstatt.com

gruss - josh -