powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Многопользовательское приложение...
25 сообщений из 26, страница 1 из 2
Многопользовательское приложение...
    #32875078
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почти уже сделан проэкт...Хотелось бы знать, что нужно сделать чтобы
приложение было многопользовательским, тоесть одновременно работающим на разных компьютерах. Тоесть база у меня будет лежать в папочке на сервере... Какие есть ньюансы...
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32875210
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если проЭкт уже сделан, а вопрос о многопользовательской работе встал сейчас, то боюсь, что его придется переделывать.

Про ньюансы, надо создать ЕХЕ, создать дистрибутив и поставить его на клиентские машины на кот он должен работать, если не будет работать то задавать вопросы в таком виде - делаю то-то, получается то-то.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32875458
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все таблицы у меня находятся в контейнере базы данных, и эта
база данных будет находится на сервере... смогут ли люди с клиентской частью одновременно получить доступ до этой базы данных...
Тоесть ее на каждом клиенте нужно открывать базу данных не эксклюзивно???
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32875496
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТоесть ее на каждом клиенте нужно открывать базу данных не эксклюзивно???

Правильно понимаешь, но ещё и таблички надо открыть в разделяемом режиме.

Нужно использовать транзакции, можно использовать буферизацию итд, вообщем пробуй.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32875520
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist но ещё и таблички надо открыть в разделяемом режиме.
Нужно использовать транзакции, можно использовать буферизацию итд, вообщем пробуй.
Транзакции и буферизацию я то использую по полной программе...
А что Вы имели ввиду под: "открытием табличек в раздельном режиме"??
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32875547
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
USE Table IN  0  SHARED

или для форм использовать SET EXCLU OFF
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32875953
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что недостаточно просто дать возможность работать с одной таблитцей нескольким пользователям одновременно. Это-то решается элементарными настройками в главной программе:

SET EXCLUSIVE OFF

И проверкой опции Exclusive для всех курсоров в DataEnvironemnt форм и отчетов.

Основная проблема заключается в разрешении конфликтов совестного доступа: два пользователя "одновременно" решили модифицировать запись. Если ты писал программу в расчете на одного пользователя, то будут постоянные претензии со стороны пользователей о невозможности работать. Будут идти постоянные сообщения об ошибках.

Вряд ли, при создании однопользовательского приложения, ты заботился о сокращении времени блокировки записей и таблиц.

Кроме того, при работе в режиме EXCLUSIVE OFF невозможно использовать ряд команд и функций. Тех, которые требуют единоличного доступа к таблице.

ALTER TABLE
INDEX when creating, adding, or deleting a compound index tag.
INSERT [BLANK] - Оставлена для совместимости с FPD. Не путать с INSERT-SQL
MODIFY STRUCTURE To use this command to change a table structure, you must open the table exclusively. You can, however, use this command in read-only mode when you open the table for shared use.
PACK
REINDEX
ZAP

Вобщем, Павел правильно сказал. Придется переписывать программу. "Косметикой" здесь не отделаешся.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876031
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi help123!

C твоим ником пора бы и знать где искать ответы на такие вопросы :) Там
целый раздел есть "Programming for Shared Access" - почитай его для начала.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876189
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

ВладимирМВряд ли, при создании однопользовательского приложения, ты заботился о сокращении времени блокировки записей и таблиц.
А как это. Я перед изменением данных в таблице использовал оптимистическую буфферизацию, и в сами таблицы изменения подтверждал TableUpdatе-ом, окруженным транзакцией. Правильно все ли делал???
ВладимирМневозможно использовать ряд команд и функций. Тех, которые требуют единоличного доступа к таблице:
INDEX, INSERT [BLANK], MODIFY STRUCTURE
INDEX - индекси по таблицам все построены в контейнере базы данных, тоесть во время исполнения программы я их нигде не создаю по таблицам. А только использую для связывания временных курсоров для формирования отчетов... а ведь они выполняются на стороне клиента... верно???
А вот INSERT [BLANK] использую конечно, а что-же тогда делать... как добавлять записи в таблицы???
Диченконе заниматься глупостями а засесть за изучение MSSQL и клиент-серверных технологий
полностью с Вами согласен, MSSQL это круто, но зачем он мне, если в моей базе буду работать: я, мой менеджер, да еще 2 начальника будут один раз в день отчеты смотреть... Да и сложновато для начала... я ведь только почти VFP не до конца освоил...
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876380
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ перед изменением данных в таблице использовал оптимистическую буфферизацию, и в сами таблицы изменения подтверждал TableUpdatе-ом, окруженным транзакцией. Правильно все ли делал???

Правильно, есть несколько тонких моментов, TableUpdate() - возвращает результат выполнения операции обновления, вот его НЕОБХОДИМО разбирать, для того, что бы разрешать конфликты обновления, наряду с этим:

- Buffering = 3 - производит косвенный TableUpdate(), те сбрасывает изменения в записи на диск при переходе на др запись, вот здесь есть потенциальная опасность обновить данные вне транзакции.

- Buffering = 5 - требует явного TableUpdate()

авторА вот INSERT [BLANK] использую конечно, а что-же тогда делать... как добавлять записи в таблицы???

просто использовать INSERT-SQL (INSERT INTO TABLE(....) VALUES(.....)), на это кстати указал Владимир.

авторMSSQL это круто

Молодец, правильно понимаешь, что к чему, а то они тебе ещё предложат "тонкого клиента" нарисовать.

Всему своё время, дерзай.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876396
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123
ВладимирМВряд ли, при создании однопользовательского приложения, ты заботился о сокращении времени блокировки записей и таблиц.
А как это. Я перед изменением данных в таблице использовал оптимистическую буфферизацию, и в сами таблицы изменения подтверждал TableUpdatе-ом, окруженным транзакцией. Правильно все ли делал???
Рад за Вас. Большинство разработчиков однопользовательских приложений так не делают, поскольку для одного пользователя это не нужно.

help123 ВладимирМневозможно использовать ряд команд и функций. Тех, которые требуют единоличного доступа к таблице:
INDEX, INSERT [BLANK], MODIFY STRUCTURE
INDEX - индекси по таблицам все построены в контейнере базы данных, тоесть во время исполнения программы я их нигде не создаю по таблицам. А только использую для связывания временных курсоров для формирования отчетов... а ведь они выполняются на стороне клиента... верно???
Опять же, рад за Вас. Грамотное решение.

help123А вот INSERT [BLANK] использую конечно, а что-же тогда делать... как добавлять записи в таблицы???
Мда. Не надо было включать INSERT [BLANK] в список. Вы ее спутали с дургой командой (INSERT-SQL) несмотря на явное предупреждение.

В FoxPro есть 2 команды, внешне похожие:

INSERT [BLANK]
INSERT-SQL

INSERT-SQL - это то, что Вы пишите примерно в таком синтаксисе

INSERT INTO MyTable (Field1, Field2) VALUES (m.Var1, m.Var2)

Эту команду можно использовать в многопользовательском режиме. Никаких препятствий и ограничений нет.

INSERT [BLANK] - это наследие FPD. Что это такое я описывать не буду, чтобы не вводить в искушение. Использовать ее вообще не рекомендуется даже в однопользовательском приложении. Оставлена исключительно для обратной совместимости с FPD.

help123 Диченконе заниматься глупостями а засесть за изучение MSSQL и клиент-серверных технологий
полностью с Вами согласен, MSSQL это круто, но зачем он мне, если в моей базе буду работать: я, мой менеджер, да еще 2 начальника будут один раз в день отчеты смотреть... Да и сложновато для начала... я ведь только почти VFP не до конца освоил...
Диченко слишком привык флеймить, а стиль общения во флеймовых форумах сильно отличается от стиля общения в тематических форумах. Большинство людей в таких форумах не расположены шутить вообще, а на таком уровне, на котором шутит Диченко воспринимают это как неприкрытое хамство.

(2 Диченко : это не наезд. Я то Вас понимаю, но шутка, как и ложка, хороша к месту и ко времени.)

PS: Зачем Вы выделяете свои сообщения жирным шрифтом? Не думаю, что в этом есть необходимость. Вам ответят и в том случае, если текст будет написан обычным шрифтом.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876606
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ
Мда. Не надо было включать INSERT [BLANK] в список. Вы ее спутали с другой командой (INSERT-SQL) несмотря на явное предупреждение.

