Форум: "Базы";
Текущий архив: 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