Sziasztok,
A következő problémánk merült fel MSSQL adatbázissal kapcsolatban:
Van MSSQL-ben 2 DATETIME mezőnk, default date: 1901-01-01 00:00:00.
Magic xpa 3.2-ben egy dátum és egy idő mező néz ezekre a mezőkre, Part of datetime tulajdonság nincs beállítva.
Van egy egyszerű RIA karbantartó erre a táblára, gyakorlatilag Generált Browse programból is ugyanez a helyzet:
Ha egy rekordot módosítunk, akkor a következő hibaüzenetet kapjuk: „Record changed by another user”.
Gateway logot bekapcsolva látszik, hogy a hiba oka az, hogy az update-elni kívánt rekordra az update utasítás where feltételébe a Magic beleteszi az [AND (karido = {ts '2000-01-01 13:28:03.000'})] feltételt, holott a karido mezőben '1901-01-01 13:28:03.000' szerepel az mssql-ben.
Ha a Database Default értéket átírjuk 1901-01-01 00:00:00-ról 2000-01-01 00:00:00-ra, akkor megjavul a hiba. Ez is azt bizonyítja, hogy itt van valahol a probléma.
Kérdés: Honnan veszi a Magic ezt a 2000-01-01-et? Hogyan lehetne rávenni, hogy ne a 2000-01-01-et, hanem a database default-ban beállított 1901-01-01-et használja?
Találkozott már valaki ezzel a problémával?
Természetesen megoldás lenne, ha a Database default-ot minden dátum, idő mezőre átírnánk 2000-01-01-re, de ezt a táblák és mezők nagy száma miatt nem szeretnénk, másrészt jó lenne érteni is, hogy a Magic miért így dolgozik.
Üdv: Gyula
Szia Gyula!
MI 1.9-el használunk SQL Servert, és ott minden klafán működik, 1901-01-01-es default dátum értékkel, igaz, hogy az összetartozó dátum+idő mezőink dátum része DATETIME, az idő pedig egy külön char(6)-os mezőben csücsül. De ilyen 2000-01-01-es dátum problémával még nem találkoztunk. (A beállítások miatt küldök Neked egy minta Magic.ini-t úgy, ahogy mi használjuk.)
Üdvözlettel:
Dávid
És még egy dolog: mivel az SQL Serverben
DATETIME-ként létrejövő mező Magic oldalon igazából Date, ezért
a default értéke nálunk '1901-01-01', idő rész nélkül.