powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужна помощь Collections
95 сообщений из 95, показаны все 4 страниц
Нужна помощь Collections
    #39332562
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Начал только разбираться с коллекциями
понравилась одна статья
вызов типа
Tables(’orders’).Fields(’order_date’).Caption

За код не ругайтесь (только тест)
Если получится буду потом причесывать
Задача:
Есть Нормативные документы (НД), которые обязательны к применению (R1, R2 , ...., R107)
у каждого НД своя сфера (только легковые или только прицепы) + требования на уровне министерства (разные пункты в зависимости от категории ТС, двигателя, новые или б/у)

занес все это в таблицу (прилагается)

создаю класс условий
Код: sql
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.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
DEFINE  CLASS  Vehicle AS COLLECTION

	PROCEDURE INIT
		LOCAL lcVehicle, loVehicle, lcCategory, loCategory,;
			lcFuel, loFuel, lcRegulation, loRegulation
		USE Vehicle_Regulations
		*****************
		SET FILTER TO cRecType = 'S'
		SCAN
			lcVehicle = TRIM(Vehicle_Regulations.cObjectNam)
			loVehicle = CREATEOBJECT('Vehicl')
			loVehicle.cName = lcVehicle
			THIS.ADD(loVehicle, lcVehicle)
		ENDSCAN
		*****************
		SET FILTER TO cRecType = 'C'
		SCAN
			lcCategory = TRIM(Vehicle_Regulations.cObjectNam)
			loCategory = CREATEOBJECT('Categor')
			loCategory.cName = lcCategory
			i = 1
			FOR EACH loVehicle IN THIS
				DO CASE
					CASE '!'$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
						IF THIS.GETKEY(i)$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
						ELSE
							 loVehicle.Category.ADD(loCategory, lcCategory)
						ENDIF 
					CASE '*'$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
						loVehicle.Category.ADD(loCategory, lcCategory)
					OTHERWISE
						IF THIS.GETKEY(i)$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
							 loVehicle.Category.ADD(loCategory, lcCategory)
						ENDIF
				ENDCASE
				i = i + 1
			ENDFOR
		ENDSCAN
		****************
		SET FILTER TO cRecType = 'F'
		SCAN
			lcFuel = TRIM(Vehicle_Regulations.cObjectNam)
			loFuel = CREATEOBJECT('Fue')
			loFuel.cName = lcFuel
			i = 1
			FOR EACH loVehicle IN THIS
				DO CASE
				CASE '!'$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
					IF THIS.GETKEY(i)$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
					ELSE
						i1 = 1
						FOR EACH loCategory IN loVehicle.Category
							DO CASE
							CASE '!'$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
								IF loVehicle.Category.GETKEY(i1)$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
								ELSE
									loCategory.Fuel.ADD(loFuel, lcFuel)
								ENDIF
							CASE '*'$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
								loCategory.Fuel.ADD(loFuel, lcFuel)
							OTHERWISE
								IF loVehicle.Category.GETKEY(i1)$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
									loCategory.Fuel.ADD(loFuel, lcFuel)
								ENDIF
							ENDCASE
							i1 = i1 + 1
						ENDFOR
					ENDIF
				CASE '*'$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
					i1 = 1
					rrrrr = This.GetKey(i)
					zzzzz = loVehicle.Category.Count
					yyyyy = loVehicle.Category
					FOR EACH loCategory IN yyyyy
						DO CASE
						CASE '!'$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
							IF yyyyy.GETKEY(i1)$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
							ELSE
								loCategory.Fuel.ADD(loFuel, lcFuel)
							ENDIF
						CASE '*'$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
							loCategory.Fuel.ADD(loFuel, lcFuel)
						OTHERWISE
							IF loVehicle.Category.GETKEY(i1)$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
								loCategory.Fuel.ADD(loFuel, lcFuel)
							ENDIF
						ENDCASE
						i1 = i1 + 1
					ENDFOR
				OTHERWISE
					i1 = 1
					FOR EACH loCategory IN loVehicle.Category
						DO CASE
						CASE '!'$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
							IF loVehicle.Category.GETKEY(i1)$GETWORDNUM(Vehicle_Regulations.cCondition, 1, '.')
							ELSE
								loCategory.Fuel.ADD(loFuel, lcFuel)
							ENDIF
						CASE '*'$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
							loCategory.Fuel.ADD(loFuel, lcFuel)
						OTHERWISE
							IF loVehicle.Category.GETKEY(i1)$GETWORDNUM(Vehicle_Regulations.cCondition, 2, '.')
								loCategory.Fuel.ADD(loFuel, lcFuel)
							ENDIF
						ENDCASE
						i1 = i1 + 1
					ENDFOR
				ENDCASE

				i = i + 1
			ENDFOR
		ENDSCAN
		SET FILTER TO
		USE IN Vehicle_Regulations
		RELEASE Vehicle
	ENDPROC

	PROCEDURE AddCategory

	ENDPROC
ENDDEFINE

DEFINE CLASS Vehicl AS MyCUSTOM
	ADD OBJECT Category AS COLLECTION
ENDDEFINE

DEFINE CLASS Categor AS MyCUSTOM
	ADD OBJECT Fuel AS COLLECTION
ENDDEFINE
DEFINE CLASS Fue AS MyCUSTOM
	ADD OBJECT Regulation AS COLLECTION
ENDDEFINE

DEFINE CLASS MyCUSTOM AS CUSTOM
	
	HIDDEN BaseClass, Class, ClassLibrary,;
		   Comment, Height, HelpContextID,;
		   Left, Picture, Tag, Top,;
		   Parent, ParentClass,;
		   WhatsThisHelpID, Width
	cName = ''
	cNumberRegulatoryDocument = ''
	cNameRegulatoryDocument = ''
	cRequirem = ''
ENDDEFINE



и на этапе добавления топлива (дизель/бензин) ругается, что такое свойство уже есть
не могу понять почему? Наверное задал не ту коллекцию (FOR EACH loCategory IN loVehicle.Category)
до этого все работает, и вызывается
Код: sql
1.
2.
Vehicle = NEWOBJECT('Vehicle','regulationsrequirem.prg')
ggg = Vehicle('New').Category('M2')


подскажите, что не так?
и еще, месяц назад видел решение для просмотра коллекций в Дебагере
сейчас не могу найти, может у кого есть ссылочка?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39332628
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошу прощения
ругается не
rikitiki(FOR EACH loCategory IN loVehicle.Category)

а
FOR EACH loCategory IN loVehicle.Category
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39335076
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного разобрался
Вот код, кому интересно (может кто посоветует, как сделать более эффективным?))) )
файл regulationsrequirem.prg
Код: sql
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.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
DEFINE  CLASS  oVehicle AS COLLECTION

	PROCEDURE INIT
		LOCAL lcObject, loObject

		USE Vehicle_Regulations
		SET FILTER TO nRecType = 0
		SCAN
			lcObject = TRIM(Vehicle_Regulations.cObjectNam)
			loObject = CREATEOBJECT('Vehicl', lcObject, lcObject, 1)
			THIS.ADD(loObject, lcObject)
		ENDSCAN
		SET FILTER TO
		USE IN Vehicle_Regulations
		CLEAR CLASS oVehicle
	ENDPROC

ENDDEFINE

DEFINE CLASS Vehicl AS MyCUSTOM

	PROCEDURE INIT(lcName, lcTree, lnTree)
		LOCAL lcOldFilter, lnOldRecno, lcObject,;
			  loObject, lcTreeName, lcCollectionName,;
			  lcAddCollectionName

		DO CASE 
			CASE lnTree = 1
				THIS.ADDOBJECT('Category', 'COLLECTION')
				lcCollectionName = 'Category'
			CASE lnTree = 2
				THIS.ADDOBJECT('Fuel', 'COLLECTION')
				lcCollectionName = 'Fuel'
			CASE lnTree = 3
				THIS.ADDOBJECT('Regulation', 'COLLECTION')
				lcCollectionName = 'Regulation'
		ENDCASE 
		THIS.cName = lcName
		THIS.cTree = lcTree
		lcOldFilter = FILTER()
		lnOldRecno = RECNO()
		SET FILTER TO nRecType = lnTree
		IF !EOF()
			SCAN
				lcObject = TRIM(Vehicle_Regulations.cObjectNam)
				lcTreeName = lcTree + '.' + lcObject
				loObject = CREATEOBJECT('Vehicl', lcObject, lcTreeName, lnTree + 1)
				loObject.cName = lcObject
				loObject.cTree = lcTreeName
				loObject.cNumberRegulatoryDocument = lcObject
				loObject.cNameRegulatoryDocument = Vehicle_Regulations.cHeadLine
*				loObject.cRequirem = Vehicle_Regulations.cRequirem
				IF !EMPTY(ALLTRIM(Vehicle_Regulations.cRequirem))
					loObject.cRequirem = This.RequiremSelect(Vehicle_Regulations.cRequirem, lcTree)
				ELSE 
					loObject.cRequirem = ''
				ENDIF 
				lcAddCollectionName = 'THIS.' + lcCollectionName + '.ADD(loObject, lcObject)'

				FOR i = GETWORDCOUNT(THIS.cTree, '.') TO 1 STEP -1
					DO CASE
						CASE '!'$GETWORDNUM(Vehicle_Regulations.cCondition, i, '.')
							IF GETWORDNUM(THIS.cTree, i, '.')$GETWORDNUM(Vehicle_Regulations.cCondition, i, '.')
								loObject.lPresent = .F.
								EXIT
							ELSE
								LOOP
							ENDIF
						CASE '*'$GETWORDNUM(Vehicle_Regulations.cCondition, i, '.')
							LOOP
						OTHERWISE
							IF GETWORDNUM(THIS.cTree, i, '.')$GETWORDNUM(Vehicle_Regulations.cCondition, i, '.')
								LOOP
							ELSE
								loObject.lPresent = .F.
								LOOP
							ENDIF
					ENDCASE
				ENDFOR
				IF loObject.lPresent
					&lcAddCollectionName
				ENDIF
			ENDSCAN
		ENDIF
		SET FILTER TO &lcOldFilter
		GO lnOldRecno
	ENDPROC 
	
	FUNCTION RequiremSelect(lcRequirem, lcTree)
		LOCAL lcCondition1, lcCondition2, lcCondition,;
			  lcRequiremSelect, llPresent,;
			  lnRequirem, lnCondition
***** ïîäóìàòü		
		IF '{'$lcRequirem
			FOR lnRequirem = 1 TO GETWORDCOUNT(lcRequirem, '{')
				lcCondition = GETWORDNUM(lcRequirem, lnRequirem, '}')
				lcCondition = GETWORDNUM(lcCondition, GETWORDCOUNT(lcCondition, '{'), '{')
				lcRequiremSelect = 	GETWORDNUM(lcCondition, 2, ':')
				lcCondition = GETWORDNUM(lcCondition, 1, ':')
				llPresent = .T.
				FOR lnCondition = GETWORDCOUNT(lcCondition, '.') TO 1 STEP -1
					
					DO CASE
						CASE '!'$GETWORDNUM(lcCondition, lnCondition, '.')
							IF GETWORDNUM(lcTree, lnCondition, '.')$GETWORDNUM(lcCondition, lnCondition, '.')
								llPresent = .F.
								EXIT
							ENDIF
						CASE '*'$GETWORDNUM(lcCondition, lnCondition, '.')
							LOOP
						OTHERWISE
							IF GETWORDNUM(lcTree, lnCondition, '.')$GETWORDNUM(lcCondition, lnCondition, '.')
								LOOP 
							ELSE
								llPresent = .F.
								EXIT
							ENDIF
					ENDCASE
				ENDFOR
				IF llPresent
					RETURN lcRequiremSelect
				ENDIF
			ENDFOR 
				RETURN 'Îøèáêà'
		ELSE 
			RETURN lcRequirem
		ENDIF 
	ENDFUNC 

ENDDEFINE

DEFINE CLASS MyCUSTOM AS CUSTOM
	
	HIDDEN Class, ClassLibrary,;
		   Comment, Height, HelpContextID,;
		   Left, Picture, Tag, Top,;
		   Parent, ParentClass,;
		   WhatsThisHelpID, Width
	cName = ''
	cTree = ''
	cNumberRegulatoryDocument = ''
	cNameRegulatoryDocument = ''
	cRequirem = ''
	lPresent = .T.
ENDDEFINE



далее вызов

Код: sql
1.
2.
3.
4.
5.
6.
7.
oND = Vehicle('New').Category('M1').Fuel('Disel').Regulation
? oND.Count
? Vehicle('New').Category('M1').Fuel('Disel').cTree
FOR EACH loND IN oND
	? loND.cNumberRegulatoryDocument + " '" + loND.cNameRegulatoryDocument + "' "
	? loND.cRequirem
ENDFOR



но возникает вопрос
чисто из интереса
возможно ли regulationsrequirem.prg засунуть в DLL если у меня там только объявление класса?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39336135
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
А можно подробнее цель изложить.
Если это просто изучение коллекции, то ОК.
Если для работы, то сильно смущает многое в коде.
Особенно работа с конкретной таблицей. Скан в ините.

По коду, о логике ваще не смог догадаться)
Но.. .есть предположение, что что-то не то)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39336791
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor,
Суть такая:
Есть орган по сертификации Дорожных транспортных средств (ОС ДТС)
В страну завозят авто, ОС ДТС должен определить нормативные документы (НД) на соответствие которым нужно проверить ДТС, лаборатория проводит испытания и если ДТС соответствует ОС ДТС выдает сертификат, на основании которого регистрируют ДТС в ГАИ.
НД - это ГОСТы, ДСТУ, Правила ЕЕК ООН, ОСТы (около 200), в Области применения этих НД описано к каким конкретно ДТС они относятся (только легковые, только мопеды, дизеля или прицепы определенной категории)
Категорий ДТС - 17: M1, M2, M3, N1, N2, N3, O1, O2, O3, O4, L1, L2, ..., L7
+ Министерство пишет различные приказы (за год может от 2 до бесконечности) в которых может прописать, что испытывать нужно не на весь конкретный НД, а только несколько пунктов (которые тоже зависят от ряда условий) или испытать мопеды по НД мотоциклов (потому как НД на мопеды нет), или новые авто может разделить на дорогие и не дорогие (просто Ужас!!!!!)
Условия ((сертификация типа, новый авто, б/у, переоборудованный); (категория); (топливо:бензин, дизель, газ(3 вида), алкоголь, электро); (приказы Министерства))
Неизменные условия только (категория), остальные условия могут меняться
Эксперт определяет эти все условия и подбирает НД.
У меня есть база ,где эксперт выбирает только вариант и версию ДТС и автоматически формируются первых 3 условия, остается только Министерство.
Раньше делал так: была таблица первое поле - обозначение НД, остальные поля название условий (где прописывал пункты)
Но так как условия менялись быстро, достало добавлять новые поля в таблицу.
Решил сделать загрузку всех условий при запуске программы
Код: sql
1.
oND = Vehicle('New').Category('M1').Fuel('Disel').Regulation


На форме есть EditBox (НД), туда записываю
Код: sql
1.
2.
3.
4.
FOR EACH loND IN oND
	? loND.cNumberRegulatoryDocument + " '" + loND.cNameRegulatoryDocument + "' "
	? loND.cRequirem
ENDFOR


меняя лишь 'New', 'M1', 'Disel' - наглядно
Код: sql
1.
oND = Vehicle(This.Txt1.Val).Category(This.Cmb1.Val).Fuel(This.Cmb2.Val).Regulation


Эксперт может редактировать EditBox (НД).
Да забыл сказать, эксперт может не проводить испытания по определенным НД, если протокол на это, конкретное НД ему представил заявитель.
вот такая вот "лапша"
Если есть идеи лучше готов выслушать, так как уже немного достало это.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39337108
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Описана некая специфика.
В которую надо въезжать.
Но рисуете некий класс...
А класс, ИМХО - это некий уровень абстракции.
Если все вполне конкретно, то можно и без класса, обойтись просто процедурами.

Может с хранением что то не то.

Попробуйте может нарисовать.
Вот что вроде понял.
Есть категории, у каждой категории, свой набор правил.

Видимо выбрав определенную категорию, или что то не то...
Путано объясняете.
Забудьте пока про министерства.
И попробуйте объяснить терминами БД. Как информация соотносится,
Запутался где категории, где НР. Толи это одно и тоже
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39337264
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется вам не класс нужен, а правильная схема хранения.
Из сущностей. Что понял. У вас есть набор НД.
Есть список ДТС- он же категория?
(придите к одной терминологии)
Очевидно они связаны. Явно много ко многим.
Так же шла речь о каких то условиях, экспертах... и пр.
Так же, явно много лишних слов (какая разница, кто меняет, министерство, главк, или просто юзер)

В общем, полагаю, вам стоит четко описать взаимоотношения между сущностями. Возможно и ни каких классов не нгужно будет, а надо просто уложить все в разумную схему хранения.

Попробуйте объяснить все техническим языком.
В процессе объяснения, самому может что от прояснится)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39337563
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor,

Примерно так (картинку прикрепил),
но я так понимаю, нужно еще промежуточные таблицы
например cat_fuel, cat_nd, и т.д.

попробую сделать и отпишусь, что получилось
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39337695
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Не забывайте о бритве Оккама)))

Рисунок хорошо. Но он вряд ли что скажет, без понимания сущностей, и их связей.
Попробуйте написать пояснения.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338505
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor,
Вот, что у меня получилось
Сущность заявка (номер заявки, дата заявки, код авто , ( код нормативка ?), …)
Сущность авто ( код авто , марка, тип, вариант, версия, код категории , код топлива , масса, код состояния авто , …)
Сущность категория ( код категори и, обозначение категории, мин. масса, мах. масса, мин. кол-во мест, мах. кол-во мест)
Сущность топливо ( код топлива , название топлива)
Сущность состояние авто ( код состояния авто , обозначение состояния авто)
Сущность нормативка ( код нормативка , код НД , код пункт НД )
Сущность НД ( код НД , обозначение НД, название НД)
Сущность Пункт НД ( код пункт НД , название пункта)

Между таблицами НД и Пункт НД связь М:М поэтому ввел таблицу Нормативка (как ее привязать к заявке?)

Связь между таблицей Заявка и Нормативка должна быть 1:М

Между таблицами НД и Категория, НД и Топливо, НД и Состояние авто связь М:М, опять вводить промежуточные таблицы?

такие же дела обстоят с таблицей Пункт НД

может добавить в таблицу нормативка ( код категории , код топлива и код состояния )?

у меня в голове уже каша, топчусь на месте, но выхода не вижу

буду очень рад помощи
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338579
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Информации много... но "для размышления" ее нет)
Вы предлагаете какое то свое видение чего то.
А суть задачи... кроме вас никому не ясна.

Давайте так попробуем.
Вы упоминали эксперта. Это для него ПО?
Бум звать его юзер)

Далее... что ему надо?
С чего он начинает?
К нему приезжает авто, и он по нему что то ищет, или наоборот.?

Опишите (вкратце) бизнес процесс

При отношении М:М без третьей таблицы никак))) Но это вовсе не страшно. (особливо, если решите с однозначностью названий)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338757
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor,

Приезжает авто. Експерт
1. составляет договор с владельцем.
2. регистрирует заявку.
3. Определяет состояние авто по заявке, свидетельству регистрации, таможенной декларации (новое, б/у, переоборудованное, незавершенное)
4. В зависимости от п.3 определяет характеристики авто: по свидетельству о регистрации, табличках на авто, одобрению типа, заявке (производитель, масса, вид топлива, кол-во сидений, марка, тип (легково, грузовой,прицеп,...) еще около 150 параметров)
5. В зависимости от массы, кол-ва сидений, типа авто, скорости, кол-ва колес, наличия двигателя, типа кузова, ... определяет категорию (определения категорий расписано в стандарте)
6. Выдает решение для лаборатории, где указывает нормативные документы на соотвествие которым нужно провести испытания (НД -зависят от категории, вида топлива, состояния авто + правил по сертификации)
7.по результатам испытаний выдает заключение (соответствует/не соответствует)
8 выдает сертификат в котором указывает (заявителя, авто с его хар-ками, нд, номера протоколов)

Например НД (R58) относиться только к категории N2,N3,O2,O3,O4, но в зависимости от состояния авто на новые нужно испытывать на все пункты стандарта, а для б/у и переоборудованных только пункты Х.1-Х.12 и Раздел ХХ. Это нужно отобразить в решении.
Есть НД (R67) которое распространяеться только на газовые авто или только на дизеля (R24) (также разные пункты для разных состояний авто и категорий)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338807
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заявка на сертификацию
ID идентификатор заявки
ID_SER
и т.д.

Вид сертификации
ID_SER
Name новый авто, б/у, переоборудованный

Тип топлива
ID_GAZ
Name бензин, дизель, газ(3 вида), алкоголь, электро

Вид ТС
ID_TS
name легковые, мопеды, дизеля или прицепы определенной категории

Нормативные документы (DOC)
ID_DOC
Name Наименование или тип НД ( ГОСТы, ДСТУ, Правила ЕЕК ООН, ОСТы)
Nom Номер документа
Date Дата документа


Дополнительная таблица для DOC отношение DOC к DocP 1:M
ID_DocP
ID_DOC Идентификатор нормативного документа
ID_TS Идентификатор ТС (на какой вид транспорта распространяется его действие)
ID_GAZ
Nom_PP Номер пункта НД по данному ТС (к примеру)

rikitiki вот Вам примерная структура (уж насколько понял из Вашего объяснения) я бы сделал примерно так.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338851
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rikitikiasdor,

5. В зависимости от массы, кол-ва сидений, типа авто, скорости, кол-ва колес, наличия двигателя, типа кузова, ... определяет

Думается мне..., лучше создать справочник Авто , к примеру ВАЗ 2108, ВАЗ 1118, нисан **** и т.д. с их характеристиками (тип ТС, количество мостов, колес, тип двигателя и т.д.). В дальнейшем нужно будет только выбрать авто из справочника, указать его состояние.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338861
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать.
В решении несколько НД.
Например:R13;R48(только количество и цвет);R43(п.п. 1.3-1,6; 2.1);R49
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338891
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_FixRikitikiasdor,

5. В зависимости от массы, кол-ва сидений, типа авто, скорости, кол-ва колес, наличия двигателя, типа кузова, ... определяет

Думается мне..., лучше создать справочник Авто , к примеру ВАЗ 2108, ВАЗ 1118, нисан **** и т.д. с их характеристиками (тип ТС, количество мостов, колес, тип двигателя и т.д.). В дальнейшем нужно будет только выбрать авто из справочника, указать его состояние.
Так и есть,
И работает,
Проблема с НД, раньше прописывал жестко правила к конкретным "авто" в процедуре. Выходили изменения и я переписывал процедуры. Достало.
+ попадались уникальные авто- опять переписывал. Захотел создать нечто обобщенное поэтому придумал класс на основе коллекций и 1таблицы условий, чтобы автоматом формировалось все возможные варианты НД для каждого авто.
Проблемка- когда НД десять терпимо, когда 150 злит, когда будет 300, меня пошлют. (имею ввиду время формирования класса)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338971
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это оказалось самым инофрмативным.
RikitikiТак и есть,
И работает,
Проблема с НД, раньше прописывал жестко правила к конкретным "авто" в процедуре. Выходили изменения и я переписывал процедуры. Достало.
+ попадались уникальные авто- опять переписывал. Захотел создать нечто обобщенное поэтому придумал класс на основе коллекций и 1таблицы условий, чтобы автоматом формировалось все возможные варианты НД для каждого авто.
Проблемка- когда НД десять терпимо, когда 150 злит, когда будет 300, меня пошлют. (имею ввиду время формирования класса)

Вот поверьте, ни при чем тут класс!
Здесь нужно правильную схему БД создать, и не будет проблем.
Итак есть авто и НД
К 1 авто, приписано некое количество НД
В случае изменения, некоторые связи пропадают, новые возникают.
Ясно что связь М:М
Так?
Ясно, что при появлении нового авто, надо все прописать (а можно на клиенте копию сделать с близкого, и ее отредактировать)
Как бы кажется все просто.
Или что то не учли пока?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338978
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RikitikiПроблема с НД, раньше прописывал жестко правила к конкретным "авто" в процедуре. Выходили изменения и я переписывал процедуры. Достало.

Вы пропустили первое моё сообщение, обратите внимание на структуру таблиц Doc и DocP. В таблице Doc описываются основные данные о НД (номер, дата, тип, наименование и т.д.), в таблице DocP описываются пункты НД предъявляемые к ТС с определенными характеристиками, Отношение Doc к DocP один ко многим. В результате получаем привязку не к модели автомобиля, а к его характеристикам.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39338987
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_FixRikitikiПроблема с НД, раньше прописывал жестко правила к конкретным "авто" в процедуре. Выходили изменения и я переписывал процедуры. Достало.

Вы пропустили первое моё сообщение, обратите внимание на структуру таблиц Doc и DocP. В таблице Doc описываются основные данные о НД (номер, дата, тип, наименование и т.д.), в таблице DocP описываются пункты НД предъявляемые к ТС с определенными характеристиками, Отношение Doc к DocP один ко многим. В результате получаем привязку не к модели автомобиля, а к его характеристикам.
Я не пропустил, но пока за рулем и не могу попробовать.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339000
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RikitikiЯ не пропустил, но пока за рулем и не могу попробовать.
В общем получается, выбрав авто из справочника, мы уже знаем его характеристики, данные характеристики в дальнейшем используем в SQL запросе к таблице DocP и Doc, можно еще добавить поле дата окончания действия пункта НД (на случай его отмены или изменения, дабы сохранить историю). Но это все в общих чертах.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339001
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя из вашего описания.
Интерес представляет начиная с п.4
В п.4 и п.5 Юзер Каким то образом (опыт!!!))) ), определят хар-ки авто.
Полагаю, возможно вместо таблицы авто, можно использовать какую то иную сущность, которая собирает в себе эти хар-ки.
Из вашего описания, следует, что у этой таблицы, неограниченное кол-во полей.
В это наверное уперлись? Что здесь менять надо, и это достает.

Можно хранить данные иначе.
Есть табл. с характеристиками - features.
Для начала всего 2 поля id,Name

Есть таблица которая должна отображать сущность из п.4 и п.5 - categ
2 поля id,Name
Теперь между ними создаем связь M:M -LinkFeatures
В результате на любую категорию, можете назначить, произвольное кол-во хар-ик.

К categ привязаны НД (или пункты НД непонятно) Видимо так же M:M

Т.е. БП выглядит так. Определившись с хар-ками, выбрали строку катег, а по ней, подтягивается набор НД.
Не все угадал?)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339012
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorВ п.4 и п.5 Юзер Каким то образом (опыт!!!))) ), определят хар-ки авто.

Юзер - Ванга), он не правильно выразился, характеристики указаны в заявлении и приложенных к заявлению дополнительных документах.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339014
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorВот это оказалось самым инофрмативным.
RikitikiТак и есть,
И работает,
Проблема с НД, раньше прописывал жестко правила к конкретным "авто" в процедуре. Выходили изменения и я переписывал процедуры. Достало.
+ попадались уникальные авто- опять переписывал. Захотел создать нечто обобщенное поэтому придумал класс на основе коллекций и 1таблицы условий, чтобы автоматом формировалось все возможные варианты НД для каждого авто.
Проблемка- когда НД десять терпимо, когда 150 злит, когда будет 300, меня пошлют. (имею ввиду время формирования класса)

Вот поверьте, ни при чем тут класс!
Здесь нужно правильную схему БД создать, и не будет проблем.
Итак есть авто и НД
К 1 авто, приписано некое количество НД
В случае изменения, некоторые связи пропадают, новые возникают.
Ясно что связь М:М
Так?
Ясно, что при появлении нового авто, надо все прописать (а можно на клиенте копию сделать с близкого, и ее отредактировать)
Как бы кажется все просто.
Или что то не учли пока?
Если считать,что "авто" в вашем понимании это набор только 3 атрибутов (категория, тип топлива, состояние авто) тогда верно.
Я не хочу связывать НД и транспортное средство (ТС) (атрибуты:марка,версия,вариант,массы, ширина,...)
Поскольку одинаковые ТС попадаются очень редко, а вот "авто"-постоянно.
5органов у каждого своя база, таблицы по нормативке сбрасываю им я.
Прописывать локально -да, но все мне звонят и просят внести изменения. Иногда добиться чего хотят и где просто не реально. Поэтому
Сам изучаю все законы и прописываю всем НД, поскольку сам эксперт.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339052
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rikitiki,
много неясных слов.
авторЯ не хочу связывать НД и транспортное средство (ТС) (атрибуты:марка,версия,вариант,массы, ширина,...)
Поскольку одинаковые ТС попадаются очень редко, а вот "авто"-постоянно.

Уверен, вы понимаете что сказали. Я нет.
автор5органов у каждого своя база, таблицы по нормативке сбрасываю им я.
Прописывать локально -да, но все мне звонят и просят внести изменения. Иногда добиться чего хотят и где просто не реально. Поэтому
Сам изучаю все законы и прописываю всем НД, поскольку сам эксперт.

Это наверное просто крик души. К делу вряд ли относится)

>Юзер - Ванга), он не правильно выразился, характеристики указаны в заявлении и приложенных к заявлению дополнительных >документах.
Ну а какая разница? Где б они не были. Либо Вангует, либо еще как. Нам отсюда точно не видно. Никакого описания процесса в общем то нет.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339070
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorВ п.4 и п.5 Юзер Каким то образом (опыт!!!))) ), определят хар-ки авто.


))))))))

если ТС стоял на учете (в любой стране), то есть имеется свидетельство регистрации- значит б/у
если произвел замену агрегатов (официальное разрешение на переоборудование) - переоборудованный
может быть новый, но имеется только рама и кабина - считается как незавершенный
остальные - новые

Просто накипело все это. Все требуют новую программу (изменились процедуры и условия), переделываю старую, но хочется сделать более универсально, поскольку еще одного такого перехода не переживу, и ..... застрял.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339099
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Вы читали что я написал.
Плакать котрконструктивно.
Что там не устраивает, или непонятно?
О способе выбора хар-к не было ни слова.
Если есть какой то алгоритм, так вы его умалчиваете)
Да и опустить можно наверное пока это. Главное то что беспокоит, угадал?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339109
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitikiПросто накипело все это. Все требуют новую программу (изменились процедуры и условия), переделываю старую, но хочется сделать более универсально, поскольку еще одного такого перехода не переживу, и ..... застрял.
Перемен... требуют Наши сердца!
Пробуйте предложенный мной вариант. Один нормативный документ имеет несколько пунктов с определенными требованиями к определенным характеристикам транспортного средства (для размышления). А вообще почитайте первых три (основные) правила нормализации базы данных .
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339171
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorИз вашего описания, следует, что у этой таблицы, неограниченное кол-во полей.


135

asdorМожно хранить данные иначе.
Есть табл. с характеристиками - features.
Для начала всего 2 поля id,Name

Есть таблица которая должна отображать сущность из п.4 и п.5 - categ
2 поля id,Name
Теперь между ними создаем связь M:M -LinkFeatures
В результате на любую категорию, можете назначить, произвольное кол-во хар-ик.

К categ привязаны НД (или пункты НД непонятно) Видимо так же M:M

Т.е. БП выглядит так. Определившись с хар-ками, выбрали строку катег, а по ней, подтягивается набор НД.
Не все угадал?)

Давайте опустим характеристики, предположим что есть всего 4 таблицы

есть таблица Category ( 2 поля: idCategory, name) - категория
есть таблица Fuel (2 поля: idFuel, name) - топливо
есть таблица СarСondition (2 поля: idСarСondition, name) - состояние (нов., б/у, переоб., ...)
есть таблица ND (6 полей: idND, enddata, name, nom, sign M, punkt M) - где name (Правила, ГОСТ, ДСТУ, ТУ У, Директива, ДСТУ ГОСТ, ...); nom - номер (58, 12078, 3649, ...); sign M - полное название; punkt M - пункты
если нормализовать таблицу ND (6 полей: idND, enddata, idnormativ, punkt M), поскольку пункты к (name, nom, sign M) - могут быть разные (соответсвенно name, nom, sign M - повторяются)
создаем таблицу Normativ (4 поля: idnormativ, name, nom, sign M)
как между таблицами Category, Fuel, СarСondition и ND создать связи М:М?

создать некую таблицу RRR (4 поля: idCategory, idFuel, idСarСondition, idND)?
Сколько же записей будет в таблице? (предположим любой idND распространяется на все idCategory, idFuel, idСarСondition, только для этого idND около 1000 записей если таблица Category, Fuel, СarСondition содержит по 9 записей)
я же писал idnormativ около 180, а idND больше

то есть перебрать (допустим 1000 записей) легче, чем строку
name nom sign условия по пунктам область самого normativПравила ООН R13-01 Единообразные предписания {New.N1.*:1.4.2; 2.1.1; 2.3}{New.!N1O1O2.*:раздел 13}{New.O1O2.*:5.1.2; 5.1.4; 5.2.2; раздел 4 (п.п. 1.4.2; 3.1; 3.2)}{Used.*.*:п.п. 5.1.2 - 5.1.4; 5.2}{Converted.*.*:раздел 4 (п.п. 1.4.2; 1.5; 2.1.1; 2.3; 3.1; 3.2)} *.!M1L1L2L3L4L5L6L7.*
где *.!M1L1L2L3L4L5L6L7.*- СarСondition.Category.Fuel
После ":" - пункты normativ

может в самой таблице можно как-то указывать "!" или только для "этих"?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339196
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitiki
то есть перебрать (допустим 1000 записей) легче, чем строку
В Вашем варианте должно звучать: Перебрать меньшее количество строк и в каждой строке парсить текст.

В моем случае будет примерно так
SELECT *;
FROM RRR;
WHERE idCategory = lnCategory OR idFuel = lnFuel OR idСarСondition=lnCarCondition

lnCategory, lnFuel, lnСarСondition - переменные
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339225
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vik_Fix,
По моему, мы с вами, решаем разные проблемы.
То о чем думаю я, ваш конструкция не решает.

Я полагаю, что у ТС 2 проблемы. Это собрать в 1 запись множество характеристик.
И частое изменение этого.
Я описал как.
И по выбранной строке категорий, выбрать НД. Которых тоже много, и они постоянно меняются.

Вот эти проблемы я решал своей схемой.

Поясните, что решает ваша.

Но настоящая проблема ТС неизвестна.
Он ее тщательно скрывает.

На прделагаемые решения... он не говорит чем они не устраивает, и предлагает... пардон... (((
авторто есть перебрать (допустим 1000 записей) легче, чем строку

Конечно легче. Это мгновенно.
Почему то вас пугает кол-во записей. Уверяю. 1365 записей, это не много. Это мало, это очень мало.
А вот криво построенная БД, это много... очень много ненужного кода, и постоянные изменения в нем.

Предложение 4 таблицы... на фига не понял. Они для чего, какую проблему решают.
У вас много эмоций. У вас совершенно нет тех. описания. Лаконичного.
И при проектировании БД надо мыслить не "министрерствами" и "нормативными документами" А некими кортежами, сущностями...
Надо понять как различные кучки информации, согласуются. Попробовать это нормализовать.
При таком подходе, гарантирован успех. В конце концов.
А если исходить от кода. То не спасут не коллекции, ничего. Код придется постоянно менять. (Не говоря о том что для этого и существуют БД)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339232
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_Fixrikitikiто есть перебрать (допустим 1000 записей) легче, чем строку
В Вашем варианте должно звучать: Перебрать меньшее количество строк и в каждой строке парсить текст.

В моем случае будет примерно так
SELECT *;
FROM RRR;
WHERE idCategory = lnCategory OR idFuel = lnFuel OR idСarСondition=lnCarCondition

lnCategory, lnFuel, lnСarСondition - переменные

это, я как раз и понимаю.

Наверное просто ищу варианты, чтобы не заполнять 400000 записей
Для их проверки и заполнения надо делать форму (придумать) (без визуализации запутаюсь)

В моем варианте - открыл dbf и исправил
поставил *, и не переживаешь, что пропустил что-то.

Может преобразовать таблицу
catfuelСarСonditionR1R2R3...R128M1DiselNew1.3-5.7...-N2GasolineUsed5.43.6-...-
к виду
PraviloM1.Disel.NewN2.Gasoline.UsedR11.35.4R2-3.6R35.7-

потом !empty(M1.Disel.New)
select или scan
но не представляю как реализовать

попробую вариант с таблицей RRR и потом отпишусь.


asdorМожно хранить данные иначе.
Есть табл. с характеристиками - features.
Для начала всего 2 поля id,Name

Есть таблица которая должна отображать сущность из п.4 и п.5 - categ
2 поля id,Name
Теперь между ними создаем связь M:M -LinkFeatures
В результате на любую категорию, можете назначить, произвольное кол-во хар-ик.
Не совсем понял
если можно примерчик
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339237
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Пожалуй невнимательно прочел.
авторкак между таблицами Category, Fuel, СarСondition и ND создать связи М:М?

Пожалуй правильный вопрос.
И ответ тоже, в общем случае правильный.
Именно к этому и надо стремиться.

Но все же здесь есть вопрос к вам.
Из этих 4 таблиц, какая является главной-ведущей.
К какой надо привязаться.
По любому, конкретно к 1 й записи, основной таблицы, может быть привязано, любое кол-во записей других таблиц.
Вы привели строку таблицы
Как она получается.
Явно поля "условия по пунктам" и "область самого normativ" получены откуда то.
А что первично?
name nom sign ?
И что хочется?
Просто имеется и другая возможность предоставить этот материал. Т.н. мастер - детали.
Т.е в шапке name nom sign (если верно угадал).
А в деталях таблица "условия по пунктам" и "область самого normativ"
Ну на этом телепатия закончилась)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339243
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorНа прделагаемые решения... он не говорит чем они не устраивает, и предлагает... пардон... (((
авторто есть перебрать (допустим 1000 записей) легче, чем строку

Конечно легче. Это мгновенно.
Почему то вас пугает кол-во записей. Уверяю. 1365 записей, это не много. Это мало, это очень мало.
А вот криво построенная БД, это много... очень много ненужного кода, и постоянные изменения в нем.

Предложение 4 таблицы... на фига не понял. Они для чего, какую проблему решают.
У вас много эмоций. У вас совершенно нет тех. описания. Лаконичного.
И при проектировании БД надо мыслить не "министрерствами" и "нормативными документами" А некими кортежами, сущностями...
Надо понять как различные кучки информации, согласуются. Попробовать это нормализовать.
При таком подходе, гарантирован успех. В конце концов.
А если исходить от кода. То не спасут не коллекции, ничего. Код придется постоянно менять. (Не говоря о том что для этого и существуют БД)

Простите если я Вас оскорбил, я этого точно не хотел
Постараюсь все переварить заново, и использовать Ваши варианты
Пугает не количество записей, пугает, что я в них запутаюсь.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339252
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorrikitiki,
Но все же здесь есть вопрос к вам.
Из этих 4 таблиц, какая является главной-ведущей.
К какой надо привязаться.
По любому, конкретно к 1 й записи, основной таблицы, может быть привязано, любое кол-во записей других таблиц.
Вы привели строку таблицы
Как она получается.
Явно поля "условия по пунктам" и "область самого normativ" получены откуда то.
А что первично?
name nom sign ?
И что хочется?
Просто имеется и другая возможность предоставить этот материал. Т.н. мастер - детали.
Т.е в шапке name nom sign (если верно угадал).
А в деталях таблица "условия по пунктам" и "область самого normativ"
Ну на этом телепатия закончилась)

прикрепил файл с условиями для новых авто
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339259
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorVik_Fix,
По моему, мы с вами, решаем разные проблемы.
То о чем думаю я, ваш конструкция не решает.

Я полагаю, что у ТС 2 проблемы. Это собрать в 1 запись множество характеристик.
И частое изменение этого.

Поясните, что решает ваша.

Но настоящая проблема ТС неизвестна.
Он ее тщательно скрывает.

Походу на самом деле разные, про категории (множество характеристик) я что-то упустил.
Мой вариант заключается в том, что бы произвести нормализацию базы данных, а именно у него нормативный документ (далее НД) хранится одной строкой, но НД в себе содержит множество требований. Вот я ему и предлагаю создать дополнительную таблицу в которой каждое требование или группа требований будет храниться отдельной записью.
Покрайней мере я так понял))). А SQL запрос это ответ на его вопрос про 1000 строк, что проще запросом выбрать из 1000, чем перебирать и парсить 20 строк.

{New.!N1O1O2.*:раздел 13} - это вообще убило, шифровка!

А так, согласен, надо чтоб внятно описал процедуру работы и критерии по которым выносится то или иное решение, можно даже опираясь на один из его НД и с примерами.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339267
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_Fix{New.!N1O1O2.*:раздел 13} - это вообще убило, шифровка!


Взял пример jSon
поскольку данные по Транспортным средствам беру с открытой базы в интернете
данные передаются в формате jSon
потом парсю и заношу в БД
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339277
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorПросто имеется и другая возможность предоставить этот материал. Т.н. мастер - детали.
Т.е в шапке name nom sign (если верно угадал).
А в деталях таблица "условия по пунктам" и "область самого normativ"


Вот это мне кажется и нужно, где можно почитать (желательно с примерами)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339278
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
авторПростите если я Вас оскорбил, я этого точно не хотел

Так и не было такого. Просто... ну раздражает иногда непонимание)))
Но судя по
авторНаверное просто ищу варианты, чтобы не заполнять 400000 записей
Для их проверки и заполнения надо делать форму (придумать) (без визуализации запутаюсь)

