Зависание при обращении к записи базы данных

CronosPRO, Cronos LX, Cronos MultiPRO
User

Зависание при обращении к записи базы данных

Сообщение User »

Здравствуйте!
Столкнулся со следующей пробуемой:
В одной базе банка (примерно в 100 записях) в поле «фото» (тип поля «файл») по какой-то причине образовалось огромное количество дублей этих самых загруженных фотографий. Речь идет тысячах фотографий. Большую часть вручную получилось удалить. НО осталось несколько записей при обращении к которым «CronosPro» версия 6.4 просто зависает. Вначале программа забирает всю свободную память на компьютере потом сообщает что память закончилась и зависает. Что можно сделать в данном случае? Как удались лишни фото в оставшихся записях? Или как удалить сами записи?
Заранее спасибо!
Zuluss
Сообщения: 71
Зарегистрирован: Чт авг 22, 2024 1:35 pm
Контактная информация:

Re: Зависание при обращении к записи базы данных

Сообщение Zuluss »

Каков объём банка?
Прежде всего проведите ревизию, исправление ошибок и оптимизацию. Дублирующиеся значения во множественном поле должны удалиться.
В тяжелом случае делаете копию структуры банка и обменом перекачиваете данные в новый банк.
Гость

Re: Зависание при обращении к записи базы данных

Сообщение Гость »

Вы спрашиваете количество записей в базах? В районе 400000.
В тяжелом случае делаете копию структуры банка и обменом перекачиваете данные в новый банк.
При этой процедуре не получится ли тоже самое? Т.е. не всё ли скопируется в новый банк? Или как-то можно будет отсечь ненужные фото?
Zuluss
Сообщения: 71
Зарегистрирован: Чт авг 22, 2024 1:35 pm
Контактная информация:

Re: Зависание при обращении к записи базы данных

Сообщение Zuluss »

Гость писал(а): Сб июл 04, 2026 5:18 pm Вы спрашиваете количество записей в базах?
Нет. Список банков-Свойства-Размер банка.
Гость писал(а): Сб июл 04, 2026 5:18 pm Т.е. не всё ли скопируется в новый банк? Или как-то можно будет отсечь ненужные фото?
Можно настроить копировать всё, можно выборочно, т.е. отсечь ненужные записи или ненужные поля.
User

Re: Зависание при обращении к записи базы данных

Сообщение User »

Нет. Список банков-Свойства-Размер банка.
Посмотреть размер банка смогу только в будни. Сейчас нет такой возможности.
Прежде всего проведите ревизию, исправление ошибок и оптимизацию. Дублирующиеся значения во множественном поле должны удалиться.
На рабочем банке всё это обязательно попробую. Но чтобы время не терять, для отработки механизма, скачал Вашу пробную версию программы и банки пробные. И с имитировал похожую ситуацию. Т.е. база «Лицо, ищущее работу» там в записи по человеку в поле фотография надублировал с одинаковым название фото. 10 штук. И запустил последовательно Ревизию (всё выбрал) и Оптимизацию (все пункты выбрал). Но чудо не произошло. Дубли по фото никуда не делись. Что еще можно попробовать?
Zuluss
Сообщения: 71
Зарегистрирован: Чт авг 22, 2024 1:35 pm
Контактная информация:

Re: Зависание при обращении к записи базы данных

Сообщение Zuluss »

Да, так просто с помощью ревизии и оптимизации эту проблему не решить.
Вот код для формы ввода банка Primer.

Код: Выделить всё

local rs=CroApp:GetBank():GetBase(2).RecordSet
for rec in rs.Records do
	local cnt=rec:GetValuesCount(1)
	if cnt>1 then
		local t=rec:GetValue(1,0,"fullname")
		t=table.iunion(t,t)
		for i=cnt,1,-1 do
			local curn=rec:GetValue(1,i,"fullname")
			local curi=table.getkey(t,curn)
			if not curi then 
				rec:DeleteFieldValue(1,i)
			else
				_=table.remove(t,curi)
			end
		end
		rec:Update()
		
	end
end
Удаляет дублирующиеся значения во всем банке. Делаете форму ввода, там кнопку и этот код на неё.
Последний раз редактировалось Zuluss Вс июл 05, 2026 5:23 pm, всего редактировалось 1 раз.
User

Re: Зависание при обращении к записи базы данных

Сообщение User »

Большое спасибо!


Тема поднималась пользователем Anonymous Ср июл 15, 2026 9:52 pm.
Ответить