powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Клиент сервер. Кто-нибудь проверяет программно ...
13 сообщений из 13, страница 1 из 1
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090192
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиент сервер. Кто-нибудь проверяет программно целосность базы данных. Если да то что проверяете и как (когда)? Средства в ходящие в комплект поставки севера не учитываются в ответе.

--------------------------------------
Делай своё дело и будь что будет.
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090267
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
PARAMETERS pr_zagruska
PUBLIC narush_bazi
ON ERROR do my_obrob_baza WITH ERROR()
&&свободные таблицы
my_tab_free = 'chat'
DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy &&прога просто юза если не открыта
do prov_nal_cdx WITH my_tab_free in prover_baza
DO close_data WITH .F., my_tab_free IN rabota_s_bazoy
my_tab_free = 'zaxvat_ad'
DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy
do prov_nal_cdx WITH my_tab_free in prover_baza
my_tab_free = 'zaxvat_nor'
DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy
do prov_nal_cdx WITH my_tab_free in prover_baza
my_tab_free = 'kto_zanial'
DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy
do prov_nal_cdx WITH my_tab_free in prover_baza
DO close_data WITH .F., my_tab_free IN rabota_s_bazoy

SET DATABASE TO а1 &&твоя база данных
=ADBOBJECTS(gaTables, "TABLE")
FOR i= 1  TO ALEN(gaTables)
	my_tab_free = gaTables(i)
	SET DATABASE TO а1 &&твоя база данных
	DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy
	do prov_nal_cdx WITH my_tab_free in prover_baza
	DO close_data WITH .F., my_tab_free IN rabota_s_bazoy
ENDFOR

SET DATABASE TO а2 &&твоя база данных
=ADBOBJECTS(gaTables, "TABLE")
FOR i= 1  TO ALEN(gaTables)
	my_tab_free = gaTables(i)
	SET DATABASE TO а2 &&твоя база данных
	DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy
	do prov_nal_cdx WITH my_tab_free in prover_baza
	DO close_data WITH .F., my_tab_free IN rabota_s_bazoy
ENDFOR

IF narush_bazi
	IF pr_zagruska
		zagruska.My_movie.Movie = '1.dd' &&если не отключили ролик с загрузкой
		zagruska.Visible = .F.
	ENDIF
	=MESSAGEBOX('Áàçà "Àäìèíñòðàòèâíîé" âåðñèè íàðóøåíà. Çàïóñòèòå "Àäìèíèñòðàòèâíóþ" âåðñèþ. ', 64 ,'Âíèìàíèå')
	CLEAR EVENTS
	QUIT
ENDIF

PROCEDURE my_obrob_baza
	PARAMETERS my_err
	IF INLIST(my_err, 1 , 15 , 41 , 17 , 2091 ) OR INLIST(my_err, 19 , 114 , 1141 , 1707 ) OR INLIST(my_err, 1600 , 1984 )
		narush_bazi = .T.
	ENDIF
	IF INLIST(my_err, 1569 , 1705 )
		RETRY
	ENDIF
ENDPROC

PROCEDURE prov_nal_cdx
	PARAMETERS al_cdx
	my_file1 = my_baza_put + al_cdx + ".CDX"
	my_file2 = my_baza_put + "index\" + al_cdx + ".CDX"
	IF USED(al_cdx) AND EMPTY(CDX( 1 ,al_cdx)) AND (IsFileExist(my_file1) OR IsFileExist(my_file2))
		narush_bazi = .T.
	ENDIF
ENDPROC
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090361
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правельно понял ты работаешь с локальной базой.
1.Открываешь свободнные таблицы.
2.Проверяешь наличие файлов CDX
3.Закрываешь таблицу

То же самое с базой а1 и а2.
В случае ошибки проверяешь код ошибки. Ставишь флаг ошибки или пытаешся открыть еще раз.
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090454
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГенГрумЕсли я правельно понял ты работаешь с локальной базой.
1.Открываешь свободнные таблицы.
2.Проверяешь наличие файлов CDX
3.Закрываешь таблицу

То же самое с базой а1 и а2.
В случае ошибки проверяешь код ошибки. Ставишь флаг ошибки или пытаешся открыть еще раз.
Вообще-то не с локальной...
База может находится на серваке...
Узаю там толко базу данных...
Устанавливаю туда set path...
Открываю повторно при ошибке файл не доступен...
Она встречается при включонном антивируснике(плохая ошибка эт та которая плавающая :-) )
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090461
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо IgorProgrammer.

