![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
|
Najlepiej
przeglądać z
Załącznik A Załącznik B Załącznik C Załącznik D Załącznik E Jak przygotować aplikacje w FoxPro na rok 2000 Załącznik F |
Microsoft a rok 2000 Załącznik E: jak przygotować aplikacje w FoxPro na rok 2000 Nr artykułu: Q162388 Data utworzenia: 20 stycznia 1997 r. Data ostatniego przeglądu: 21 stycznia 1997 r. Artykuł zawiera informacje o programach:
STRESZCZENIE Im bliżej roku 2000, tym bardziej użytkownicy i programiści muszą wziąć pod uwagę wpływ dat w tym roku (oraz w latach późniejszych) na zapisywanie, przechowywanie, reprezentowanie i obliczanie dat w aplikacjach — zarówno już istniejących, jak i zupełnie nowych. W artykule tym omawiamy problemy związane z danymi typu “data” w tabelach oraz przedstawiamy działania, jakie są wskazane przy przygotowywaniu aplikacji do roku 2000. Oprócz tego wyjaśniamy, jak należy używać wartości “Set Century To” i frazy “Rollover” w Visual FoxPro 5.0, a także omawiamy zagadnienie używania klasy do kontroli nad wszystkimi zmiennymi środowiskowymi w projekcie.
BLIŻSZE INFORMACJE W tabelach FoxPro przechowywana jest wartość pól typu “data” z zachowaniem czterech cyfr roku. Dotychczasowe daty są przechowywane jako 19xx (gdzie xx jest dwucyfrową reprezentacją roku), chyba że aplikacja explicite zapisała inne stulecie daty. Obliczenia na datach dokonywane są z użyciem czterocyfrowych wartości roku. Natomiast sposób reprezentacji roku na ekranie, formularzu lub w raporcie zależy od ustawienia opcji Century. Domniemaną wartością tej opcji jest Off, co oznacza użycie roku dwucyfrowego. Aby włączyć pełną reprezentację roku (czterocyfrową), aplikacja musi wykonać instrukcję Set Century On albo środowisko powinno włączyć tę opcję za pomocą analogicznej instrukcji wydanej w innym miejscu. Dla przykładu wprowadźmy do okna poleceń (w dowolnej wersji FoxPro lub Visual FoxPro) następujące instrukcje: CREATE TABLE testyear (year d) APPEND BLANK Pojawi się puste pole. W polu tym wpiszmy datę w formacie mmddyy, na przykład 040197. Data pojawi się jako 01.0497. Teraz w oknie poleceń wpiszmy następującą instrukcję:
Po kliknięciu paska tytułowego zauważymy, że w oknie BROWSE reprezentacja daty zmieniła się na 01.04.1997. Teraz wpiszmy następującą instrukcję:
Po kliknięciu paska tytułowego zauważymy, że w oknie BROWSE reprezentacja daty zmieniła się na 01.04.97. Sposób reprezentacji dat w tabelach FoxPro może być zatem wykorzystywany w następnym stuleciu. Jednak jeśli ekrany (w aplikacjach opracowanych w FoxPro) albo formularze (w aplikacjach opracowanych w Visual FoxPro) zostały utworzone przy opcji środowiskowej Century ustawionej na Off, wówczas pola wprowadzania danych sterowane przez @...GET i Textbox przyjmują tylko dwie ostatnie cyfry roku. Gdy osoba wprowadzająca dane zacznie wpisywać rok jako 19xx, 19 zostanie zinterpretowane jako rok 1919. Kod programu powinien rozpoznawać tego rodzaju przypadki w procedurze obsługi zdarzenia Valid albo zdarzenia Lostfocus. Aby przygotować się do poprawnego wprowadzania dat roku 2000 i lat późniejszych, prawdopodobnie trzeba będzie zmienić istniejące aplikacje tak, aby przy wprowadzaniu danych wpisywany był rok czterocyfrowy. W związku z tym konieczne mogą stać się następujące działania:
Trzeba też będzie ustawić opcję Century na On (w procedurze Setup dla ekranu w FoxPro, w zdarzeniu Init dla formularza, w programie głównym projektu, bądź w innym miejscu, gdzie opcję Century można ustawić przed jej użyciem). Wielu programistów na początku programu zapamiętuje wszystkie ustawienia środowiskowe, następnie ustawia je zgodnie z wymaganiami danej aplikacji, a gdy kończy z niej korzystać, przywraca ich początkowe wartości. Ustawienia środowiskowe są przechowywane w tabeli Foxuser.dbf, ale tabela ta może ulec zniszczeniu lub zostać utracona z innego powodu. Dlatego dobrze zaprojektowana aplikacja we właściwy sposób kontroluje ustawienie opcji Century oraz inne ważne ustawienia środowiskowe. Wartość “Set Century To” i fraza Rollover w Visual FoxPro 5.0 W Visual FoxPro dla Windows, wersja 5.0, wprowadzono do instrukcji Set Century nowe frazy: "To" i "Rollover". Działanie frazy “To” ilustruje poniższy przykład, zaczerpnięty z Pliku Pomocy: SET CENTURY ON SET CENTURY TO 19 && zakres wartości od 1 do 99 ? {02/16/56} && wyświetla 02/16/1956 SET CENTURY TO 20 ? {02/16/56} && wyświetla 02/16/2056 Fraza Rollover określa rok, począwszy od którego liczy się bieżące stulecie, a przed którym liczy się następne stulecie. Użycie tej frazy ilustruje następujący przykład: SET CENTURY ON SET CENTURY TO 19 ROLLOVER 60 ? {02/16/96} && Wyświetla 02/16/1996 Również w tym przypadku temat pomocy informuje, że ustawienie Set Century obowiązuje tylko dla bieżącej sesji. Oznacza to, że programista jest odpowiedzialny za właściwe kontrolowanie ustawień Century na początku wykonywania swojego programu. W Visual FoxPro istnieje bardzo wygodny sposób ustalenia pożądanych ustawień przez użycie klasy, którą można włączyć do każdego projektu.
Użycie klasy do kontroli wszystkich zmiennych środowiskowych Można użyć biblioteki klas tsgen.vcx, dołączonej jako klasa Environment w przykładowej aplikacji Tastrade (nie trzeba wprowadzać żadnych zmian). Klasa ta zawiera kod obsługujący zdarzenia init, set i reset, natomiast nie zawiera ustawienia Century. Należy je zatem dodać do trzech metod obsługujących zdarzenia, w wyniku czego zostanie ono włączone do klasy. Następujące działania pozwolą obejrzeć kod tej klasy w Visual FoxPro 5.0:
Ta sama klasa znajduje się w Visual FoxPro 3.0 i 3.0b, w bibliotece Vfp\Samples\Mainsamp\Libs\Tsgen.vcx. Klasę Environment można obejrzeć po wprowadzeniu następującego polecenia: MODIFY CLASS environment OF SYS(2004)+"\SAMPLES\MAINSAMP\LIBS\TSGEN.VCX" W menu View należy kliknąć Code. Więcej informacji o użyciu dat w obliczeniach można znaleźć w innym artykule, który znajduje się w bazie wiedzy Microsoftu: Nr artykułu: Q130444 Tytuł: How to Calculate the Years, Months, and Days Between Two Dates (c) Microsoft Corporation 1997. Wszelkie prawa zastrzeżone. Współautor: Chris Jensen, Microsoft Corporation. |