В моем варианте - открыл dbf и исправил
поставил *, и не переживаешь, что пропустил что-то.

Вообще беда.
Т.е. вы работает с дбф, как с екселем?
Не примите за издевку, тогда может лучше ексель?

Ясно, что без визуализации, при нормализации, работать просто невозможно.
Мне лично яснее стало, откуда проблемы.

Схема построения приложения, упрощенно следующая.
Создание правильной БД. Создание приложений, работающих с этим БД.
Конечно, процессы перехлестываются)
Т.е. либо вы готовы строить визуальную часть, либо... все не имеет смысла.
авторприкрепил файл с условиями для новых авто
Совсем неясен столбец "Познака вимог до документів, необхідних для підтвердження відповідності для КТЗ категорії"
Он поделен еще... немного бы пояснений не помешало.)))

Тем не менее. Как можно показать приведенный документ
Слева "Фари (ближнього і дальнього світла)" в общем то что у вас в "Об’єкт затверд¬жен¬ня"
А справа таблица с перечислением R1 - R123
Количество записей любое.
И еще таблица с Познака вимог до документів, необхідних для підтвердження відповідності для КТЗ категорії"
Но там что то не совсем ясно.
авторесли можно примерчик

Попробую накидать на ваших данных.
Ну и визуально заодно, если времени хватит)

авторПугает не количество записей, пугает, что я в них запутаюсь.

Как раз, при правильной нормализации. И ясном UI, наоборот, все будет гораздо проще.
Поверьте, в любой бухгалтерии, гораздо больше и записей, и связей.
И ничего, не очень умные бух-ра - справляются)))
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339279
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vik_FixasdorVik_Fix,
По моему, мы с вами, решаем разные проблемы.
То о чем думаю я, ваш конструкция не решает.

Я полагаю, что у ТС 2 проблемы. Это собрать в 1 запись множество характеристик.
И частое изменение этого.

Поясните, что решает ваша.

Но настоящая проблема ТС неизвестна.
Он ее тщательно скрывает.

Походу на самом деле разные, про категории (множество характеристик) я что-то упустил.
Мой вариант заключается в том, что бы произвести нормализацию базы данных, а именно у него нормативный документ (далее НД) хранится одной строкой, но НД в себе содержит множество требований. Вот я ему и предлагаю создать дополнительную таблицу в которой каждое требование или группа требований будет храниться отдельной записью.
Покрайней мере я так понял))). А SQL запрос это ответ на его вопрос про 1000 строк, что проще запросом выбрать из 1000, чем перебирать и парсить 20 строк.

{New.!N1O1O2.*:раздел 13} - это вообще убило, шифровка!

А так, согласен, надо чтоб внятно описал процедуру работы и критерии по которым выносится то или иное решение, можно даже опираясь на один из его НД и с примерами.
+100500)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339307
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitikiVik_Fix{New.!N1O1O2.*:раздел 13} - это вообще убило, шифровка!


Взял пример jSon
поскольку данные по Транспортным средствам беру с открытой базы в интернете
данные передаются в формате jSon
потом парсю и заношу в БД
Так все равно же парсите)
Так может сразу и привести в человеческий вид?
Что там значимо?

Во вложении 5 табличек, которые могут хранить все данные, из вашего дока.
Может не угадал (даже наверняка) с группами.
Возможно там несколько иначе.
Группы - это ваш "Познака вимог до документів, необхідних для підтвердження відповідності для КТЗ категорії"

Все очень примитивно. В реале, наверное что то придется добавлять. Но что пока вижу, именно так все укладывается.
Крайне просто.
Попробуйте разобраться.

И конечно же, без UI просто неудобно работать... Но все же, сначала данные, что бы ясно было что редактировать
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339310
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это дополнение к закону
таких 4 дополнения
писал дополнения не я ))))
asdorСовсем неясен столбец "Познака вимог до документів, необхідних для підтвердження відповідності для КТЗ категорії"
Он поделен еще... немного бы пояснений не помешало.)))
Поделен на категории
asdorТем не менее. Как можно показать приведенный документ
Слева "Фари (ближнього і дальнього світла)" в общем то что у вас в "Об’єкт затверд¬жен¬ня"
А справа таблица с перечислением R1 - R123
Количество записей любое.
Лень двигатель прогресса
Я как эксперт открываю "Нормативний документ, вимоги" например R56, в нормативном документе в разделе "Область применения" написано "Настоящие правила применяются для официального утверждения фар с лампам накаливания/ которые являются источником только ближнего света и которые устанавливаются на мопеды и приравниваемых к ним транспортных средствах."
тоесть, относится к категории L1 и L2
"буква" А (пункт) означает маркировка (есть ли маркировка согласно этому правилу?)
описание "букв" - после таблицы - "пункты"
asdorИ еще таблица с Познака вимог до документів, необхідних для підтвердження відповідності для КТЗ категорії"
Но там что то не совсем ясно.
авторесли можно примерчик


примерчик во вложении
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339330
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorГруппы - это ваш "Познака вимог до документів, необхідних для підтвердження відповідності для КТЗ категорії"


Получается если я правильно понял
у меня 5 груп
Состояние (это и есть таблица из ворда, всего пока 5 таблиц)
Категория
Топливо
Норматив
Пункт норматив

и Link - 10 штук
Состояние-Категория
Состояние-Топливо
Состояние-Норматив
Состояние-Пункт норматив
Категория-Топливо
Категория-Норматив
Категория-Пункт норматив
Топливо-Норматив
Топливо-Пункт норматив
Норматив-Пункт норматив

а потом sele писать из 10 Link?
или делать link на link?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339349
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Упс... а вложения то и нет(((

Опять ничего не понял(
Не удивительно. Пример не приложился.
Сюда запихиваю.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339351
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,

Скачайте таблички. Посмотрите.
Про 5 групп не понял.
И вообще... как бы много лишних слов?
Поймите, кто читает, не может отделить эмоции от тех. данных. Не путайте нас.)))

Сейчас попробую, примитивный проектик на эти табалички нарисовать.
Что бы хоть как то предметно говорить...
А то вообще не ясно, о чем речь.

Я то думал, что док в основе... а тут... то ли просто у вас в голове...
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339357
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorrikitiki,
Упс... а вложения то и нет(((

Опять ничего не понял(
Не удивительно. Пример не приложился.
Сюда запихиваю.
Пример приложился
но я же объяснил, что таблица общая

№объектнормативпознакаМ1M2M3...L71фарыRDBGDBG
не знаю как объединить ячейки

объект - меня не интересует

мне нужны все нормативы
написано N1, и написано кучу R к нему, но N1 может быть дизельный, бензиновый, газовый, они этого не расписывали
эксперт сам смотрит из области применения R
заполняю таблицы, скоро сброшу то, что получилось
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339359
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,

Вот примитивный проект.
В _debag в строке
Код: sql
1.
gcHomePath = 'c:\FoxProj\rikitt\'


Пропишите свой путь.
один раз запустите _debag
А дальше... основная форма feature
Там кнопочки добавить, и пр. сделать не успел.
Но как это выглядить может, будет ясно.
Все на очень примитивном уровне. Чисто показать как.
Дизайна нет вообще)))
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339366
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,

Ну.. .последнее надо осмыслить.
Что то кажется проясняется)

Как же тяжко вытягивать инфу)
авторне знаю как объединить ячейки

А зачем?

автормне нужны все нормативы
1. написано N1, и
2. написано кучу R к нему,
3. но N1 может быть дизельный, бензиновый, газовый, они этого не расписывали
4. эксперт сам смотрит из области применения R
5. заполняю таблицы, скоро сброшу то, что получилось


очень путано получилось
1. Есть сущность N
2. К нему куча R
Пока все ясно, и просто. Все то же что приводил
3. Кто они? Где не расписывали. Что вообще значит эта фраза?)))
5. Это наверное просто сообщение мне?
4. Вот тут не ясно, это надо детально объяснить.

Что понял. N к ней R а в R область применения?
> N1 может быть дизельный, бензиновый, газовый
Нифига не ясно!)))
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339400
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorrikitiki,

Вот примитивный проект.
В _debag в строке
Код: sql
1.
gcHomePath = 'c:\FoxProj\rikitt\'


Пропишите свой путь.
один раз запустите _debag
А дальше... основная форма feature
Там кнопочки добавить, и пр. сделать не успел.
Но как это выглядить может, будет ясно.
Все на очень примитивном уровне. Чисто показать как.
Дизайна нет вообще)))
Все отлично
Это я понимаю и делал, но Вы взяли самый простой вариант
Возьмите запись №8
Системи гальмування (R13,R13H, В)
где “В” - а) вимоги R13 або R13Н застосовують залежно від категорії КТЗ;

б) КТЗ категорії М3 (із дизелями) мають бути обладнані зносостійкою системою гальмування або "ретардером";

“В1” - а) для КТЗ категорії М1 – вимоги пунктів 5.1.2; 5.1.4; 5.2 R13Н щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3 до R13Н;

б) для КТЗ категорії N1 – вимоги пунктів 5.1.2; 5.1.4; 5.2.1 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 4 до R13 або вимоги пунктів 5.1.2; 5.1.4; 5.2 R13Н щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3 до R13Н;

в) для КТЗ категорій М2, M3, N2, N3, О3, О4 – вимоги R13 ( крім додатка 13 до R13);

г) для КТЗ категорій О1, О2 – вимоги пунктів 5.1.2; 5.1.4; 5.2.2 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 3.1; 3.2 додатка 4 до R13;

ґ) для КТЗ категорії L - вимоги пунктів 5.1.2 - 5.1.13; 5.2.1; 5.2.2 додатка 3 до R78;

как здесь обойтись 5 таблицами?
Вот здесь у меня и загвоздка
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339401
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или запись №13
Димність КТЗ з дизелями R24,Е
вимоги додатка 5 до R24
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339406
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я Вам сбросил только таблицу
Перелік вимог щодо індивідуального затвердження конструкції нових КТЗ категорій M, N, O, L
еще есть
Перелік вимог щодо індивідуального затвердження конструкції КТЗ категорій M, N, O, L - это б/у и переоборудованные
Перелік вимог щодо затвердження типу малих серій КТЗ категорій M, N, O, L
Перелік вимог щодо затвердження типу КТЗ категорій M, N, O, L

там такие же таблицы только с другими пунктами (буквы А, Б, В,Г и т.д.) к (Нормативний документ, вимоги)

может повторюсь, но эти буквы и есть пункты - они все описаны после таблицы
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339411
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикрепил таблицы, которые у меня получились
таблицы в названии которых знак "_" - таблицы связей

взял только 3 Правила №1, №13, №24
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339562
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уф.... реально инфу клещами тянем)))
Вот для меня самым информативным стал документ с условиями, но появились вопросы. Пока не поймем сути взаимосвязи всех данных, бесполезно предполагать о нормализации отдельно взятых частей.
А вопросы следующие:
Категории транспортных средств M1-M3, N1-N3, O1-O4, L1-L7 - что из себя представляют набор характеристик ТС?

Это все категории или нет?

Объект утверждения - перечень постоянный или меняется (если меняется то как часто)?

Что означает Х; А и А; Х1 + Л - особенно интересуют знаки + и ; почему в одном случае стоит плюс, а в другом точка с запятой?

Если я правильно понимаю, то процедура работы примерно следующая:
По предоставленным Заявителем сведениям о ТС, специалист определяет (неизвестны условия) к какой категории относится ТС ( M1-M3, N1-N3, O1-O4, L1-L7), так же устанавливает его статус (новое или б/у).
Далее, в соответствии со статусом ТС использует определенные условия ( rikitiki нам кинул только по новым ТС) для определения каким НД данное ТС должно соответствовать.

Как-то так, rikitiki - поправь если, что не так.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339563
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Коротко глянул.
Несколько замечаний)
Выкладывая таблицы, сделайте что бы с ними легко было работать)
Либо вместе с dbc, либо сами свободными сделайте)
Зачем усложнять жизнь отвечающим)))

авторвзял только 3 Правила №1, №13, №24

Надеюсь это относится к данным, а не к связям между ними.
Т.е. в этих табличках у вас все? (я не про количество данных, а про структуру данных)

У вас в nd и punktnd есть мемо поля.
Для чего? Что в них?
Предполагаю, что в них и проблема?
Именно туда собираете данные по всем... не знаю термина... правилам?

В общем то структура ясна. Примерно.

Но в результате неких действий, вы хотите что то получить.
Некий набор данных.
Опишите это. На основе своих таблиц. Тока по лаконичней, без лишних слов, но подробно)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339565
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vik_Fix,
Согласен со всеми вопросами.
Еще помню утверждение ТС "ставлю * и нет проблем"
Когда прочел впал в панику))))
Он говорит о чем то своем, о чем больше никто не знает.