А вот спутал я ее как раз.... никогда не угадаете... APPEND BLANK
так стыдно.....
Чтобы добавлять записи в таблицы я использую:
Код: plaintext
1.
2.
SELECT xxx
APPEND BLANK IN xxx
REPLACE xxx.fieldX WITH zzz
Такую конструкцию хоть можно использовать в многопользовательской среде???
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876644
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧтобы добавлять записи в таблицы я использую:
SELECT xxx
APPEND BLANK IN xxx
REPLACE xxx.fieldX WITH zzz

Такую конструкцию хоть можно использовать в многопользовательской среде???

Такую можно.

Несколько замечаний

- SELECT xxx можно и не делать если используешь APPEND BLANK IN xxx, и ес-но такой же синтаксис использовать для REPLACE .... WITH ... IN xxx
- конструкцию APPEND&REPLACE для красоты (и по идеологии) надо бы заменить на INSERT - SQL, сам понимаешь 2-е операции или одна (скорость однако)
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876667
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist конструкцию APPEND&REPLACE для красоты (и по идеологии) надо бы заменить на INSERT - SQL, сам понимаешь 2-е операции или одна (скорость однако)Вот доделаю базу чтобы заработала, поввожу данные, а потом буду подчищать ее, оптимизировать...
большое спасибо за советы
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876699
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот доделаю базу чтобы заработала, поввожу данные, а потом буду подчищать ее, оптимизировать

Если это первая разработка, тогда простительно.

На самом деле оптимизировать уже поздно - этим необходимо заниматься на стадии проектирования данных, что бы потом не было мучительно больно развивать проект или вообще переделывать с нуля, хотя как говаривал один мой знакомый "Что бы понять надо сделать, что бы сделать надо понять", такой вот замкнутый круг.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876902
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist
- SELECT xxx можно и не делать если используешь APPEND BLANK IN xxx, и ес-но такой же синтаксис использовать для REPLACE .... WITH ... IN xxx
Лично я наоброт, посоветовал бы по возможности всегда использовать SELECT xxx перед командами модификации. В ранних версиях FoxPro было много глюков, связанных с модификацией данных не в текущей рабочей области через опцию IN.

PaulWist
- конструкцию APPEND&REPLACE для красоты (и по идеологии) надо бы заменить на INSERT - SQL, сам понимаешь 2-е операции или одна (скорость однако)
Логика работы комады INSERT-SQL и APPEND+REPLACE достаточно отличны. Особенно это касается тех, полей, которые не указываются в списке полей для внесения значений (NULL или EMPTY). Все зависит от конкретной задачи.

Кроме того, опять же в ранних версиях были ряд глюков с командой INSERT-SQL, а вот со связкой APPEND+REPLACE никаких глюков не наблюдалось.

Поскольку автор не указал версию, то лучше перестраховаться.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32876987
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЛогика работы комады INSERT-SQL и APPEND+REPLACE достаточно отличны. Особенно это касается тех, полей, которые не указываются в списке полей для внесения значений (NULL или EMPTY). Все зависит от конкретной задачи

Владимир, вот поэтому INSERT лучше, во всяком случае нельзя будет запихнуть "пустое" значение в поле с NOT NULL, хотя иногда бывает надо.

ВладимирМВ ранних версиях FoxPro было много глюков, связанных с модификацией данных не в текущей рабочей области через опцию IN
.......
Кроме того, опять же в ранних версиях были ряд глюков с командой INSERT-SQL

С тройкой не помню, а в 5а всё работало замечательно.

ВладимирМПоскольку автор не указал версию, то лучше перестраховаться.

Принято. Согласен.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32878092
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМПроверка опции Exclusive для всех курсоров в DataEnvironemnt форм и отчетов. А если у меня в контейнере базы данных есть LocalView's и в DataEnvironment форм включены такие LV.
Так вот, у них свойство Exclusive установлено .Т. и изменению не поддается.
Будет ли это проблемой в многопользовательском приложении.???
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32878102
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123 ВладимирМПроверка опции Exclusive для всех курсоров в DataEnvironemnt форм и отчетов. А если у меня в контейнере базы данных есть LocalView's и в DataEnvironment форм включены такие LV.
Так вот, у них свойство Exclusive установлено .Т. и изменению не поддается.
Будет ли это проблемой в многопользовательском приложении.???
Нет. Проблем не будет.

Local View - это по сути результат выполнения команды Select-SQL. Т.е. некая таблица, которая физически находится на машине клиента. Поэтому другой пользователь о ней вообще ничего не знает.

