Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите пожалуйста с набором данных [D6, Paradox]


ewald ©   (2002-11-28 17:58:00) 

Есть две таблицы главная и подчиненная (paradox). С главной - проблем нет, а вот с подчиненной - при внесении новых записей все нормально, но при перезапуске программы изчезают последние записи, хотя после каждого внесения пишу Table2.Post; Table2.Refresh;
И самое интересное, что при попытке записать новую запись выдается ошибка "Key violation".
Что может быть?
Спасибо заранее.


MsGuns   (2002-11-29 13:46:00) [1]

Зачем LookUp из второй таблы в первую я все равно не понял.
По поводу связки, если первое поле детала (NO_PP) типа AutoInc, то все должно работать безо всяких виолетов. Хотя я использую несколько другую схему (для парадокса, ИМХО, более эффективную).
Для твоего примера

sss 1.PR_NO - Autoinc (PK)

ssd 1.PR_NO - I (PK) - связка с sss
2.NO_PP - AutoInc (PK) - собственный "ошейник" для деталов


ewald   (2002-11-29 13:37:00) [2]

Главная sss.db: 1.PR_NO + key*
Подчиненная ssd.db 1. NO_PP + key*
2. PR_NO I
Связаны они по полям PR_NO. В LookUp второй таблицы указана первая с полем PR_NO.
В Table2.MasterSource указано DSource1, в MasterFields - PR_NO.
В Table1 эти поля пустые.


MsGuns   (2002-11-29 12:20:00) [3]

Приведи структуры обеих таблиц (достаточно только верхушек с ключами) и как связываешь (установленные значения св-в MasterSource и MasterFields в обеих TTable


ewald   (2002-11-29 10:56:00) [4]

Сделал, но тогда выкидывает ошибку Key Violation


MsGuns   (2002-11-28 20:37:00) [5]

Класс ! Две таблицы с ОДНИМ-ЕДИНСТВЕННЫМ КЛЮЧЕМ - автоинкрементом ! И как же прикажете их друг с другом связывать ?
В подчиненной таблице должен быть еще один ключ - типа I и он должен быть ПЕРВЫМ, по которому и надо связывать эту таблу с мастером. В гриде детала это поле вообще не надо показывать.

После Post вообще-то надо давать FlushBuffers, а Refresh по кнопке или по таймеру.


ewald   (2002-11-28 18:23:00) [6]

На таблицах записываются данные счета. На главной все реквизиты на подчиненной - товары. Связаны они по номеру счета, который в гл. таблице автоинкремент и установлен КЕУ. В подчиненной таблице КЕУ установлен на поле No, которое тоже автоинкремент. Все данные вносятся из Edit"ов, например Table2Name.value:=Edit1.text и т.д. После всех внесений (работает нормально) пишу Table2.Post; Table2.Refresh;
Но самое интересное, что изчезнувших полей в Table2 нету точно, но при попытке стереть счет из главной таблицы выдается ошибка, что процедура невозможна, так как в подчиненной таблице есть записи, хотя я их нигде не вижу. Открывал базу и с Database desktop и с Exel.


Victor_Cr   (2002-11-28 18:07:00) [7]

Мда... Объяни подробнее. Как они связаны, по каким полям, ключевые поля Table2, куски кода который работает с занесением изменений и т.д.


Наверх

Титульная страница Поиск, карта сайта Написать письмо