И стоит угадать (как кажется) одно, тут же приходит что то новое, и... откат на 2 шага назад)))
ТС стоит, сесть, и без эмоций, человеческими словами, расписать весь БП.
Но очевидно, что у него не выйдет.
Потому тянем по крохе)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339584
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сам отвечу на свой вопрос про категории M, N, O, L
Категории транспортных средств - M, N, O, L
Категория L

Категория L - Мототранспортные средства, в том числе:

Категория L1 - Двухколесные транспортные средства, максимальная конструктивная скорость которых не превышает 50 км/ч, и характеризующиеся:

в случае двигателя внутреннего сгорания - рабочим объемом двигателя, не превышающим 50 см3, или
в случае электродвигателя - номинальной максимальной мощностью в режиме длительной нагрузки, не превышающей 4 кВт.

Категория L2 - Трехколесные транспортные средства с любым расположением колес, максимальная конструктивная скорость которых не превышает 50 км/ч, и характеризующиеся:

в случае двигателя внутреннего сгорания с принудительным зажиганием - рабочим объемом двигателя, не превышающим 50 см3, или
в случае двигателя внутреннего сгорания другого типа - максимальной эффективной мощностью, не превышающей 4 кВт, или
в случае электродвигателя - номинальной максимальной мощностью в режиме длительной нагрузки, не превышающей 4 кВт.

Мотоциклы, мотороллеры, трициклы, в том числе:

Категория L3 - Двухколесные транспортные средства, рабочий объем двигателя которых (в случае двигателя внутреннего сгорания) превышает 50 см3 (или) максимальная конструктивная скорость (при любом двигателе) превышает 50 км/ч.

Категория L4 - Трехколесные транспортные средства с колесами, асимметричными по отношению к средней продольной плоскости, рабочий объем двигателя которых (в случае двигателя внутреннего сгорания) превышает 50 см3 и (или) максимальная конструктивная скорость (при любом двигателе) превышает 50 км/ч.

Категория L5 - Трехколесные транспортные средства с колесами, симметричными по отношению к средней продольной плоскости транспортного средства, рабочий объем двигателя которых (в случае двигателя внутреннего сгорания) превышает 50 см3 и (или) максимальная конструктивная скорость (при любом двигателе) превышает 50 км/ч.

Квадрициклы, в том числе:

Категория L6 - Четырехколесные транспортные средства, масса которых без нагрузки не превышает 350 кг без учета массы аккумуляторов (в случае электрического транспортного средства), максимальная конструктивная скорость не превышает 50 км/ч, и характеризующиеся:

в случае двигателя внутреннего сгорания с принудительным зажиганием - рабочим объемом двигателя, не превышающим 50 см3, или
в случае двигателя внутреннего сгорания другого типа - максимальной эффективной мощностью двигателя, не превышающей 4 кВт, или
в случае электродвигателя - номинальной максимальной мощностью двигателя в режиме длительной нагрузки, не превышающей 4 кВт.

Категория L7 - Четырехколесные транспортные средства, иные, чем транспортные средства категории L6, масса которых без нагрузки не превышает 400 кг (550 кг для транспортных средств, предназначенных для перевозки грузов) без учета массы аккумуляторов (в случае электрического транспортного средства) и максимальная эффективная мощность двигателя не превышает 15 кВт.
Категория M

Категория M - Транспортные средства, имеющие не менее четырех колес и используемые для перевозки пассажиров.

Категория M1 - Транспортные средства, используемые для перевозки пассажиров и имеющие, помимо места водителя, не более восьми мест для сидения - легковые автомобили.

Автобусы, троллейбусы, специализированные пассажирские транспортные средства и их шасси, в том числе:

Категория M2 - Транспортные средства, используемые для перевозки пассажиров, имеющие, помимо места водителя, более восьми мест для сидения, технически допустимая максимальная масса которых не превышает 5 т.

Категория M3 - Транспортные средства, используемые для перевозки пассажиров, имеющие, помимо места водителя, более восьми мест для сидения, технически допустимая максимальная масса которых превышает 5 т.

Транспортные средства категорий M2 и M3 вместимостью не более 22 пассажиров помимо водителя, подразделяются на класс A, предназначенные для перевозки стоящих и сидящих пассажиров, и класс B, предназначенные для перевозки только сидящих пассажиров.

Транспортные средства категорий M2 и M3 вместимостью свыше 22 пассажиров помимо водителя, подразделяются на класс I, имеющие выделенную площадь для стоящих пассажиров и обеспечивающие быструю смену пассажиров, класс II, предназначенные для перевозки преимущественно сидящих пассажиров и имеющие возможность для перевозки стоящих пассажиров в проходе и (или) на площади, не превышающей площадь двойного пассажирского сидения, и класс III, предназначенные для перевозки исключительно сидящих пассажиров.
Категория N

Категория N - Транспортные средства, используемые для перевозки грузов - автомобили грузовые и их шасси, в том числе:

Категория N1 - Транспортные средства, предназначенные для перевозки грузов, имеющие технически допустимую максимальную массу не более 3,5 т.

Категория N2 - Транспортные средства, предназначенные для перевозки грузов, имеющие технически допустимую максимальную массу свыше 3,5 т, но не более 12 т.

Категория N3 - Транспортные средства, предназначенные для перевозки грузов, имеющие технически допустимую максимальную массу более 12 т.
Категория O

Категория O - Прицепы (полуприцепы) к транспортным средствам категорий L, M, N, в том числе: (замечание АСМАП).

Категория O1 - Прицепы, технически допустимая максимальная масса которых не более 0,75 т.

Категория O2 - Прицепы, технически допустимая максимальная масса которых свыше 0,75 т, но не более 3,5 т.

Категория O3 - Прицепы, технически допустимая максимальная масса которых свыше 3,5 т, но не более 10 т.

Категория O4 - Прицепы, технически допустимая максимальная масса которых более 10 т.

Транспортное средство, имеющее не более восьми мест для сидения, не считая места водителя, предназначенное для перевозки пассажиров и грузов, относится к категории:

M1, если произведение предусмотренного конструкцией числа пассажиров на условную массу одного пассажира (68 кг) превышает расчетную массу перевозимого одновременно с пассажирами груза;
N, если это условие не выполняется.


Отсюда следует, что данные о характеристиках нужны только для отнесения ТС к одной из категорий.
В результате для определения НД необходимо только знать категорию, каким топливом питается (дизель, газ, бензин и т.д.) и его состояние (новое, б/у, переоборудованное может еще что-то есть) и тут напрашивается составной индекс по этим трем полям.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339655
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_FixУф.... реально инфу клещами тянем)))
Вот для меня самым информативным стал документ с условиями, но появились вопросы. Пока не поймем сути взаимосвязи всех данных, бесполезно предполагать о нормализации отдельно взятых частей.
А вопросы следующие:
Категории транспортных средств M1-M3, N1-N3, O1-O4, L1-L7 - что из себя представляют набор характеристик ТС?
я писал
Rikitiki5. В зависимости от массы, кол-ва сидений, типа авто, скорости, кол-ва колес, наличия двигателя, типа кузова, ... определяет категорию (определения категорий расписано в стандарте)

Vik_FixЭто все категории или нет?
Да


Vik_FixОбъект утверждения - перечень постоянный или меняется (если меняется то как часто)?
Повторюсь - Объект утверждения - не интересует, удалите эту колонку

Vik_FixЧто означает Х; А и А; Х1 + Л - особенно интересуют знаки + и ; почему в одном случае стоит плюс, а в другом точка с запятой?
Я так понимаю ";" - это "или", а "+" - это "и", (должно выполняться условие Х или А, а во втором случае - должно выполняться условие А или Х1 и Л)
Vik_FixЕсли я правильно понимаю, то процедура работы примерно следующая:
По предоставленным Заявителем сведениям о ТС, специалист определяет (неизвестны условия) к какой категории относится ТС ( M1-M3, N1-N3, O1-O4, L1-L7), так же устанавливает его статус (новое или б/у).
Далее, в соответствии со статусом ТС использует определенные условия ( rikitiki нам кинул только по новым ТС) для определения каким НД данное ТС должно соответствовать.

Как-то так, rikitiki - поправь если, что не так.Все правильно
Vik_FixВ результате для определения НД необходимо только знать категорию, каким топливом питается (дизель, газ, бензин и т.д.) и его состояние (новое, б/у, переоборудованное может еще что-то есть)
Я это и писал в самом начале
asdorТ.е. в этих табличках у вас все? (я не про количество данных, а про структуру данных)да
asdorУ вас в nd и punktnd есть мемо поля.
Для чего? Что в них?в таблице ND поле Memo для названия стандарта
например:
обозначение стандарта:
Правила ЄЕК ООН R14-04
название стандарта:
Единообразные предписания, касающиеся официального утверждения транспортных средств в отношении креплений ремней безопасности, систем креплений ISOFIX и креплений верхнего страховочного троса ISOFIX
Названия бывают очень длинными


в таблице PunktND поле Memo для перечня пунктов
например: из таблицы Word (которую я сбрасывал) для категории М1, дизель, новый - согласно НД R13 должны применяться пункты Х1+В1
где
автор “Х1” -"Х" або протокол випробувань КТЗ, наданий на індивідуальне затвердження;
“Х” -а) окреме затвердження типу та інформаційна підшивка документів;
або

б) протокол випробувань та інформаційна підшивка документів;

або

в) маркування КТЗ щодо відповідності типу за окремим Правилом ЄЕК ООН або альтернативною Директивою ЄС;

або

г) затвердження типу КТЗ ЄС та наявність маркування цього затвердження на КТЗ;
“В1” -а) для КТЗ категорії М1 – вимоги пунктів 5.1.2; 5.1.4; 5.2 R13Н щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3 до R13Н;

б) для КТЗ категорії N1 – вимоги пунктів 5.1.2; 5.1.4; 5.2.1 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 4 до R13 або вимоги пунктів 5.1.2; 5.1.4; 5.2 R13Н щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3 до R13Н;

в) для КТЗ категорій М2, M3, N2, N3, О3, О4 – вимоги R13 ( крім додатка 13 до R13);

г) для КТЗ категорій О1, О2 – вимоги пунктів 5.1.2; 5.1.4; 5.2.2 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 3.1; 3.2 додатка 4 до R13;


так как у нас категория М1 нас интересует расшифровка "Х" и В1 с подпунктом а) ,
поэтому в поле Мемо таблицы PunktND заносим следующую информацию:
окреме затвердження типу та інформаційна підшивка документів або протокол випробувань та інформаційна підшивка документів або маркування КТЗ щодо відповідності типу за окремим Правилом ЄЕК ООН або альтернативною Директивою ЄС або затвердження типу КТЗ ЄС та наявність маркування цього затвердження на КТЗ, у разі відсутності переліченого підтвердженням відповідності є випробування згідно п.п. 5.1.2; 5.1.4; 5.2; додаток 3 (1.4.2; 2.1.1; 2.3)

asdorНо в результате неких действий, вы хотите что то получить.
Некий набор данных. То, что я хочу получить, я сбрасывал в txt файле (прикрепил еще раз Хочу получить.rar ).
(для конкретной категории с конкретным топливом и конкретным состоянием) это определенный перечень :
обозначений стандартов + перечень пунктов к каждому стандарту
Прикрепил dbc и файлы txt для примера
в названии файла txt указана категория, топливо и состояние
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339687
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorVik_Fix,
ТС стоит, сесть, и без эмоций, человеческими словами, расписать весь БП.
Но очевидно, что у него не выйдет.
Потому тянем по крохе)
У человека ломается его "мировозрение" на структуру данных. Для меня было не понятно то, что сначала он говорил про характеристики и связь их с НД, но потом о них как-то забылось и все пошло в немного другом русле.
На текущий момент я почти понял всю суть, но пришлось гадать.
Основные задачи программы:
после заполнения характеристик транспортного средства (или выбрать авто из справочника) Специалистом в программе - необходима процедура которая на основании введенных данных определит категорию ТС.

вторая процедура уже основываясь на категории , типе двигателя (введенного пользователем или выбранного из справочника) и состояния (новое, б/у, ...) производит выборку нормативных документов.
В принципе ничего сверх естественного (никаких связей М:М не будет), но непонимание (не верное объяснение) может завести в тупик.

Главное чтоб топик стартер подтвердил мои догадки ))))
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339718
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitikiя писал
Rikitiki5. В зависимости от массы, кол-ва сидений, типа авто, скорости, кол-ва колес, наличия двигателя, типа кузова, ... определяет категорию (определения категорий расписано в стандарте)

Не спорю писали, но проблема в том, что все писали немного скомкано и порциями, когда выдали вторую-третью порцию информации первая уже теряется и теряется общая картина. И надо было уточнить, что это за категории и как они связаны с характеристиками, а то получается неизвестность.
rikitikiЯ так понимаю ";" - это "или", а "+" - это "и", (должно выполняться условие Х или А, а во втором случае - должно выполняться условие А или Х1 и Л)
Вот еще одна тонкость, которая может частично изменить структуру данных.

rikitikiVik_FixВ результате для определения НД необходимо только знать категорию, каким топливом питается (дизель, газ, бензин и т.д.) и его состояние (новое, б/у, переоборудованное может еще что-то есть)
Я это и писал в самом начале
Как и в первом моем пункте ответе.

Сейчас попробую это все переварить и сделать в виде таблиц.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39339747
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_FixasdorVik_Fix,
ТС стоит, сесть, и без эмоций, человеческими словами, расписать весь БП.
Но очевидно, что у него не выйдет.
Потому тянем по крохе)
У человека ломается его "мировозрение" на структуру данных. Для меня было не понятно то, что сначала он говорил про характеристики и связь их с НД, но потом о них как-то забылось и все пошло в немного другом русле.
На текущий момент я почти понял всю суть, но пришлось гадать.
Основные задачи программы:
после заполнения характеристик транспортного средства (или выбрать авто из справочника) Специалистом в программе - необходима процедура которая на основании введенных данных определит категорию ТС.