Даже если другой пользователь откроет то же самое Local View на его машине будет сформирована другая таблица, как результат команды Select-SQL.

Вообще-то, настройка по-умолчанию в DataEnvironment как форм, так и отчетов как раз и сделана в расчете на многопользовательское приложение. Т.е. если ты не менял для курсоров в DataEnvironment опцию Exclusive, то о ней можешь и не вспоминать. Там все настроено "как надо".
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32878354
Aries
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй тогда полный SQL
Истина где-то там...
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32878674
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос: обязательно ли компилировать проэкт в *.exe, не можно ли поставить на каждую машину по Фоксу и запускать проэкт.
Просто пока будет работать только на 2-х компьютерах, и необходимо будет в процессе работы что-то корректировать в программе....
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32878697
Фотография Диченка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Еще вопрос: обязательно ли компилировать проэкт в *.exe, не можно ли поставить на каждую машину по Фоксу и запускать проэкт.
Просто пока будет работать только на 2-х компьютерах, и необходимо будет в процессе работы что-то корректировать в программе....

Здрасте! Конечно нужно компилировать, и лучше всего написать "запускалку", отдельный экзешник, которая будет запускаться в первую очередь, перед запуском основного экзешника. "Запускалка" будет проверять версию программы и если появилась более новая версия, то "запускалка" должна сперва копировать новую версию на компьютер пользователя и потом только выполнить запуск экзешника. Новую версию программы целесообразно выкладывать на компьютер, который будет играть роль файл-сервера (где будут лежать общие таблицы). Таким образом тебе не нужно будет бегать по каждому компьютеру и обновлять экзешник. Достаточно будет выложить новый экзешник на файл-сервер, а "запускалка" сделает все сама на каждом компе юзера. Насчет установки фокса на каждом компе - лучше так не делай. Ведь ты когда например 1С покупаешь, ты же не ставишь на каждый комп С++, на котором она написана ?
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32878925
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
help123Еще вопрос: обязательно ли компилировать проэкт в *.exe, не можно ли поставить на каждую машину по Фоксу и запускать проэкт.
Просто пока будет работать только на 2-х компьютерах, и необходимо будет в процессе работы что-то корректировать в программе....
В принципе, такое сделать можно. Но! Такое ведение проекта требует слишком большой бдительности от программиста. Ведь по сути, у тебя будет даже не 2, а 6 копий:

-) 3 копии исходников (2 рабочих и 1 отладочная на твоем компе)
-) Для кажой копии исходника свои откомпилированные файлы (выполняется ведь не исходные файлы PRG, а их откомпилированная версия FXP)

А ведь возможны еще дубли файлов, как резервная копия или тестовые варианты.

Т.е. ты получаешь страшную головную боль, когда на одном компе все работает, а на другом нет. Вот и ищи, где именно расхождение!

То, что описал Диченко -это самая лучшая стратегия модификации проекта "на лету".

Отладочная копия - одна. Место для взятия нового релиза - одно. Взятие нового релиза происходит автоматически в момент запуска программы у клиента. От тебя требуется только скомпилить новый релиз и положить в нужное место. При этом количество клиентов не имеет никакого значения.

Сразу хочу предупредить еще об одной опасности такой корпоративной разработки.

Скорее всего, какой-нибудь начальник захочет чтобы в его приложении была орагнизована какая-то особенная обработка. Не такая как у "простых смертных". Тут возможны 2 принципиальных решения задачи:

-) Написать отдельную версию программы
-) Сделать ветвление в одной общей версии для всех

Так вот, я бы не советовал делать отдельную версию программы. Будет большая головная боль с модификацией: сделал модификацию в одной, но забыл в другой.

Лучше делать ветвление в одной общей версии для всех. Но еще лучше стоять до последнего на том, что такое выделение сделать очень сложно.
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32881311
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Владимир!

> Лучше делать ветвление в одной общей версии для всех. Но еще лучше
> стоять до последнего на том, что такое выделение сделать очень сложно.

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

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Многопользовательское приложение...
    #32881448
Фотография help123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто подскажет как правильно скомпилировать проэкт в *.ехе и что для этого необходимо сделать и на какие ньюансы стоит обратить внимание...
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Многопользовательское приложение...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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