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