Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];

Вниз

Многопользовательский режим   Найти похожие ветки 

 
GAlexis   (2003-02-10 16:14) [0]

Уважаемые мастера! Возникла такая проблема. Есть БД написанная как однопользовательская. Теперь надо двухпользовательскую. Подключил с другого компьютера, вроде бы все заработало, но как оказалось не правильно. Только что введеная запись одним пользователем забивается следом введеной записью другого пользователя. Что не так? Помогите пожалуйста, очень надо


 
Anatoly Podgoretsky   (2003-02-10 16:23) [1]

Так это особенность многопользовательских баз, кто последний тот и прав.


 
GAlexis   (2003-02-10 16:39) [2]

Так и что же делать? Я то думал, что если Post сделан, то все, записано. А тут получается что разные пользователи к одному и тому же месту прилепляются в БД


 
BIS   (2003-02-10 17:01) [3]

Еще раз подтверждаем, что так оно и происходит. Кто последним был на Post-у, тот и записал.
А если не хочешь, чтоб пользователи к одному лепились, так и пиши прогу так, чтобы они свои записи выбирали.


 
galexis   (2003-02-10 17:06) [4]

Так и дело то в том что мне как раз надо чтобы не затирались записи. А то один пользователь ввел запись, нажал кнопку сохранить (там Post), затем следующий пользователь ввел свою запись и по кнопке сохранить его запись записывается на место записи другого пользователя, а старая запись пропадает.


 
sniknik   (2003-02-10 17:10) [5]

Переходи на SQL, если записи сохранять инсертами, то таких проблем не будет. Будут другие. :-)))


 
alexander_ua   (2003-02-10 17:17) [6]

пытайся заблокировать запись, которую уже редактируют. я думаю, есть стандартные функции, но можно по-ломовому запоминать №редактируемой записи и не давать редактировать ее больше никому


 
galexis   (2003-02-10 17:18) [7]

Да, переход на SQL в плане есть. Но работа стоит, начальство требует. А такой переход требует время.


 
galexis   (2003-02-10 17:24) [8]

С редактированием проблем нет. Есть проблема когда используется Append...Post. Следующий пользователь делает тоже, но в итоге получается так, как будто он делает Edit..Post только что введеной записи.


 
MsGuns   (2003-02-10 17:32) [9]

>galexis © (10.02.03 17:24)
>С редактированием проблем нет

Похоже, есть проблемы с правильно продуманной моделью данных.
Если возможность ОДНОВРЕМЕННОГО редактирования одной записи считается нормальной, то БД спроектирована безобразно. И не важно, сколько юзеров ее юзают, - даже если всего один.


 
sniknik   (2003-02-10 17:34) [10]

можно сделать так (проще всего помоему, на пока не SQL)

добавляеш запись ставиш ей какой нибудь маркер "запись временная" и ID. Тут же Post. Редактируеш уже созданную и записаную, если откат придется удалить (или метка "удалено" для повторного использования). В таком варианте от Append до Post (первого) будет доля секунды, вряд ли юзера пересекутся в это время.


 
galexis   (2003-02-10 17:47) [11]

У меня и так доли секунды от Append до Post поскольку все делается по нажатию кнопки Сохранить. Дело то вот в чем. Один пользователь сохранил запись, она физически есть в базе. После нажатия Кнопки Сохранить вторым пользователем, запись замещает только что введеную. Отличие у них друг от друга в том, что они работают с поразному отфильтрованной одной и той же таблицей. Идет регистрация документов. Одна регистрирует Входящие, другая Исходящие.


 
Соловьев   (2003-02-10 17:54) [12]

А как ты для каждой записи генериш ID? или у тебя его нет?


 
galexis   (2003-02-10 18:06) [13]

ID двойной. Код документа и Номер документа этого типа по порядку (в разных полях таблицы). Когда нужно ввести документ, таблица фильтруется по нужному типу - по коду документа, и затем к номеру последнего введенного документа прибавляется 1. У другого пользователя та же таблица отфильтрована по другому коду документа, далее то же самое. Что здесь не так?


 
MsGuns   (2003-02-10 18:07) [14]

И как же это так получается, что и ВХОДЯЩЕМУ, и ИСХОДЯЩЕМУ документу (ИМХО, разным сущностям БД) соответствует ОДНА запись БД ?


 
Соловьев   (2003-02-10 18:11) [15]

Я никогда не работал с Append.
Делай Insert:
with Table1 do
begin
Insert;
FieldByName("NameDoc").AsString := Edit1.Text;
...
// Если используешь DBEdit, то код выше не нужен
Post;
end;


 
galexis   (2003-02-10 18:13) [16]

Ну как же, пара "код документа + номер документа являются уникальными"! Предположим Входящий с кодом 04 и номером 100 (номер документа 04-100) и Исходящий с кодом 05 и номером 100 (номер документа 05-100). Повторений нет.


 
galexis   (2003-02-10 18:16) [17]

Вот так у меня и написано, но вместо Inset стоит Append, что тоже самое, я проверял да и написано это.


 
Соловьев   (2003-02-10 18:21) [18]

Не может такого быть. Ты чего-то там напортачил. Если ты добавляешь запись, а у тебя происходит не вставка, а изменение, то это виноват ты ...
Дай код как ты вносишь запись.


 
MsGuns   (2003-02-10 18:31) [19]

>Соловьев © (10.02.03 18:21)

Если он определил для ключевого поля автоинкремент, то при вставке (по барабану - Insert или Append), но до постинга, Парадокс им вполне может вернуть ОДИНАКОВОЕ значение поля ! При такой ситуации и возникнет этот самый глюк ! А вообще, ИМХО, без структур таблиц и хотя бы примерном описании средств (компонент, обработчиков и т.д.) доступа к ним беседа эта напоминает поиски черной кошки в темной комнате.


 
Соловьев   (2003-02-10 18:33) [20]


> MsGuns ©
...

> Парадокс

А я думал мы про FoxPro :(


 
Соловьев   (2003-02-10 18:34) [21]

Попробую стать провидцем:
Table->DataSouce->DBGrid
Доступ через BDE.


 
MsGuns   (2003-02-10 18:36) [22]

>Соловьев © (10.02.03 18:33)

Действительно...;(


 
galexis   (2003-02-11 12:40) [23]

До меня тут кажется дошло. Надо перед Append делать Refresh. А блокировка записей производится Edit. Если кто-то редактирует, то никто другой не может.
А BDE я вообще не пользуюсь. Использую Vista Apollo 5. DBGrid тоже не использую и вообще с приставкой DB ничего не использую.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.02.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.008 c
1-87557
Akim2
2003-02-17 13:10
2003.02.27
TMemo, Позиционирование курсора


3-87271
ddenisv
2003-02-07 15:17
2003.02.27
Какую роль играет BDE для скомпилированных делфи программ


1-87565
Samsung
2003-02-17 13:04
2003.02.27
Вопрос по панели


1-87449
nomshar
2003-02-18 18:34
2003.02.27
Обработка события у динамически созданного компонента


14-87628
Dudko Anton
2003-02-10 05:39
2003.02.27
Pascal





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский