Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1080545461
nv-vetal
2004-03-29 11:31
2004.04.18
ShowMessage. Как в появившемся окне нажать кнопку Ок программно?


8-1073328665
Ilya
2004-01-05 21:51
2004.04.18
Аналог процедуры Sound в Delphi


6-1076345884
Budy
2004-02-09 19:58
2004.04.18
Проверка соединений


1-1080889595
still_swamp
2004-04-02 11:06
2004.04.18
D8 Assembler


3-1079705990
Death
2004-03-19 17:19
2004.04.18
Изменение размера поля в таблице DBF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский