|
|
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
Ситуация такая. Есть приложение, которое работает с БД типа dBASE через BDE (средствами Table, Query, DataSource, DBGrid). Никаких серверных технологий не применяется. Работа с удаленной или локальной БД происходит просто через смену алиаса. Так вот, если 2 клиента работают с данными со своих терминалов, а БД находится "на 3-й машине", то проблем с совместным доступом не наблюдается. Но стоит перенести БД на одну из машин клиента, то при совместном доступе, редактированные данные сохраняются только у клиента с локальной базой. Тот кто работает с удаленной базой работает с кэшированными данными (хотя кэширование я не включаю) и не одна строка изменений реально в базу не записывается (напомню при совместном доступе). Есть ли какое-то решение такой ситуации, не прибегая к коренной смене кода, т.е. не переходя на другую технологию ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 18:54 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
В общем случае - НЕТ. Во первых, dBase не является сервером, и весь совместный доступ организуется только на уровне клиента. Во вторых, BDE вещь очень часто загадочная :) Можно попробовать взять ODBC драйвер для dbf'ов и указать BDE работать через ODBC, тогда с точки зрения BDE он всегда будет работать с удаленой базой вне зависимости от ее реального местонахождения. Даст ли ODBC-драйвер доступ к одной dbf нескольким разным клиентам зависит от ODBC-драйвера. Все существующие на сегодня ODBC для dbf попытаются сделать доступ к dbf многопользовательским. Но не факт что заработает, очень уж там много глюков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2005, 19:30 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
White OwlМожно попробовать взять ODBC драйвер для dbf'ов и указать BDE работать через ODBC... Если не сложно можно об этом участке поподробнее. Как осуществить такую настройку (по пунктам)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 10:57 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
В настройках BDE: LOCAL SHARE=TRUE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 13:57 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
1. у меня стоит LOCAL SHARE=TRUE (со вчерашнего дня правда) 2. Пробовал использовать "транзакции" по следующей схеме: авторDataBase1->StartTransaction; Table1->Append(); ... Table1->Post(); DataBase1->Commit(); Но такая постановка мне не помогла. Изменения "удаленного" не попадают в физическую таблицу. Потом DataBase1->TransIsolation у меня работает только на tiDirtyRead ... Для других методов выдает ошибку типа "для локальной базы нужно использовать режим dirty read..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 14:15 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
SCORPION Z Пробовал использовать "транзакции" по следующей схеме: авторDataBase1->StartTransaction; Table1->Append(); ... Table1->Post(); DataBase1->Commit(); Транзакции здесь непричем. LOCAL SHARE=TRUE на всех машинах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 15:15 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
У меня LOCAL SHARE=TRUE стоит на всех машинах. Но я использовал технологию DataBase-Table-DataSource-DBGrid , а сейчас Session-DataBase-Table-DataSource-DBGrid . Т.е. после ручной настройки Session всё заработало, как и положено. Есть только одна проблема это autorefresh данных у других клиентов не происходит. Приходится по таймеру обновлять таблицу. Может есть другой способ "обновить" данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2005, 17:14 |
|
||
|
БД dBASE и совместный доступ
|
|||
|---|---|---|---|
|
#18+
авторВ настройках BDE: LOCAL SHARE=TRUE Все кто говорили об этом были правы! Не нужно добавлять к проекту ни TDataBase ни TSession - эти проблемы решает BDE. А вот LOCAL SHARE=TRUE действительно снимает все вопросы при совместном доступе к БД. Тема закрыта! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=56&tid=2016657]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
68ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 356ms |

| 0 / 0 |