вторая процедура уже основываясь на категории , типе двигателя (введенного пользователем или выбранного из справочника) и состояния (новое, б/у, ...) производит выборку нормативных документов.
В принципе ничего сверх естественного (никаких связей М:М не будет), но непонимание (не верное объяснение) может завести в тупик.

Главное чтоб топик стартер подтвердил мои догадки ))))

Нужна только вторая процедура.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340177
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorVik_Fix,
ТС стоит, сесть, и без эмоций, человеческими словами, расписать весь БП.

Есть входные известные данные ( категория, вид топлива, состояние авто )
на основании этих данных, нужно
( опираясь на таблицу, которая находиться в Word-овском файле ) произвести выборку
НД (колонка "Нормативний документ, вимоги" ) и пунктов НД (то есть, описания букв А, Б, В, Г, Д, ...., Я, или их сочетания, описание букв находится после Word-овской таблицы).

Напомню, таблица в Word-овском файле - частный случай , который отвечает за состояние авто - новый .
Похожие таблицы есть для состояние авто - б/у и переоборудованные

Откуда берутся входные данные, меня не интересует, просто есть и все (позвонили сказали, сам придумал, попросили проверить и т.д.)

набор данных категория строго определен: M1, M2, M3, N1, N2, N3, O1, O2, O3, O4, L1, ..., L7

набор данных вид топлива со временем может пополняться, на сегодня существует такой набор данных: алкоголь, бензин, СПГ (CNG) (скраплений природний газ), дизельне паливо, електрика, ЗНГ (LPG), СПГ (CNG) (стиснений природний газ, природний газ), водород, None (None - это для категории O, у них нет двигателя, и соответственно топлива).

набор данных состояние авто со временем может пополняться, на сегодня существует такой набор данных: новый, б/у, переоборудованный .

Постарался изложить без эмоций))))
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340218
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Наконец то вменяемое описание)))!!!
Давайте забудем все прошлые слова. И это будет первым, и отталкиваться далее только от него.
авторНД (колонка "Нормативний документ, вимоги") и пунктов НД (то есть, описания букв А, Б, В, Г, Д, ...., Я, или их сочетания, описание букв находится после Word-овской таблицы).

Напомню, таблица в Word-овском файле - частный случай, который отвечает за состояние авто - новый.
Похожие таблицы есть для состояние авто - б/у и переоборудованные


Надеюсь что слова "таблица в вордовском файле" - это для топика.
А в реале это все же таблица БД.
Выбрать такую строку по заданным вами условиям, легко.
Как полагаю, с колонкой "Нормативний документ" все ясно.
Этот вариант как бы рассматривали.
А вот с пунктнд не до конца ясно.
В итоге то, надо выбрать некие буковки, в зависимости от правил ";" "+" ?

Вопрос верно ли все угадал.
Остается четко рассказать про правила пунктнд.

Да и про мемо. В одном случае там просто очень длинный текст. Тогда все ОК.
А там где собираете туда данные - неверно.
Но это кажется опять пунктнд

В общем надо детально с ним разбираться.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340308
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorНадеюсь что слова "таблица в вордовском файле" - это для топика.
А в реале это все же таблица БД.нет, это пока "таблица в вордовском файле"
как представить ее в виде таблиц БД и какие связи не могу понять (здесь основная загвоздка).
Если бы "БУКВЫ" (на пересечении строк и столбцов) обозначали одно и тоже,
но у "БУКВ" -
есть ссылки на другие "БУКВЫ"

есть разделение на "подБУКВЫ"
Пример 1:
автор “Х1” - "Х" або протокол випробувань КТЗ, наданий на індивідуальне затвердження;

“Х” -
а) окреме затвердження типу та інформаційна підшивка документів;
або

б) протокол випробувань та інформаційна підшивка документів;
або

в) маркування КТЗ щодо відповідності типу за окремим Правилом ЄЕК ООН або альтернативною Директивою ЄС;
або

г) затвердження типу КТЗ ЄС та наявність маркування цього затвердження на КТЗ;

“В1” -

а) для КТЗ категорії М1 – вимоги пунктів 5.1.2; 5.1.4; 5.2 R13Н щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3 до R13Н;

б) для КТЗ категорії N1 – вимоги пунктів 5.1.2; 5.1.4; 5.2.1 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 4 до R13 або вимоги пунктів 5.1.2; 5.1.4; 5.2 R13Н щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3 до R13Н;

в) для КТЗ категорій М2, M3, N2, N3, О3, О4 – вимоги R13 ( крім додатка 13 до R13);

г) для КТЗ категорій О1, О2 – вимоги пунктів 5.1.2; 5.1.4; 5.2.2 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 3.1; 3.2 додатка 4 до R13;



asdorА вот с пунктнд не до конца ясно.
В итоге то, надо выбрать некие буковки, в зависимости от правил ";" "+" ?не "буковки", а именно описание, поскольку буковка .... (см. выше)

давайте договоримся "БУКВА" - это пересечение столбца и строки
"пунктНД" - это нужное описание "БУКВЫ"

asdorОстается четко рассказать про правила пунктнд.Пишется закон, в нем такая таблица - вот и все правила)))
Могу рассказать как я определяю "пунктНД".
авторМне пришли данные категория - М1 , топливо - бензин , состояние - новый 1 Выбрал соответствующую Word-овскую таблицу - согласно состоянию

2 Смотрю столбец М1 в Word-овском документе

3 На пересечении первой строки и столбца М1 стоит "БУКВА" А

4 Ищу описание буквы А это ( маркування щодо відповідності Правилу ЄЕК ООН або альтернативній Директиві ЄС. У разі відсутності маркування на пристроях освітлення і світлової сигналізації підтвердженням відповідності є позитивний висновок, наданий технічною службою ) - это и есть "пунктНД", запоминаю, записываю

5 В столбце "Нормативний документ, вимоги" 11 НД (R1, 2, R8, R20, R56, R57, R72, R76, R82, R98, R112, R123), поэтому открываю каждый документ и смотрю Раздел "Область применения"

6 после этого остаются только (R1, 2, R8, R20, R98, R112, R123) поскольку (R56, R57, R72, R76, R82) распространяются на другие категории (L)

7 записываю R1, 2 (маркування щодо відповідності Правилу ЄЕК ООН або альтернативній Директиві ЄС. У разі відсутності маркування на пристроях освітлення і світлової сигналізації підтвердженням відповідності є позитивний висновок, наданий технічною службою); R8 (маркування ...), R20 (маркування ...), R98(маркування ...), R112(маркування ...), R123(маркування ...)

авторВ примере простой вариант, в котором НД зависит только от категории , а "БУКВА" не зависит ни от чего
8 ищу следующее пересечение (и повторяю пункты 4- 8)
И вот на пересечение строки 8 и столбца М1 стоят "БУКВЫ" ( Х1+В1 ) описание в Примере 1
и так "пунктНД" = полностью описание "БУКВЫ" Х , поскольку дополнительных условий нет + описание "БУКВЫ" В1 (но здесь появляются новые условия)
авторизучив условия мы выбираем подпункт а) , поскольку только он относится к нашей категории.
также в этом подпункте написано что нам следует применить только НД R13H "БУКВА" В в столбце "Нормативний документ, вимоги" говорит, что при выборе НД R13 или R13H нужно учесть категорию
Итого к пункту 7 добавляем запись R13-H (окреме затвердження типу та інформаційна підшивка документів або протокол випробувань та інформаційна підшивка документів або маркування КТЗ щодо відповідності типу за окремим Правилом ЄЕК ООН або альтернативною Директивою ЄС або затвердження типу КТЗ ЄС та наявність маркування цього затвердження на КТЗ, у разі відсутності переліченого підтвердженням відповідності є випробування згідно п.п. 5.1.2; 5.1.4; 5.2 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 3)

Строка 30 - НД R67 - пересечение "БУКВА" Х1+Т , но НД зависит от топлива пропускаем этот НД
у нас топливо - бензин , а "Область применения" говорит, что НД применяются к официальному утверждению специального оборудования транспортных средств категорий M и N1 , двигатели которых работают на сжиженном нефтяном газе .
и так до конца таблицы

потом сохраняю результат, так как данные категория - М1 , топливо - бензин , состояние - новый очень часто повторяются, и пока не поменяют Закон я пользуюсь результатом (чтобы лишний раз не перебирать таблицу)



asdorДа и про мемо. В одном случае там просто очень длинный текст. Тогда все ОК.
А там где собираете туда данные - неверно.
Но это кажется опять пунктндЯ не собираю данные
создал таблицу где id - это "БУКВА", а поле МЕМО (то, что эта "БУКВА" обозначает, то есть "пунктНД")
куда еще записать значение "БУКВЫ" "В1 г)" (см. пример 1)
авторвимоги пунктів 5.1.2; 5.1.4; 5.2.2 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ (вимоги застосовують з урахуванням конструкції КТЗ), а також вимоги пунктів 1.4.2; 3.1; 3.2 додатка 4 до R13


asdorВ общем надо детально с ним разбираться.(((
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340335
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitikiнет, это пока "таблица в вордовском файле"
как представить ее в виде таблиц БД и какие связи не могу понять (здесь основная загвоздка).
Упс!!!! Так вот она в чем главна проблема!

rikitikiЕсли бы "БУКВЫ" (на пересечении строк и столбцов) обозначали одно и тоже,
но у "БУКВ" -
есть ссылки на другие "БУКВЫ"

есть разделение на "подБУКВЫ"
Пример 1:

Дальше непонятно.
Прочитать такое не могу.
Найдите синонимы в русском.
Да и не обязательно перевод (боюсь такая специфика, что вряд ли поможет)
Просто, придумайте ясный пример...

rikitikiдавайте договоримся "БУКВА" - это пересечение столбца и строки
"пунктНД" - это нужное описание "БУКВЫ"

Было бы неплохо, если это правда.
Такое легко пеобразуется в нормальную таблицу.

rikitikiasdorОстается четко рассказать про правила пунктнд.Пишется закон, в нем такая таблица - вот и все правила)))
Могу рассказать как я определяю "пунктНД".
авторМне пришли данные категория - М1 , топливо - бензин , состояние - новый 1 Выбрал соответствующую Word-овскую таблицу - согласно состоянию


Вот. Давайте навремя представим, что есть таблица, каждая строка которой - ваш ворд. ОК.
Тогда переписать вышеприведенную фразу легко.
Запомним первую проблему. Надо создать структуру хранения вордовской таблицы.
rikitiki2 Смотрю столбец М1 в Word-овском документе

Легко выбирается, поскольку он задан в начальных условиях отбора.
rikitiki3 На пересечении первой строки и столбца М1 стоит "БУКВА" А


Всегда 1й? Тогда имеет смысл сразу это значение, вместе с М1 и выбирать.
rikitiki4 Ищу описание буквы А это ( маркування щодо відповідності Правилу ЄЕК ООН або альтернативній Директиві ЄС. У разі відсутності маркування на пристроях освітлення і світлової сигналізації підтвердженням відповідності є позитивний висновок, наданий технічною службою ) - это и есть "пунктНД", запоминаю, записываю


Этот момент, опять ясен не до конца.
Если А везде одинакова, то проще.
Если для каждой категории, А своё - то связей поболе
rikitiki5 В столбце "Нормативний документ, вимоги" 11 НД (R1, 2, R8, R20, R56, R57, R72, R76, R82, R98, R112, R123), поэтому открываю каждый документ и смотрю Раздел "Область применения"


Опять же вопрос. R1, 2, R8... это для всех одно и то же?

Увы... отвлекают)))
Хотя бы на что спросил, ответьте.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340360
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorУпс!!!! Так вот она в чем главна проблема!Да
asdorrikitikiЕсли бы "БУКВЫ" (на пересечении строк и столбцов) обозначали одно и тоже,
но у "БУКВ" -
есть ссылки на другие "БУКВЫ"

есть разделение на "подБУКВЫ"
Пример 1:

Дальше непонятно.
Прочитать такое не могу.
Найдите синонимы в русском.
Да и не обязательно перевод (боюсь такая специфика, что вряд ли поможет)
Просто, придумайте ясный пример...
авторнапример на пересечении у нас стоят "БУКВЫ" Х1 + В1
в описании "БУКВЫ" Х1 написано смотри "БУКВУ" Х, а если описание "БУКВЫ" Х не исполняется, тогда "Отжимайся"
в описании "БУКВЫ" Х написано, если ты без руки, или без ноги или без головы или другая справка, то ты не отжимаешься
в описании "БУКВЫ" В1 написано, если тебе 16 отжимайся 50 раз, если 25 отжимайся 45 раз, если 70 достаточно 10 разТак понятней? (есть ссылка на другую "БУКВУ" и есть условия для самой "БУКВЫ")
asdorВот. Давайте навремя представим, что есть таблица, каждая строка которой - ваш ворд. ОК.ОК

asdorТогда переписать вышеприведенную фразу легко.
Запомним первую проблему. Надо создать структуру хранения вордовской таблицы.
rikitiki2 Смотрю столбец М1 в Word-овском документе

Легко выбирается, поскольку он задан в начальных условиях отбора.То есть
NDM1M2M3R1AA-
asdorrikitiki3 На пересечении первой строки и столбца М1 стоит "БУКВА" А


Всегда 1й? Тогда имеет смысл сразу это значение, вместе с М1 и выбирать.Нет. На первом пересечении где есть "БУКВА"

