Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизСинхронизация нескольких таблиц .dbf Найти похожие ветки
← →
ikondakov (2004-03-22 11:07) [0]Фишка такая, надо синхронизировать 2 (и более) таблиц из-за ограничения в 255 полей, но если в одну из таблиц ничего не записывается, то она как-то выпадает и при осуществлении навигации всё идёт вкривь и вкось. как бороться с этим???
синхронизация такая: при щелчке на кнопку выполняется
Table1.Insert;
Table2.Insert;
...
Вот.
← →
Sergey13 © (2004-03-22 11:11) [1]2ikondakov (22.03.04 11:07)
>надо синхронизировать 2 (и более) таблиц из-за ограничения в 255 полей
Только ради бога, структуру не надо здесь показывать полностью. 8-)
← →
Ильш © (2004-03-22 11:12) [2]блин, а как ты еще думал...
записываай хотя бы чего-нить... хотя бы ID уникальный или еще чего...
а вообще то у тебя не вопрос, а какой то сумбур - нифига не понятно... объясни по русски!
← →
ikondakov (2004-03-22 11:21) [3]Обьясняю по русски. Есть 2 таблицы. Надо записывать в них данные. Причём данные не обязательно что-то содержат. может быть и пусто. Записывать надо сразу в 2 таблицы, потому что по сути, это одна, но порезанная, и если в одну вносить данные, а в другую не, то в итоге, при склейке данные поплывут, что просто катастрофично. Когда я вношу новую запись и изменяю (вношу значения) хотябы в одно поле каждой таблицы, то всё ровно, но если в одной из таблиц ничего не внесено, то эта запись как бы пропадает и когда выполняю навигацию, то синхронность сползает. Нельзя изменять структуру таблицы и автоматически вносить поля, может через вычисляемые???
← →
Sergey13 © (2004-03-22 11:35) [4]Если я что нибудь понял, то у тебя количество записей в обеих таблицах должно совпадать. Для синхронной навигации видимо применяется номер записи.
Правильно? Если да, то это неправильно!!! 8-)
Если изменить что либо и вообще влиять на это ты не можешь, то надо обеспечивать это правило одинакового количества.
← →
Соловьев © (2004-03-22 11:42) [5]Имхо, надо чуть переделать структуру БД:
1 таблица с 3-мя полями - уникальный номер записи, имя поля , значение.
При такой организации можно хранить хоть 355 тыс полей :)
Главное организовать потом редактирование такой таблицы, но это уже с помощью SQL - Table тут не поможет.
← →
ikondakov (2004-03-22 11:46) [6]Да надо обеспечить одинаковое количество записей.
А почему это не правильно???
2 Соловьёв. Не мжет быть всё так гиморно. А переделывать структуру я не могу, об этом я уже говорил!!!
← →
Sergey13 © (2004-03-22 11:55) [7]2ikondakov (22.03.04 11:46) [6]
>А почему это не правильно???
Ну ты же наступил уже на эти грабли.
← →
ikondakov (2004-03-22 11:59) [8]Да наступил, но как же тогда лечить???
← →
Плохиш (2004-03-22 12:07) [9]>ikondakov (22.03.04 11:46) [6]
> 2 Соловьёв. Не мжет быть всё так гиморно
Вообще-то тебе предложили правильный вариант.
← →
ikondakov (2004-03-22 12:11) [10]Какой бы он ни был правильный переделывать структуру таблиц НЕЛЬЗЯ!
← →
Наталия © (2004-03-22 12:45) [11]Тогда ответ: "Миссия невыполнима"...
← →
sniknik © (2004-03-22 13:06) [12]ну почемуже невыполнима? можно
только это еще более гиморно, чем с уникальным идентификатором, просто подгоняй колчество записей в "отстающей" таблице чтобы реально номера записей совпадали.
это идея, реализация за тобой.
← →
Sergey13 © (2004-03-22 13:51) [13]2sniknik © (22.03.04 13:06) [12]
"Подгонять" не получится. Иначе левой руке бабушки будет соответствовать правая рука дедушки. Тут надо именно писать в обе таблицы одновременно (и гарантировано), пусть даже пустые записи. Но какие при этом траблы у автора возникают не понятно, поэтому и советы только теоретические. 8-)
← →
Сергей Суровцев © (2004-03-22 23:50) [14]>ikondakov (22.03.04 11:07)
Запрети добавление в сетке, делай его по своей кнопке одновременно в обеих таблицах. Причем Append, а потом Post. Запишется и пустая строка. Гарантированно.
← →
Алхимик © (2004-03-23 08:56) [15]Есть подозрение, что автор не знаком с нормализацией.
Самая здравая мысль - поизучать её.
← →
ikondakov (2004-03-23 11:48) [16]2 [14] а немного поподробнее... если можно, просто никакой толковой ниги по базам и дельфи нет под рукой!
← →
Term © (2004-03-23 12:32) [17]а почему такое условие что нельзя менять структуру?
ты сам прогу пишеш? или доделываеш чтото?
← →
roottim (2004-03-23 12:43) [18]ноги этого поста растут отсюда
http://delphimaster.net/view/3-1079684954/
я согласен со всеми высказываниями... но если необходимо..
то используй 2 табл дбф... движок BDE + TQuery + UpdateSQL, генерируй первичный ключ для всавки (например дата время в виде Double (обычный TDateTime и ф-я Now предполагаю данные по карточке вносит один человек.. так-что нормально) )
ну и применяй UpdateSql для всавку, удаление, редактирование 2-х связанных по ПК ключу
← →
ikondakov (2004-03-23 14:11) [19]Я пишу сам, просто база - результат исследования и лишние данные. (мусор) Единственное что могу сделать, так это в обе таблици добавить поле ID(по умолчанию есть только в первой) которое обозначает номер записи!
← →
Sergey13 © (2004-03-23 16:50) [20]2ikondakov (23.03.04 14:11) [19]
>Я пишу сам, просто база - результат исследования и лишние данные. (мусор)
Мусор - это когда есть много данных, но толку от них мало. 8-)
>Единственное что могу сделать, так это в обе таблици добавить поле ID(по умолчанию есть только в первой)
Скорее делай.
> которое обозначает номер записи!
Это не номер, а идентификатор (по крайней мере должен быть им!!!), однозначно идентифицирующий что либо (в данном случае строку-запись). Одинаковый ID в разных таблицах будет у соответствующих друг другу записей.
ЗЫ: а книжку купи какую нить, почитай, полезно.
← →
ikondakov (2004-03-23 17:15) [21]Да есть книжки, вот только не по базам данных, вернее всего немного там про БД. (ну обычные книги по программингу на дельфях!)
← →
Term © (2004-03-23 17:21) [22]ну рас есть один ID то добавь во вторую базу тоже поле ID и по ним выбирай
купи еще книг
← →
Sergey13 © (2004-03-23 17:23) [23]2ikondakov (23.03.04 17:15) [21]
Ну... прикупи еще. Не помешает. 8-)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.041 c