А сервер какой?
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090480
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще
IgorProgrammer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SET DATABASE TO а1 &&твоя база данных
=ADBOBJECTS(gaTables, "TABLE")
FOR i= 1  TO ALEN(gaTables)
	my_tab_free = gaTables(i)
=====------>	             SET DATABASE TO а1 &&твоя база данных
	DO open_data WITH .F., .F., .F., .F., my_tab_free + ' IN 0' IN rabota_s_bazoy
	do prov_nal_cdx WITH my_tab_free in prover_baza
	DO close_data WITH .F., my_tab_free IN rabota_s_bazoy
ENDFOR


ENDPROC


Код: plaintext
SET DATABASE TO а1 &&твоя база данных

в цикле
Ты просто проглядел или есть тайный смысл? (Извиняюсь).
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090519
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня просто стоит таймер...
В нем куча выполнения...
Иногда слетает база данных...
И возникает ошибка...
Эт мой баг...
До сих пор не могу выловить когда...
Если в крации, то я подстраховываюсь :-)
Реплей (плохая ошибка эт та которая плавающая :-) )
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090526
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервер может быть любым...
Чем лучше тем круче работает прога :-)

Но эт зависит от пользователя...
Многие работают локально...
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090564
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз спасибо. Посмотрю что ответят другие и сделаю своё. Меня еще интересовало стоит ли проверять кол-во записей и т.д. и т.п. Я дамаю привинтить к проге MySql. Стоит ли пограммно (по кнопке) сделать копирование базы данных за 2 дня + за неделю + за месяц в 3 архива. Или оставить это на произвол судьбы (админа).

Да IgorProgrammer у меня такое (таймер) было. Я это решил при помощи :
При входе в таймер запоминаю текущую таблицу
При выходе делаю select имя
Попробуй с базой должно помочь.
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090585
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в админ версии есть настройка...
Делать аррхив наработанных данных в течении 1-5 рабочих дней...
Иль вооще его не делать...
А в таймер еще и сет на базу делать... незачем...
Эт прога отрабатыват при запуске один раз...
Проверку на наличие кол. записей тоже не вижу смысла делать...
Если таблица битая, то сгенерируется ошибка.

Прога проверена...
Еще советую написать свою прогу обработчика ошибок...
Важно там указать:
Код: plaintext
1.
2.
3.
4.
Param kod_oshibki
IF INLIST(kod_oshibki, 1569 , 1705 ) AND popitka <  100 
	popitka = popitka +  1 
	RETRY
ENDIF
popitka - паблик переменная(незабыть ее обнулять)
kod_oshibki - on error do prog with error()
Эт нужно для антивирусников...
Например при :
sele a1
copy to a2
use a2 &&Может сказать че файл занят другим преложением(антивирусником)
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33090622
Фотография ГенГрум
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С сервером буду работать (не эксперементировать, а работать) в первый раз. Как боротся с локальными ошибками я знаю(2 проекта). Теперь их надо переводить на серверную версию.

И еще раз спасибо за код IgorProgrammer.
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33091567
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi IgorProgrammer!

Это НЕ есть клиент-сервер. Там совсем иные функции для проверки (причём лучше это делать не через фоксовые средства, а непосредственно запрашивая системные таблицы или ХП сервера).
НО IMHO лучше не заморачиваться на проверку структур, а просто грамотно организовать обработку ошибок (нет таблицы, нет поля, не тот тип...). Скажем добавление в таблицу "левого" поля НЕ должно приводить к некорректной работе программы (конечно если поле необязательно или заполняется самим сервером - например в триггере) - проверка же это наверняка заметит, и ОШИБОЧНО! скажет что база испорчена.

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Клиент сервер. Кто-нибудь проверяет программно ...
    #33092131
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Igor KorolyovНО IMHO лучше не заморачиваться на проверку структур, а просто грамотно организовать обработку ошибок (нет таблицы, нет поля, не тот тип...).Скажем добавление в таблицу "левого" поля НЕ должно приводить к некорректной работе программы (конечно если поле необязательно или заполняется самим сервером - например в триггере)

Дык у меня эт и проверяется...
От триггеров пришлось отказаться... Они часто падали...
Особенно добавления уникального ключа иль удаление... Когда сделал программно, то все побежало как дети в школу...

->Скажем добавление в таблицу "левого" поля.
Ну тут пользователь сам виноват...
Я еще ни одну прогу не видел где сделана защита от дураков.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Клиент сервер. Кто-нибудь проверяет программно ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]