asdorrikitiki4 Ищу описание буквы А это ( маркування щодо відповідності Правилу ЄЕК ООН або альтернативній Директиві ЄС. У разі відсутності маркування на пристроях освітлення і світлової сигналізації підтвердженням відповідності є позитивний висновок, наданий технічною службою ) - это и есть "пунктНД", запоминаю, записываю


Этот момент, опять ясен не до конца.
Если А везде одинакова, то проще.
Если для каждой категории, А своё - то связей поболетолько "БУКВА" А - у всех одинакова, а остальные "БУКВЫ" к сожалению нет.
asdorrikitiki5 В столбце "Нормативний документ, вимоги" 11 НД (R1, 2, R8, R20, R56, R57, R72, R76, R82, R98, R112, R123), поэтому открываю каждый документ и смотрю Раздел "Область применения"


Опять же вопрос. R1, 2, R8... это для всех одно и то же?Нет. Для каждой Word-овской таблицы столбец "Нормативний документ, вимоги" со своим набором НД, но НД могут и повторяться, поэтому и ввел понятие состояние .
По поводу описания "БУКВ" (то есть "пунктНД") для различных состояний но одинаковых категорий и топлива тоже могут отличаться
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340481
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Система асимптотически усложняется)))
Явно, крайне много зависимостей, и удержать их в голове, невозможно.
С "Отжимайся" - отличная аналогия. Главная ясная всем.

Глянул файлы тхт что выложили.
Т.е. вам надо получить такой отчет-документ в итоге?

Что хочется сказать, что структура, что вы прислали, в общем то верна.
И теперь понятно, где главная сложность.

Мой совет. Опишите правила формирования документа.
Математически, Графически, еще как то... можно комплексно.
Дайте прочитать соседу. разберется или нет.
Уйдите от своей терминологии. Физкультурная - отлично!!!))) Всем понятна.
Далее, писать что А одинакова, а остальные нет, не имеет смысла. Это всего лишь частный случай неодинаковости.

Т.е. по любому, прежде чем проектировать схему БД, надо четко, по человечески представлять все взаимодействия.
Еще. Не обязательно рисовать все сразу в таблицах. Рисуйте для начала группой, которая ясна. Отдельно, можно расшифровать-раскрыть эту группу. (Типичный подход CASE средств. Можете глянуть как с их помощью проектируют. Может навеет какие мысли. Использовать конечно сложно будет. Много времени изучение займет)

Важно. Не путайте выдачу информации юзеру, и хранение данных.
Это очень разные вещи.
Когда данные хранятся правильно, согласовано, юзеру их можно легко отдать в любом удобном ему виде. Это совсем другая задача. (Ну не совсем конечно, но другая))).
При правильном проектировании, ничего в коде клиента менять не придется. Но данные вводить, все равно надо))) Без этого никуда. И прописывать все связи. И это должно быть удобно-понятно юзеру. Эт. тоже почти отдельная задача.

Еще раз. На вскидку. У вас вполне разумная структура. А там где дошло до сложного, там ничего нет.
Можно представить, что вордовский док, это набор таблиц, есть основная - doc, запись которой, и представляет из себя документ.
Значит, эта таблица, должна собирать из др. таблиц все нужные сведения. Она видимо, и есть, той самой таблицей связи M:M

Собственные дела, не дают серьезно вдуматься. А дошли до вещей, когда надо посидеть, и подумать)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340511
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitiki
asdorпропущено...

Этот момент, опять ясен не до конца.
Если А везде одинакова, то проще.
Если для каждой категории, А своё - то связей поболетолько "БУКВА" А - у всех одинакова, а остальные "БУКВЫ" к сожалению нет.

Добрый день!
Смотрю Вы тут тоже дошли до разбора полетов с буквами, вчера весь вечер размышлял над этим.
В общем внесу небольшую ясность.

asdor - вордовский файл это документ "Условия" который rikitiki выкладывал на второй странице данной ветки форума.
Насколько я понял, БУКВЫ в документе это ссылки на однотипный текст (пункт правил), сделано это только для удобной работы человека (покрайней мере избавляет от 10 и более ячеек с однотипным текстом). Но перенимать эти БУКВЫ в базу данных, а особенно как-то к ним привязываться не стоит (если только как дополнительный реквизит записи).
Надо исходить от НД, то есть у одного НД имеется несколько пунктов с правилами (требованиями), в свою очередь в пункте может быть несколько подпунктов (уточняющих критерий применения пункта). Отсюда для меня вырисовывается следующая структура

Таблица НД
ID_ND - Идентификатор нормативного документа
NAME_ND - Наименование нормативного документа (R03, R63 и т.д.)
TEXT_ND - Дополнительный текст или еще что либо

Таблица пунктов НД
ID_P - Идентификатор пункта требований
ID_ND - Идентификатор НД к которому данный пункт принадлежит
NAME_P - Что-то вроде наименования пункта (п. 2.2 и т.д.)
TEXT_P - Текст пункта
COMENT - Вот тут можно указать, что данный пункт имеет код А в таком-то документе

Таблица подпунктов НД
ID_PP - Идентификатор подпункта
ID_P - Идентификатор пункта НД
NAME_PP - Что-то вроде наименования подпункта (п.п. а) )
TEXT_PP - Текст подпункта

Далее можно подумать над созданием таблицы правил, в которой уже будет прописано, что пункт требований с ID_P = 12 применяется к ТС категории N1, типом двигателя дизель и состоянием новый.

Примерно как она может выглядеть
Таблица правил
ID_RUL
ID_ND
ID_P
ID_PP
NAME_RUL
ID_CAT
ID_MOTTYPE
ID_STAT

Это только пример, надо еще думать над структурой, могу запросто ошибиться т.к. в голове еще структура данных своей проги.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340571
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я понял, документ в котором приведена таблица - что-то вроде таможенного регламента, вот сейчас у меня в голове не сходятся некоторые пункты.
Пример:
Строка с объектом технического регулирования "Кріплення ременів безпеки" в ней указано, что к креплению ремней безопасности предъявляются требования кода А; Х1+Г если исходить из того, что rikitiki писал ; - это ИЛИ, а + - это И, то получается требования пункта с кодом А или пунктов Х1 и Г .
Но под кодом А речь идет об освещении и осветительной сигнализации, такое ощущение, что код А сюда вообще по ошибке попал.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340582
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitikiname nom sign условия по пунктам область самого normativПравила ООН R13-01 Единообразные предписания {New.N1.*:1.4.2; 2.1.1; 2.3}{New.!N1O1O2.*:раздел 13}{New.O1O2.*:5.1.2; 5.1.4; 5.2.2; раздел 4 (п.п. 1.4.2; 3.1; 3.2)}{Used.*.*:п.п. 5.1.2 - 5.1.4; 5.2}{Converted.*.*:раздел 4 (п.п. 1.4.2; 1.5; 2.1.1; 2.3; 3.1; 3.2)} *.!M1L1L2L3L4L5L6L7.*

Вот к стати, автор приводил пример, как у него храниться информация. По сути тут нужно содержимое "условия по пунктам" вынести в отдельную таблицу, ну и еще немного подмарафетить.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340586
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorТ.е. по любому, прежде чем проектировать схему БД, надо четко, по человечески представлять все взаимодействия.
Еще. Не обязательно рисовать все сразу в таблицах. Рисуйте для начала группой, которая ясна. Отдельно, можно расшифровать-раскрыть эту группу. (Типичный подход CASE средств. Можете глянуть как с их помощью проектируют. Может навеет какие мысли. Использовать конечно сложно будет. Много времени изучение займет)
Постараюсь изучить, спасибо
Vik_FixТаблица подпунктов НД
ID_PP - Идентификатор подпункта
ID_P - Идентификатор пункта НД
NAME_PP - Что-то вроде наименования подпункта (п.п. а) )
TEXT_PP - Текст подпункта

Далее можно подумать над созданием таблицы правил, в которой уже будет прописано, что пункт требований с ID_P = 12 применяется к ТС категории N1, типом двигателя дизель и состоянием новый.

Примерно как она может выглядеть
Таблица правил
ID_RUL
ID_ND
ID_P
ID_PP
NAME_RUL
ID_CAT
ID_MOTTYPE
ID_STATЯ тоже думал над таблицей подпунктов и таблицей правил, Но Вы предлагаете немного другой подход, отдельно связать Таблицы НД (между собой) не связывая каждую отдельно с Таблицами CAT, MOTTYPE, STAT, а уже в таблице правил связать все воедино. Нужно попробовать. Задам наверное глупый вопрос.) А если у пункта нет подпункта?

Еще, ночные размышления.
Очень глупая мысль, как следствие такой же вопрос.
Есть ли общепринятая структура БД описывающая "дерево"?
Я ведь худо-бедно получил правильный объект, может его взять и разложить обратно, но уже в готовую базу?
и увидеть, что получилось.
Может я зациклился на некоторых не важных связях, или тех без которых можно обойтись?
Или может без избыточности не обойтись.
Просто да или нет. Если да то где взять или почитать?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340595
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_FixНасколько я понял, документ в котором приведена таблица - что-то вроде таможенного регламента, вот сейчас у меня в голове не сходятся некоторые пункты.
Пример:
Строка с объектом технического регулирования "Кріплення ременів безпеки" в ней указано, что к креплению ремней безопасности предъявляются требования кода А; Х1+Г если исходить из того, что rikitiki писал ; - это ИЛИ, а + - это И, то получается требования пункта с кодом А или пунктов Х1 и Г .
Но под кодом А речь идет об освещении и осветительной сигнализации, такое ощущение, что код А сюда вообще по ошибке попал.
Люди ошиблись, они имели ввиду "маркировку креплений"
Там по документу еще есть пару ошибок (вписаны не те буквы)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340664
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitiki Задам наверное глупый вопрос.) А если у пункта нет подпункта?

То в " таблице подпунктов " не будет записи для этого пункта (естественно это должно заполняться через визуальную форму и в обработчике кнопки "Записать" будет проверка, если поле подпункт пусто, то в таблицу п/п ничего не вносим), а при выводе просто запрашивает все записи из таблицы п/п где ID_P равен к примеру 16 (но это опять же пока условно).

rikitikiОчень глупая мысль, как следствие такой же вопрос.
Есть ли общепринятая структура БД описывающая "дерево"?


Такого нет, в БД (не во всех, мы говорим про реляционную СУБД) вообще отсутствует понятие "дерево", есть основные правила нормализации данных (это первых три правила нормализации), почитайте про них и станет все гораздо понятней.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340683
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_Fixrikitiki Задам наверное глупый вопрос.) А если у пункта нет подпункта?

То в " таблице подпунктов " не будет записи для этого пункта (естественно это должно заполняться через визуальную форму и в обработчике кнопки "Записать" будет проверка, если поле подпункт пусто, то в таблицу п/п ничего не вносим), а при выводе просто запрашивает все записи из таблицы п/п где ID_P равен к примеру 16 (но это опять же пока условно).Я не об этом, в таблице правил как указать ID_PP? Или делать запись в таблице подпунктов ID_PP, пусто?

Vik_FixrikitikiОчень глупая мысль, как следствие такой же вопрос.
Есть ли общепринятая структура БД описывающая "дерево"?


Такого нет, в БД (не во всех, мы говорим про реляционную СУБД) вообще отсутствует понятие "дерево", есть основные правила нормализации данных (это первых три правила нормализации), почитайте про них и станет все гораздо понятней.Понял

Начал вникать в AllFusion ERwin Data Modeler, пока вроде ничего сложного.)))
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340702
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitikiЯ не об этом, в таблице правил как указать ID_PP? Или делать запись в таблице подпунктов ID_PP, пусто?

А... вот про что речь, я просто полностью не продумывал (привел как пример), но можно оставить пустым или добавить логические поля.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340735
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По диагонали пробежал вашу переписку.
авторОчень глупая мысль, как следствие такой же вопрос.
Есть ли общепринятая структура БД описывающая "дерево"?

Вовсе не глупый!!!!
Когда вы описывали взаимодействие буковок, сразу родилась мысль, о иерархических данных.

Стандартно, хранение таких данных в 1й таблице организуют так.
Есть PrentID
Т.е. запись таблицы ветки, ссылается на запись этой же таблицы, узел этой ветки.
Если не ясно, приведу пример. Там все просто
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340737
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorСтандартно, хранение таких данных в 1й таблице организуют так.
Есть PrentID
Т.е. запись таблицы ветки, ссылается на запись этой же таблицы, узел этой ветки.
Если не ясно, приведу пример. Там все простоесли не затруднит, сбросьте простенький примерчик
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340748
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже, вовсе не глупы вопрос.
авторА если у пункта нет подпункта?

В случае дерева, сами понимаете, просто заканчивается...
В случае другой организации, все равно ничего страшного.

Кстати, дерево то хорошо. Но нужно достаточно доводов в его пользу. Все же, работать с ним, получать данные, сложнее.
Это не совсем реляционность.
Тем не менее, надо, стоит, рассмотреть все варианты.

Кстати - любую функциональность. 2 профи, построят совершенно по разному (или могут ) и не докажешь у кого лучше)))
Поэтому вариантов построения достаточно сложной системы, всегда больше одного
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340753
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitikiЕсли не ясно, приведу пример. Там все простоесли не затруднит, сбросьте простенький примерчик[/quot]

Прямо здесь накидаю.
1 поле ид, второе парент, 3- имя
1.1. Дерево
2.1.Ветка1
3.1.Ветка2
4.2.Листок1Ветки1
5.3.Листок1Ветки2
.....
Надеюсь ясно?
и так до бесконечности.
Для работы с деревом, применяют рекурсию.
Проблемы с выборками.
Но все равно, иногда это эффективнее.
В общем надо тщательно считать)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340758
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще про буковки.
А посмотрите, как там с графами?
Может из применить? Попробуйте и в эту сторону подумать
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340808
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот это сообщение, на сколько не подходит?
19853571
Просто в голове некоторая каша)))
Половина забыл, половина и не помнил)))
Но ТС очевидно, очень хорошо в теме.
Если оно подходит, то там допиливать не сложно.

