View Full Version : Datensatz ändern/löschen mit Datumsfeld
Hallo,
ich greife über ODBC (Access97) auf eine Tabelle zu, bei der ich Datensätze nicht ändern bzw. löschen kann.
FEHLERMELDUNGEN:
* "ODBC: Löschen {bzw. Aktualisieren} in einer verknüpften Tabelle 'XXX' fehlgeschlagen."
* "[MICROSOFT][ODBC Driver Manager] SQL-Datentyp außerhalb des zulässigen Bereichs.(#0)"
Diese Datensätze haben ein DATUMsfeld. Wenn ich anstatt des Datumsfeldes ein alphanumerisches Feld anlege, besteht die Problematik nicht.
BACKGROUND:
* Für die Bibliothek habe ich volle Rechte.
* iSeries Navigator (520)
* iSeries (510)
Vielen Dank für das Interesse.
Gruss
DAN
Wichtig wäre, dass das Datumfeld mit *ISO definiert ist.
Ein Datum aus Access kann nicht gelöscht (auf 0) gesetzt werden. Dann muss das Feld in der DB auch mit ALWNUL beschrieben sein, NULL erlaubt.
Ansonst ist als kleinstes Datum nur '01-01-0001' erlaubt.
Vielen Dank,
darin besteht leider nicht die Problematik.
Das Datumsfeld lasse ich als einzelnes Feld komplett in Ruhe. (Aktuelles Datum wird automatisch nach der Übertragung an die AS400 eingetragen.)
Ich kann Datensätze einpflegen und später auch abrufen.
Auch in den Nicht-Datumsfledern ist keine Änderung möglich,
nach dem ich den Datensatz an die AS400 geschickt habe.
Gruss
DAN
Hallo,
ALWNUL ist gesetzt.
Nun nimmt er keine Daten mehr in dem Datumsfeld an.
ACCESS erkennt das Datumsfeld als Textfeld (255).
Wie auch ohne ALWNUL, jedoch übernahm er dort trotzdem das aktuelle Datum.
(Auch wenn ich es in der Form "JJJJ-MM-TT" eingebe.)
Wie kann ich ACCESS beibringen, dass es ein "*ISO" Feld ist?
Gruss und VIELEN DANK
DAN
Unabhängig jetzt vom Feldtyp:
Beim Verknüpfen auf die AS/400 fragt Access nach einem Unique-Key nach (falls keiner definiert ist). Fehlt diese Angabe (mal unter Eigenschaften der Tabelle->Schlüssel nachsehen) kann Access keinen Update/Delete durchführen, da Access nicht sicher ist genau den gewünschten Satz zu treffen (Multi-Update / Multi-Delete). Es ist dann nur Select/Insert möglich !!!
Als Alternative zum Ändern/Löschen über Recordset entsprechende SQL-Passthru-Abfragen (geht auch mit Parametern) definieren.
Nun zum Feldtyp:
Wenn das Feld in der DDS als Typ DATUM definiert ist, müsste Access dies auch erkennen. Ein Textfeld an dieser Stelle hätte ggf. unangenehme Konsequenzen.
Der Schlüssel ist nicht das Problem.
Es ist abhängig von einem Datumsfeld, welches mir jedes Feld nach der Übertragung "sperrt" (keine Änderungen akzeptiert) und das Feld an sich bei der Eingabe keinen manuellen Eintrag verträgt.
Dies habe ich getestet, in dem ich anstatt das Feld mit dem Datumsformat (L) auf der iSeries mit einem alphanummerischen Feld deklerierte.
-------------------------
AUSSCHNITT AUS DER DATEIBESCHREIBUNG:
Feld=ERSTEL_DAT; DatenArt=DATE; Feld-Länge=10; PufferLänge=10; PufferPosition=80; FeldVerwend.=Beides; SpaltenÜberschrift=ERSTEL_DAT
Datumsformat.................: *ISO
Läßt den Nullwert zu
ID des des codierten Zeichensatzes .....: 273
-------------------------
Access97 erkennt das Feld nicht als Datumsfeld sondern als alphanummerisches Feld (255)
{Versionsproblem mit Access?}
DANKE
Ja, jetzt kapier ichs langsam.
Mit der neuen Version CA V5R1 wurde die ODBC-Konvention 3.0 erweitert übernommen.
Dies betrifft ausgerechnet die Datum-Felder (neben BLOB's).
Access 97 kann möglicherweise nicht den vollen Umfang von ODBC 3.0, so dass
a) als ODBC-Treiber wieder V4R5 verwendet wird (scherzhaft)
b) Access2000 oder höher verwendet wird
P.S.:
Wer (ausser mir) arbeitet schon noch mit Office97 ?!
Das ist die Firmenphilosophie:
Lass erst alle anderen die "meisten" Bugs von MS finden und dann erst schau mal, wie man ein neues System von MS einsetzt.
Zum Glück gibt es aber auch schon eine kleine Testphase, so dass ich mittlerweile an einer "neueren" Maschine mit ACCESS2000 testen durfte.
VOR der Installation von iSeries Navigator konnte ich beim Einrichten einer ODBC-Schnittstelle noch die Datumsfelddekleration in einem (letztes) Register finden.
NUN habe ich den iSeries Navigator eingerichtet, um (problemlos(dachte ich)) mit der AS400 arbeiten zu können.
Nun ist dieser Registerreiter wieder verschwunden.
Bei der Verknüpfung wandelt er das Feld nun bei Access2000 in ein Binäres Feld um ... und wieder stehe ich am Bahnhof und alles zieht an mir vorbei.
Also ging ich nun ran an MS Access2002:
Das Datumsfeld habe ich nicht mit ALWNULL auf der iSeries deklariert.
Access2002 erkennt ... Binär mit der Länge 510.
Die Tabelle war leer und ich gab Werte ein (nur nicht im Datumsfeld, denn das wird ja durch die NICHTderkleration des Datumsfeldes automatisiert mit dem aktuellen Datum gefüllt.)
und was kommt jetzt ... es zeigt sich eine Reihe von Hieroglyphen (Vierecke und ein Muster, dass aussieht wie ein Gesicht(mit viel Phantasie)).
Ohh Gott, was habe ich Dir getan, dass ich mich so d.. ... blind anstelle.
Ich hoffe ich finde bald das Korn.
Die Datumseinstellungen findest du nun unter "Server" "Erweitert".
Vielleicht suchen wir auch an der falschen Stelle:
Also, ich habe Office97/SP2 Ca V5R1M0 SI06804 (naja nicht so ganz aktuell) und auf AS/400 V5R2, OpsNav spielt da keine Rolle.
Habe mir auf der AS/400 eine Datei mit Typ Date (per DDS mit L) angelegt und Access erkennt das Feld als Datum !
Wenn ich dann noch die Journalisierung rausgemommen habe ("Server" "Erweitert") konnte ich auch Daten eingeben und ändern.
Ich habe auch eine mit SQL erstellte Tabelle verwendet, auch dies ohne Probleme.