powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Update таблиц и многопользовательская работа.
11 сообщений из 11, страница 1 из 1
Update таблиц и многопользовательская работа.
    #35905226
Viktor_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть БД на ФоксПро для Доса, набор дбф таблиц.
Нужно обновлять данные в этих дбф таблицах с MS SQL Server-a.
С этими дбф таблицами работают другие пользователи, и в идеале обновление в них нужно делать в "горячем" режиме, т.е. во время работы с ними других пользователей.

Я планирую делать так: с SQL Server сначала беру необходимые данные и выгружаю их в промежуточные, временые дбф таблицы. Затем уже из промежуточных дбф загружать данные в целевую базу.

Так вот вопрос: 1) Если БД для Фокс Про для Доса, то можно ли для работы с ними использовать VisualFox Pro?
2) Можно ли изменять данные в целевых таблицах, не блокируя их? т.е. чтобы сохранялся многопользовательский режим работы.
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35905276
Viktor_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На второй вопрос кажется нашел ответ. Написал небольшую програмку на VFP для обновления данных в одной дбф таблице из другой.

LOCAL _ID

USE E:\polic15\16_01_2009\rezept.dbf SHARED IN A
USE E:\polic15\temp2\rezept_out2.dbf SHARED IN B
? 'START'
SELECT B

SCAN
_ID = ID
replace IN A FOR (ID = _ID) lgota WITH B->Lgota
? TKey, NOmer, v
ENDSCAN

CLEAR all


Многопользовательскую работы имитировал одновременным запуском двух копий прогрммы. Кажется работает. Хотя во время операции Replace все ровно похоже блокирует всю таблицу.
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35905279
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor_d1) Если БД для Фокс Про для Доса, то можно ли для работы с ними использовать VisualFox Pro?
Да, можно.

Но при соблюдении определенных ограничений:

1. Даблица DBF должна иметь установленный признак кодовой страницы. Т.е. CPDBF() должно иметь не нулевое значение. Для русского языка это обычно 866

2. Если существует структурный индексный файл по таблицам DOS с выражениями тегов, отличных от простого имени файла, например, UPPER(MyField), то после модификации таких таблиц из VFP индексы придется перестраиваеть заново (REINDEX), поскольку они начнут показывать не корректную информацию.

Т.е. лучше DOS-таблицы в этом случае из VFP не модифицировать

Viktor_d2) Можно ли изменять данные в целевых таблицах, не блокируя их? т.е. чтобы сохранялся многопользовательский режим работы.
Вопрос поставлен не корректно.

1. Изменять данные не блокируя их при этом не может никто! Ни одна база данных. Поскольку в этом случае нет никакой гарантии того, что вы запишите корректные данные. Т.е. данные введенные одним процессом, а не "группой товарищей"

2. Однако читать данные можно и в процессе их модификации. Но здесь следует понимать, что вы читаете "грязные" данные. Т.е. пользователь их, конечно, изменил, но может еще передумать и откатить сделанные изменения, вернувшись в исходное состояние. Кроме того, вы можете прочитать частичные (не согласованные) изменения.

FoxPro позволяет читать данные в любой момент. Даже при их блокировке другим процессом. Исключением является открытие таблиц в режиме Exclusive. В этом случае другой процесс просто не сможет открыть таблицу. Как следствие, не сможет и прочить из нее что-либо.
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35905290
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команда REPLACE c FOR-условием блокирует всю таблицу. Команда REPLACE без условий блокирует только одну (текущую) запись. Команда UPDATE-SQL блокирует только те записи, которые модифицирует.
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35912467
gepard45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

2. Если существует структурный индексный файл по таблицам DOS с выражениями тегов, отличных от простого имени файла, например, UPPER(MyField), то после модификации таких таблиц из VFP индексы придется перестраиваеть заново (REINDEX), поскольку они начнут показывать не корректную информацию

Я не очень уже помню, но по моему ни каких проблем не будет. У нас в свое время с одними и теме-же таблицами работали модули написанные на FoxPro 2.6 и VFP 6, VFP 8.0
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35912962
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard45ВладимирМ

2. Если существует структурный индексный файл по таблицам DOS с выражениями тегов, отличных от простого имени файла, например, UPPER(MyField), то после модификации таких таблиц из VFP индексы придется перестраиваеть заново (REINDEX), поскольку они начнут показывать не корректную информацию

Я не очень уже помню, но по моему ни каких проблем не будет. У нас в свое время с одними и теме-же таблицами работали модули написанные на FoxPro 2.6 и VFP 6, VFP 8.0
Кодовые страницы таблиц? Кодовые страницы среды FoxPro? Выражение индексного ключа? Была ли модификация из VFP тех полей , которые входили в выражение индекса?

Т.е. при соблюдении определенных условий так можно работать и ничего страшного не произойдет. Но если тщательно следить за выполнением этих условий!
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35913022
gepard45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Слушай ! Сейчас вопрос совместной работы приложений написанных на Foxpro и VFP носит теоритический характер, но я тебе могу сказать, что в свое время наш коммерчиский продукт успешно работал имея в своем составе модули как на Foxpro так и на VFP
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35913040
gepard45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку
Надо различать таблицы созданные в FoxPro 2.0 и FoxPro 2.6 (начиная с этой версии стали проставлять кодовуя страницу, 2.5 мы опустим, но для Windows лучше таблицы 2.0). Это, мне кажется связано с передачей прав собственности, т.к. FoxLab была раньше не зависимой компанией
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35913057
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard45

Ты вообще слышишь (читаешь) то, что я говорю (пишу)?

Работать можно, при соблюдении определенных ограничений

Повторю еще раз: можно, но с условием! Раз ваше приложение работало, значит эти условия выполнялись.

Версия FoxPro никакой роли не играет. Просто для FPD2.0 возникает дополнительное условие.
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35913143
gepard45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Если ты так жестко ставиш вопрос
Отвечаю жестко: ни ХРЕНА работать можно без ограничений. А если жопа то это дерьмово написанное мат.обеспечение. Foxpro классный продукт и он поддерживает совместимость своих таблиц (не смотря на многолетние усилия Била убить его)
...
Рейтинг: 0 / 0
Update таблиц и многопользовательская работа.
    #35913406
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это же все легко проверяется. Без хамства и наездов.

- Создайте в FPD таблицу с символьным полем. Создайте по этой таблице структурный индексный файл по выражению UPPER(MyField)
- Теперь откройте эту таблицу в Visual FoxPro в среде с кодовой страницей 1251 и модифицируйте это символьное поле.
- Далее снова вернитесь в FPD и попробуйте через SEEK найти это измененное значение

Получилось?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Update таблиц и многопользовательская работа.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]