Там главное, 2 уровня. Если по определению, больше уровней невозможно, то это одно.
Если уровней может быть любое количество, то все хуже))) (Дерево)

Попробуйте ответить на это.
И если в общем то подходит, то сразу включайте критику, и ищите что не подходит для вас. Что не сходится.
Ошибки проектирования - дорого обходятся в дальнейшем)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39340853
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо asdor и Vik_Fix за Ваше время и советы
Хочу сначала опробовать 2 варианта предложенных Вами (вариант с таблицей подпункты и вариант с деревом)
авторПример "дерева" поняла потом отпишусь
вечером командировка и до компа доберусь только в воскресенье вечером
на вскидку:
вариант с таблицей подпункты - не могу пока представить визуализацию данных (таблица правил)
вариант с деревом - визуализация ole объект Treeview
Выборка - вариант с таблицей подпункты - будет намного проще

В общем пока не попробую ничего сказать не смогу.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39341365
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
Мысль пришла.
Vik_Fix как то упомянул, что все эти буковки, просто искусственные создания.
Так может о них лучше забыть.
Как результат - мо должны получить данные в виде приложенных тхт.
Т.е. просто набор фраз.
Делаем таблицу с этими фразами. Не повторяющимися.
id,Name,Фраза

А дальше, делаем сколь угодно сложную таблицу (группу таблиц) в которой описаны зависимости. Правила получения этих фраз.
Полагаю в этом случае и UI становится понятнее, при внесении нового.
Ввел новую фразу. И прописал к ней все условия. Изменилось что то - здесь же поменял(Изменил, добавил, удалил) (условия или фразу)
То бишь, на кэйсы я зря направил, тут не БП, а математика.

Просто ТС рассказывает логику, исходя из того как это организовано сейчас.
А надо от нее отвлечься. И описать ее, забыв о буквах и нд. Просто именно все возможные зависимости.
Лучше взять пару абстрактных пунктов (файлов ворд), и начать спускаться вниз, постепенно добавляя, забытые связи.
И для тестов, ограничиться минимальным набором. Главное, все правила охватить.
А может и сам ворд не нужен...
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342336
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
В общем, на выходных под кружечку пивка меня осенило)))
Схема из таблиц "Пункты" и "Под пункты" - не совсем хороша, уж больно мудрено придется логику выстраивать. Но тут же подумав, а чем подпункт отличается от пункта? (да в общем-то ничем), исходя из этого нарисовалась немного другая структура БД.

"Таблица пункты и подпункты"
ID_dDoc - идентификатор дополнительной записи документа (возможно и не нужен)
ID_DOC - идентификатор документа (из таблицы НД)
ID_TYPE - идентификатор типа записи (0 - Пункт, 1 - Подпункт)
Num_P - номер пункта из документа ("1, 2, 3" и т.д.)
Num_PP - номер подпункта из документа ("1, 2, 3" или "а, б, в" и т.д.), у пунктов в данном поле 0 или пусто
TEXT_dDoc - текст пункта или подпункта

"Таблица типов записи"
ID_TYPE
NAME_TYPE

Дальше строим составные индексы, к примеру так: ID_DOC + NUM_P + NUM_PP.
В интерфейсе программы при заполнении полей NUM_P и NUM_PP, необходимо сделать проверку на вводимые данные.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342378
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет
Вчера поздно добрался
3 дня в голове рисовал схемы
до чего дошел
8 таблиц
"Таблица категории"
Id_Category - идентификатор категории N(2)
Name_Cat - название категории C(2)
Denotation - описание категории M(4)

"Таблица топливо"
Id_Fuel - идентификатор топлива N(2)
Name_Fuel - название топлива C(20)

"Таблица обозначение НД"
Id_Sign - идентификатор обозначения N(2)
Name_Sign - обозначение НД C(20)

"Таблица НД"
Id_Regulation - идентификатор НД N(4)
Id_Sign - идентификатор обозначения НД
Number - номер НД C(20)
Denotation - название НД M(4)
Date_Begin - дата введение в действие НД D(8)
Date_End - дата окончания действие НД D(8)

"Таблица сфера применения"
Id_Scope - идентификатор сферы применения N(5)
Id_Regulation
Id_Category
Id_Fuel
Denotation - сфера применения НД M(4)

"Таблица состояния"
Id_Condition - идентификатор состояния N(2)
Name_Condition - название состояния C(20)

"Таблица пунктов"
Id_PunktND - идентификатор пункта НД N(3)
Denotation - текст пункта НД M(4)

ну и в завершении
"Таблица правил"
Id_Rules - идентификатор правил
Id_PunktND
Id_Scope или Id_Regulation (еще думаю)
Id_Condition

Логика такая
есть "таблица категорий" - она постоянная
есть "таблица топливо" - заполняем по максимуму (здесь пока проблемы с добавлением новой записи)
при вводе новой записи в "таблицу НД" сразу заполняем "таблицу сфера применения" - поскольку она не меняется у НД, пока он действует
Ну и в конце описываем "таблицу правил"
Все вроде просто, но сегодня первый день возле компа, сейчас попробую реализовать интерфейс
Пока вижу только проблему с добавлением нового топлива
Выслушаю Ваши замечания.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342432
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rikitikiесть "таблица топливо" - заполняем по максимуму (здесь пока проблемы с добавлением новой записи)

А в чем именно? Опишите в чем может быть проблема при добавлении новой записи?

"Таблица обозначение НД" - что в этой таблице будет?
"Таблица пунктов" - тот же самый вопрос.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342443
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vik_Fixrikitikiесть "таблица топливо" - заполняем по максимуму (здесь пока проблемы с добавлением новой записи)

А в чем именно? Опишите в чем может быть проблема при добавлении новой записи?Предположим заполнили все записи в таблицах, появляется новое топливо "напалм", нужно перебирать все НД куда его добавлять (еще не продумал)

Vik_Fix"Таблица обозначение НД" - что в этой таблице будет?поле Name_Sign - (ГОСТ, Правило, ДСТУ, ТУ У, ...)

Vik_Fix"Таблица пунктов" - тот же самый вопрос.Просто набор фраз - например (вимоги пунктів 5.1.2; 5.1.4; 5.2.1 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ, а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 4)
как писал
asdorМысль пришла.
Vik_Fix как то упомянул, что все эти буковки, просто искусственные создания.
Так может о них лучше забыть.
Как результат - мо должны получить данные в виде приложенных тхт.
Т.е. просто набор фраз.
Делаем таблицу с этими фразами. Не повторяющимися.
id,Name,Фраза
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342501
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki

У вас будет огромное число таблиц-справочников и вы быстро запутаетесь в обозначениях. У вас объемная работа.
Уже сейчас неясно применение таблиц типа "Таблица правил".

Вам надо бы привести в порядок нормативную документацию. Что-то типа этого:
http://base.garant.ru/179141/
http://mt27.ru/perechen-pravil-eek-oon/

Я бы посоветовал пронумеровать эти нормативы: n01... и o01... и использовать эти обозначения в соответствующих им названиях справочников.
Структуру справочников можно взять везде одинаковой, примерно так: idtab, names, values, notes. Это позволит вам в дальнейшем для редактирования справочников использовать единую форму.
Различные условия, и не только при добавлении, обычно пишутся в кодах. Вам придется писать свои что-то типа триггеров, т.к. родные триггеры Фокс громоздки.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342514
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
авторПредположим заполнили все записи в таблицах, появляется новое топливо "напалм", нужно перебирать все НД куда его добавлять (еще не продумал)

Забей временно.
Когда остальное решишь, с этим будет не сложно.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342523
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,
sg12Различные условия, и не только при добавлении, обычно пишутся в кодах. Вам придется писать свои что-то типа триггеров, т.к. родные триггеры Фокс громоздки.

Ну вот, тут на протяжении 4 страниц боремся, что бы не в коде менять. А тут нате вам - открытие.
Не учите плохому.
Правила здесь - это не алгоритмы, а связи.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342544
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdorsg12,
sg12Различные условия, и не только при добавлении, обычно пишутся в кодах. Вам придется писать свои что-то типа триггеров, т.к. родные триггеры Фокс громоздки.

Ну вот, тут на протяжении 4 страниц боремся, что бы не в коде менять. А тут нате вам - открытие.
Не учите плохому.
Правила здесь - это не алгоритмы, а связи.

К сожалению, база данных Фокс не очень располагает к этому, запутаетесь уже при числе таблиц больше десяти, и придется переделывать.
Коды условий удобнее располагать в формах, но при их большом количестве это удобство исчезает, т.к. они обычно изменчивы.
Можно для условий создать глобальный объект типа CUSTOM, а в формах или БД оставить только строки вызова.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342804
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12К сожалению, база данных Фокс не очень располагает к этому, запутаетесь уже при числе таблиц больше десяти, и придется переделывать.

А вы упорны в своих заблуждениях батенька))))
Ну ОК. Пусть БД MS SQL будет. Что то поменяется?
Запутаться легко и в одной таблице.
А другие и с сотнями не путаются.

sg12Коды условий удобнее располагать в формах, но при их большом количестве это удобство исчезает, т.к. они обычно изменчивы.
Вообще то формы, это визуальное представление для пользователя. Конечно, легко запихнуть туда логику. Начинающие часто так делают. Но советовать это как подход...
sg12Можно для условий создать глобальный объект типа CUSTOM, а в формах или БД оставить только строки вызова.
И зачем?...

Вообще в этом топике, пытаются создать разумную схему хранения.
Убежден, после ее создания, видно будет, как и что программировать. Что в формах, а что в других объектах.

Хранить различные алгоритмы, в одном глобальном объекте... Чем хуже просто набор процедур?
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39342845
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdor

VFP9 это не досовский Fox и не SQL Server.
Если у вас что-то по-другому, то пожалуйста.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39343065
Vik_Fix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ого, да у Вас тут уже "бойня" )))) пойду по порядку.
rikitiki "Таблица НД"
Id_Regulation - идентификатор НД N(4)
Id_Sign - идентификатор обозначения НД
Number - номер НД C(20)
Denotation - название НД M(4)
Date_Begin - дата введение в действие НД D(8)
Date_End - дата окончания действие НД D(8)

"Таблица пунктов"
Id_PunktND - идентификатор пункта НД N(3)
Denotation - текст пункта НД M(4)


Не вижу связи между этими таблицами, хотя "пункты" это не неотъемлемая часть НД.

rikitikiПросто набор фраз - например (вимоги пунктів 5.1.2; 5.1.4; 5.2.1 R13 щодо конструкції гальмівних систем і системи сигналізації КТЗ, а також вимоги пунктів 1.4.2; 2.1.1; 2.3 додатка 4)
как писал

Извиняюсь, это я немного "протупил", работаю еще над своей программой и у меня в голове сработало "Пункты" - это "населенные пункты" ))))

sg12У вас будет огромное число таблиц-справочников и вы быстро запутаетесь в обозначениях. У вас объемная работа.
Уже сейчас неясно применение таблиц типа "Таблица правил".
Я бы не сказал, что огромное количество таблиц справочников, возьмите к примеру КЛАДР или ФИАС - это уже 3 справочных таблицы (а их часто используют в своих программах), вот про обозначения не понял.
Таблица правил - по логике вещей это вспомогательная таблица для создания связи между пунктами НД (требованиями) и сферой их применения. Не спорю на текущий момент у автора не все гладко, но он стремиться к лучшему.

sg12Я бы посоветовал пронумеровать эти нормативы: n01... и o01... и использовать эти обозначения в соответствующих им названиях справочников.

Не знаю насколько Вы осилили прочтение данного топика, но прослеживается не понимание сути.
Нормативные документы - это куча ГОСТов, Правил, ДСТУ, ТУ У и прочего в которых прописаны всевозможные требования к различным объектам сертификации (фары, ремни, колеса и т.д.).
Так же транспортные средства (далее ТС) подразделяются:
на категории N, L, M, O (подробней я описывал ранее);

по состоянию (новое, б/у, переоборудованное)

по топливу на котором работают (бензин, газ, электричество и т.д.)

Так вот, автору необходимо зная выше перечисленные 3 составляющие, отобразить НД и их пункты относящиеся именно к такому сочетанию составляющих, бррр... как-то мудрено получилось.
Отсюда вопрос: как нумерация нормативов поможет?

sg12Различные условия, и не только при добавлении, обычно пишутся в кодах. Вам придется писать свои что-то типа триггеров, т.к. родные триггеры Фокс громоздки.
Про триггеры вообще не понял, в моем понимании триггер - это всего лишь событие вызываемое при определенном действии, а код который будет исполнятся при этом можно написать какой угодно.

Ой, дальше я даже продолжать не буду, а то от темы уходим.

rikitiki - на неделе попробую изобразить свое виденье в виде готовых таблиц, чтоб говорить более предметно. А то на словах уже сам начинаю путаться.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39346877
rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, Asdor и Vik_Fix
дошел до точки кипения
Можно сбросить Вам на мыло то, что у меня получилось (поскольку размер 1Мб)?
Не могу понять как добавлять и сохранять.
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39347088
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rikitiki,
kv # abz4.ru
Но по мере сил)
...
Рейтинг: 0 / 0
Нужна помощь Collections
    #39347156
Rikitiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor,
Ок, завтра сброшу.
...
Рейтинг: 0 / 0
95 сообщений из 95, показаны все 4 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужна помощь Collections
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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