![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите пожалуйста с набором данных [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, куски кода который работает с занесением изменений и т.д.