Столкнулся с тем, что во многих программах базы являются годовыми, и перед началом следующего года программист создает пустую базу руками. Чтобы избежать этого геморроя и склерозных недоразумений, написал процедуру автоматического создания новой базы данных при начале работы в новом году.
*Creating database ishoddokument
SET PATH TO "d:\копии\11072012\"LOCAL pat &&путь к таблице
LOCAL curyear &&текущий год
LOCAL lastyear && предыдущий год
pat="d:\копии\11072012\"
curyear=RIGHT(STR(YEAR(DATE())),2)
lastyear=RIGHT(STR(YEAR(DATE())-1),2)
*если не существует файла базы данных на текущий год, то создается новая *база текущего года копированием структуры старой
IF !FILE("vhdokument"+curyear+".dbc") CREATE DATABASE pat+"vhdokument"+curyear+".dbc"
open database "vhdokument"+lastyear+".dbc"
USE "dogovor"+lastyear+".dbf"
COPY STRUCTURE TO pat+"dogovor"+curyear+".dbf" WITH CDX NAME dogovor DATABASE "vhdokument"+curyear
USE "rassilka_dogovora"+lastyear+".dbf"
COPY STRUCTURE TO pat+"rassilka_dogovora"+curyear+".dbf" WITH CDX NAME rassilka_dogovora DATABASE "vhdokument"+curyear
USE "pismo"+lastyear+".dbf"
COPY STRUCTURE TO pat+"pismo"+curyear+".dbf" WITH CDX NAME pismo DATABASE "vhdokument"+curyear
USE "rassilka_pisma"+lastyear+".dbf"
COPY STRUCTURE TO pat+"rassilka_pisma"+curyear+".dbf" WITH CDX NAME rassilka_pisma DATABASE "vhdokument"+curyear
ENDIF
CLOSE TABLES ALL
CLOSE DATABASES ALL OPEN DATABASE pat+"vhdokument"+curyear+".dbc" EXCLUSIVE
USE "dogovor"+curyear+".dbf" ALIAS dogovor EXCLUSIVE IN 0
USE "pismo"+curyear+".dbf" ALIAS pismo EXCLUSIVE IN 0
USE "rassilka_dogovora"+curyear+".dbf" ALIAS rassilka_dogovora EXCLUSIVE IN 0
USE "rassilka_pisma"+curyear+".dbf" ALIAS rassilka_pisma EXCLUSIVE IN 0
*MakeRelation_1
ALTER TABLE 'RASSILKA_DOGOVORA' ADD FOREIGN KEY TAG CREGNOMER REFERENCES DOGOVOR TAG CREGNOMER
*MakeRelation_2
ALTER TABLE 'RASSILKA_PISMA' ADD FOREIGN KEY TAG CREGNOMER REFERENCES PISMO TAG CREGNOMER
CLOSE TABLES ALL
Комментариев нет:
Отправить комментарий