FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9115
Вход
исправление базы данных (удаление в RELATED таблицах базы данных записей, для которых отсутствует тр

Программа автоматически перебирает в БД все relations и проверяет все записи в SLAVE таблице на наличие записей с соответствующими FOREIGN KEY в MASTER таблице. При отсутствии таковых - удаляет записи из SLAVE. Может быть полезна при удалении лищнего "мусора" из БД, образовавшегося в результате сбоев и т.п.


 
Прислал: Eugene_NZ   Категория: Работа с данными


Close Databases All Set Default To ? mdata = Getfile(\\\'DBC\\\',\\\'Database to open:\\\') Open Database (mdata) lDisp = .T. nTotal_R = Adbobjects(aAll_Relations,\\\"Relation\\\") If nTotal_R > 0 For nr = 1 To nTotal_R Wait Window Nowait \\\"Check \\\"+Upper(Alltrim(aAll_Relations[nr,1]))+; \\\" >--+ \\\"+Upper(Alltrim(aAll_Relations[nr,2]))+\\\" integrity.\\\" cAlias = aAll_Relations[nr,1] If !Used(cAlias) Use &cAlias In 0 Endif cAliasP = aAll_Relations[nr,2] If !Used(cAliasP) Use &cAliasP In 0 Select &cAliasP Else Select &cAliasP Endif Set Order To Tag &aAll_Relations[nr,4] Select &cAlias nallr = Reccount() ncheck = 0 nTagCo=Tagcount() For nt = 1 To nTagCo If Upper(Alltrim(Tag(nt)))=Upper(Alltrim(aAll_Relations[nr,3])) mIndExpr=Sys(14,nt) Exit Endif Next nt Scan ncheck = ncheck + 1 mv = &mIndExpr &&&aAll_Relations[nr,3] Select &cAliasP Seek mv If !Found() Select &cAlias Delete If Type(\\\'mv\\\')=\\\'N\\\' cmv = Str(mv) Else cmv = mv Endif If lDisp nans = Messagebox( Alltrim(aAll_Relations[nr,3])+\\\'=\\\'+Alltrim(cmv)+; \\\' was not matched in \\\'+Alltrim(aAll_Relations[nr,2])+; \\\' and deleted. Display message again?\\\',4+32) If nans = 6 lDisp = .F. Endif Endif Endif Wait Window Nowait Alltrim(Str(nr))+\\\" of \\\"+; ALLTRIM(Str(nTotal_R))+\\\" relations. Check \\\"+; Upper(Alltrim(aAll_Relations[nr,1]))+; \\\" >--+ \\\"+Upper(Alltrim(aAll_Relations[nr,2]))+; \\\" integrity ( by \\\"+Alltrim(mIndExpr)+\\\" ) : \\\"; +Alltrim(Str(ncheck))+; \\\" of \\\"+Alltrim(Str(nallr))+\\\" records checked.\\\" Select &cAlias Endscan Next nr Endif
 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (4.898)
Дополнения пользователей
исправление базы данных (удаление в RELATED таблицах базы данных записей, для которых отсутствует тр
[+][?]
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика