|
Многопользовательская работа с DBF | ☑ | ||
---|---|---|---|---|
0
Rounder
08.08.13
✎
12:55
|
Поставлена задача: есть некий файл DBF в сетевой папке, с ним уже работает группа пользователей. Мне из 1С нужно откорректировать/добавить запись. Это возможно средствами 1С?
|
|||
1
butterbean
08.08.13
✎
12:57
|
у тебя проблема только с доступом??
|
|||
2
Rounder
08.08.13
✎
12:59
|
У меня пока нет проблемы - и нет возможности испробовать. Спрашиваю может кто решал подобную задачу.
|
|||
3
butterbean
08.08.13
✎
13:01
|
(2) непонятен твой вопрос — если файл занят то записать ты не сможешь, если свободен, то сможешь :-)
|
|||
4
Aleksey
08.08.13
✎
13:01
|
(2) эээ а они в чём работают в блокноте с этим файлом? А ты уверен что посе твоей правки программа с которой "уже работает группа пользователей" не вылетет по ошибки?
А ты уверен что та программа не использует хитрые индексы, и в результате она тоже не скажет ой |
|||
5
Rounder
08.08.13
✎
13:02
|
(4) Они из ПО написанного на FoxPro 2.6 работают.
|
|||
6
Rounder
08.08.13
✎
13:02
|
(4) и я не в чем не уверен - я прошу поделиться опытом если он был.
|
|||
7
Aleksey
08.08.13
✎
13:03
|
(6) Сейчас кофе допью и погадаю на гуще
|
|||
8
akronim
08.08.13
✎
13:08
|
Вообще после открытия дбф "средствами 1С" ничем другим этот файл не откроешь даже на просмотр - будет ошибка доступа. Так что я отношусь скептически к этой затее.
(7) Вот она - наглядная польза кофе в офисах. Гадание на бараньих кишках или даже на внутренностях жертвенного голубя в условиях современного офиса несколько затруднительно, да и соседи не поймут. |
|||
9
MKZM
08.08.13
✎
13:12
|
так можно получить доступ не только с помощью иксбазе
|
|||
10
MKZM
08.08.13
✎
13:12
|
с адо например, там можно и в многопользовательском режиме.
|
|||
11
akronim
08.08.13
✎
13:19
|
Да, не подумал. Пагубная практика XBase, да
Ну если можно - хорошо. |
|||
12
Rounder
08.08.13
✎
13:21
|
(9) Спасибо за наводку.
Остальным спасибо за участие и гадание :) |
|||
13
kiruha
08.08.13
✎
13:26
|
100 лет уже работают через драйвер FoxPro
Все пропустил |
|||
14
kiruha
08.08.13
✎
13:36
|
Точнее где то в 2003 spock начал использовать драйвер фокса для многопольз доступа к dbf
|
|||
15
Rounder
08.08.13
✎
15:44
|
Что я делаю не так?
Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.Open("Provider=vfpoledb.1;Exclusive=No; Data Source=" + ПутьКБД + ";Collating Sequence=MACHINE;"); ДБФ = Соединение.Execute("Select * from " + ПутьКБД + " "); ДБФ.Close(); Соединение.Close(); Если остановиться по точке останова после строки ДБФ = Соединение.Execute("Select * from " + ПутьКБД + " "); то при открытии dbf-ки другим приложением ругает на то, что нет доступа. Но ведь в инициализации объекта я указал Exclusive=No. Что здесь не так? |
|||
16
Rounder
08.08.13
✎
16:29
|
Актуально.
|
|||
17
Infsams654
08.08.13
✎
16:43
|
(16) надо попробовать через другой драйвер. И почему бы не подсоединиться не через COMОбъект("ADODB.Connection"), а прямо к внешнему источнику в 1С и работать через ВнешнийИсточникДанныхТаблицаМенеджер
|
|||
18
Rounder
08.08.13
✎
16:48
|
(17) про внешний источник данных не подумал. Нужно посмотреть.
|
|||
19
Ёпрст
08.08.13
✎
17:02
|
(15) пробуй через
Microsoft.ACE.OLEDB.12.0 он не лочит файло |
|||
20
kiruha
08.08.13
✎
18:07
|
Или попробуй поставить
TABLEVALIDATE=0; в строке подключения |
|||
21
ПесняПроЗайцев
08.08.13
✎
19:40
|
clipper умел ставить блокировки, фокс тоже.
а хбасе по-моему нет. |
|||
22
Jump
08.08.13
✎
19:59
|
(0)Возможно.
Т.е запись ты сможешь добавить если в этот момент файл не залочен. А будет ли другая программа корректно работать с базой после этого сказать невозможно, надо разбираться в принципах работы программы и что для нее эта запись которую ты откорректировал. В общем файл *,dbf это просто формат хранения, и в данном случае мало отличается от файла *.txt |
|||
23
Infsams654
09.08.13
✎
08:17
|
(22) не, в формате заголовка dbf точно есть поле для многопользовательского использования, однако, как с ним работает 1С - хз. При чем (21) + на уровне записей
|
|||
24
kiruha
09.08.13
✎
09:42
|
(23)
Причем здесь 1С , если подключение идет через сторонний драйвер. Фокс прекрасно работает в многопольз режиме, а если что залочено - надо смотреть в голове |
|||
25
Infsams654
09.08.13
✎
09:54
|
(24) + , согласен. Неправильно выразился. Не 1С, а драйвер, см. (17)
|
|||
26
Rounder
09.08.13
✎
10:27
|
(20) TABLEVALIDATE=0 - не помогает
(19) Microsoft.ACE.OLEDB.12.0 - лочит |
|||
27
Rounder
09.08.13
✎
11:23
|
Актуально
|
|||
28
Ёпрст
09.08.13
✎
11:54
|
(26) не лочит, проверено
Соединение = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+КаталогИБ+";Extended Properties=dBase IV;Persist Security Info=False"; |
|||
29
Rounder
09.08.13
✎
12:00
|
(28)
а как проверял что не лочит если не секрет? можно код и последовательность действий? |
|||
30
Rounder
09.08.13
✎
12:04
|
опа - вроде не лочит. У меня не было в строке параметра Persist Security Info
|
|||
31
Rounder
09.08.13
✎
12:04
|
Сча еще перепроверю.
|
|||
32
Ёпрст
09.08.13
✎
12:04
|
(29) открываешь файло в редакторе - делаешь чтение из 1с-ины..
всё считывается. |
|||
33
Ёпрст
09.08.13
✎
12:05
|
в противном случая, адо уже сразу ошибку дает - что не может открыть файло.
|
|||
34
Ёпрст
09.08.13
✎
12:07
|
Ежели в редакторе, файло монопольно открыть, то запрос по адо тоже болт пишет.
|
|||
35
Rounder
09.08.13
✎
12:08
|
(33) Так у меня и работало когда фал открывал в VFP например не в монопольном режиме, то из 1С с любым провайдером я к нему подключался и модифицировал спокойно. Не работала обратная ситуация: когда я не мог открыть из 1С файл в немонопольном режиме, т.е. когда я его открывал первым и уже пробуя открыть файл в VFP получал аксесс денайд.
|
|||
36
Rounder
09.08.13
✎
12:12
|
Вчера по твоему совету попробовал Microsoft.ACE.OLEDB.12.0 и использовал стандартную строку подключения:
Соединение.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ПутьКБД + ";Extended Properties=dBASE IV;User ID=Admin;"); И с такой строкой файл лочило. С той что ты сегодня подсказал - вроде работает как нужно. Сейчас еще разберусь что это за параметр. Спасибо за помощь. |
|||
37
Ёпрст
09.08.13
✎
12:12
|
(35) всё открывается
|
|||
38
Rounder
09.08.13
✎
12:13
|
(37) Теперь да. Я в (36) об этом написал.
|
|||
39
Ёпрст
09.08.13
✎
12:13
|
можешь еще на всякий.. вот так:
Соединение = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+КаталогИБ+";Mode=Share Deny None;Extended Properties=dBase IV" т.е указать ему Mode |
|||
40
Ёпрст
09.08.13
✎
12:15
|
(36) тут видать, в фоксе(любой проге) нужно тоже подключаться с таким же User ID .. можно еще и пароля задать
|
|||
41
Rounder
09.08.13
✎
12:15
|
(39) я смотрел в параметрах соединения - Mode устанавливается по умолчанию в Share Deny None
|
|||
42
Ёпрст
09.08.13
✎
12:21
|
но лучше, всё же вот с такой строкой:
Соединение = "Provider=VFPOLEDB.1;Data Source="+КаталогИБ+";Collating Sequence=MACHINE;TABLEVALIDATE=0"; фокс всё же поприятнее с дбф дружит, да и индекс можно задействовать в запросе. |
|||
43
Ёпрст
09.08.13
✎
12:22
|
тоже не лочит
|
|||
44
Rounder
09.08.13
✎
12:29
|
(42) У меня лочит.
|
|||
45
Ёпрст
09.08.13
✎
12:32
|
(44) не верю :)
|
|||
46
Rounder
09.08.13
✎
12:33
|
(45) К сожалению нет возможности доказать :)
Но это именно так. Лочит. |
|||
47
Rounder
09.08.13
✎
12:34
|
Кстати - да. Вот и еще проблема нарисовалась.
Microsoft.ACE.OLEDB.12.0 не лочит, но и индексный файл не обновляет :( |
|||
48
Ёпрст
09.08.13
✎
12:48
|
Соединение = "Provider=VFPOLEDB.1;Data Source="+КаталогИБ+";Mode=Share Deny None;Collating Sequence=MACHINE;TABLEVALIDATE=0";
вот так спецом проверил - ничего не лочится.. при Mode=Read тоже |
|||
49
Ёпрст
09.08.13
✎
12:49
|
||||
50
Rounder
09.08.13
✎
12:51
|
(48) Все - окончательно разобрался. Тормозил я при проверке на лок/не лок. Ты прав. Не лочится.
Бляха - столько времени потерял и у других отнял. Еще раз спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |