:: Visual Foxpro, Foxpro for DOS
Re: копирование таблиц
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Проблема при создании многопользовательских приложений – как «разрулить» ситуацию, когда двое хотят править одну и ту же запись.
Проблема - это когда не знаешь как разрулить такую ситуацию.

Цитата:
Но у вас вероятность такого события минимальна.
Если с минимальной вероятностью дважды два будет равно пяти, то это нормально.

lemenev
В рамках обычного Fox создайте свободные таблицы, не включайте их ни в какие базы, открывайте их со свойством SHARED
То есть проблема, когда двое хотят править одну и ту же запись, легче переносится на свободных таблицах?

lemenev
не используйте блокировки и будет вам счастье
Программа работает, программист счастлив.
Но будет ли счастлив юзер, если ситуация, когда двое хотят править одну и ту же запись, не будет разруливаться такой программой?
Думаю, об этом надо спросить юзера еще до того, как начинать осчастливливать программиста.
Ratings: 0 negative/3 positive
Re: копирование таблиц
Владимир Максимов

Сообщений: 14100
Откуда: Москва
Дата регистрации: 02.09.2000
DmitryKn
Тогда спрошу у сообщества так:
мои свободные таблицы лежат отдельно в папке, не включены ни в один проект, в том числе в качестве freetables в dbc, при необходимости открываю use путь\tbl in 0
при корректировке использую rlock()
Это все в рамках допустимого?

Если приложение решает поставленные задачи, значит все сделано правильно. И не важно кто там и что говорит про хорошо/плохо, правильно/неправильно, идеально/криво

Свободные таблицы - один из возможных путей решения. Есть достоинства и недостатки. Но они есть у любого решения


Но! Что я хотел от Вас услышать изначально. А зачем Вы хотите сделать общие справочники у двух разных приложений? Цель-то какая? С точки зрения пользователей, а не разработчика. Причем не в духе

- Почему дверь на уровне второго этажа?
- Вдруг клиент захочет второй этаж, а дверь у него уже есть!
(с)

А реально. Какая конкретная проблема пользователя (именно пользователя, а не Ваше предположение) заставила вас начать думать об объединении справочников?

Дело в том, что способ решения проблемы напрямую зависит от задачи. Не зная задачи невозможно предложить корректное решение. Вы все время будет отвечать в духе - это не то, это сложно, это не подходит. Просто по той причине, что никто не знает, какую именно проблему Вы решаете и предлагают решения, исходя из своего представления об этих проблемах.
Ratings: 0 negative/3 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Владимир Максимов
А реально. Какая конкретная проблема пользователя (именно пользователя, а не Ваше предположение) заставила вас начать думать об объединении справочников?


Не то, что бы проблема. Существуют два приложения, одно для услуги , Прг1, другое для товаров, Прг2. Услуга касается товаров, имеет к ним непосредственное отношение. Клиенты-покупатели часто становятся клиентами на услугу и наоборот.
Изначально существовали раздельные таблицы, и это вызывало 2 неудобства:

1. Часто клиенты из Прг2 обращались за услугой из Прг1, и наоборот, при этом - у вас есть все мои данные, я недавно приобретал, и все такое, давай быстрее. Тогда открывается справочник и начинают из него муторно переписывать.

2. При заполнении 2-х таблиц возникала история, когда в Прг1 Газмяс НПОО УПТК, а в Прг2 Научное ООО "Газомясной силикатный завод". Иногда клиент даже не сообщает, что обращался а сразу дает свои реквизиты и там можно это увидеть как ООО "ГМСЗ", и если пользователь не проверил УНП (ИНН по вашему), то так и запишет. Человеческий фактор, никто не совершенен.

Я ставил проверку на уникальность УНП, тогда его не писали, я запретил сохранение без УНП, но тут пользователи затребовали снять (правда, не снял). При проверке на дубли обнаружил их великое множество. Тем временем, бухучет идет на 1С, документы из фокса импортируются, данные клиента каждый раз пишутся по верху, возникают ситуации, когда в одном приложении устаревшие и неисправленные за необращением клиента, реквизиты, затирают актуальные, ранее попавшие из другого. Мы в РБ все это отправляем на портал ЭСЧФ, акты на подписание клиентам, тамошние бухи звонят и закатывают истерики, опять таки ссылаясь (справедливо) на то, что недавно обращались и свежие реки у нас должны были быть, надо исправлять. А ведь еще есть и филиалы...

В целом это можно обозвать как бардак, инстинктивное стремление к упорядочиванию и послужило толчком к объединению справочников. С одним гораздо лучше, просто не был уверен, что реализовал правильно, были глюки и подвисания. Оказалось, что я открывал этот справичник в Load формы, а закрывать, не закрывал нигде. Вот, с алиас совет понравился, можно было бы комбинировать название таблицы с названием формы, тогда бы точно нигде никак не пересекалось бы, но я использую вью, и с налета не прокатило. Но может и не надо уже, я вроде все поправил.



Исправлено 3 раз(а). Последнее : DmitryKn, 07.11.22 21:08
Ratings: 0 negative/0 positive
Re: копирование таблиц
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
если хотите открыть одну и ту же табл дважды в одной датасессии - то простая замена алиаса вызовет ошибку, второй раз уже открытую таблу нужно открывать с AGAIN ...

Кстати, если установить у формы Private Data Session - то она будет иметь свою сессию данных, и пофигу сколько и чего открыто вне ее датасессии - она об этом не "знает" и не видит. Я например так и делаю - удобно.
Ratings: 0 negative/1 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
...
Кстати, если установить у формы Private Data Session - то она будет иметь свою сессию данных, и пофигу сколько и чего открыто вне ее датасессии - она об этом не "знает" и не видит. Я например так и делаю - удобно.

Точно, основные формы были default, исправил, спасибо!
Ratings: 0 negative/0 positive
Re: копирование таблиц
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Не спешите исправлять на privat ДС - у вас там может быть обращение к данным общей ДС - сначала нужно посмотреть/проверить что и как используется/открывается, также для приватДС в load еще и SET-ы ваши прописать надо ...
Ratings: 0 negative/0 positive
Re: копирование таблиц
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
> инстинктивное стремление к упорядочиванию
Это хороший посыл, он делает хорошие приложения, и все остальные вещи в жизни )
Ratings: 0 negative/0 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Мне в load формы нужно открыть таблицу (или получить курсор) из другой dbc. Что-то уперся.

Подскажите, как правильно открыть таблицу (или получить курсор) из другой dbc ?



Исправлено 1 раз(а). Последнее : DmitryKn, 09.11.22 13:04
Ratings: 0 negative/0 positive
Re: копирование таблиц
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
День добрый!

DmitryKn
Мне в load формы нужно открыть таблицу (или получить курсор) из другой dbc. Что-то уперся.
Подскажите, как правильно открыть таблицу (или получить курсор) из другой dbc ?

Ну оооочень давно с dbc ковырялся, плохо помню, так навскиду:

lcFileData1='...\data1.dbc'
lcFileData2='...\data2.dbc'
OPEN DATABASE (lcFileData1) SHARED
OPEN DATABASE (lcFileData2) SHARED
SET DATABASE TO DATA1
USE data1!table1 ALIAS t1 SHARED
SELECT * FROM t1 INTO CURSOR c1 READWRITE
USE IN SELECT('t1')
SET DATABASE TO DATA2
... работаем с data2

как-то так ...
Ratings: 0 negative/0 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Спасибо!
Ratings: 0 negative/0 positive
Re: копирование таблиц
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
Подскажите, как правильно открыть таблицу (или получить курсор) из другой dbc ?
БД не пронумерованы - а поэтому нет "первой" или "второй", нет "одной" или "другой".
И если вы знаете, как открывать таблицу одной БД, то вы знаете, как это сделать для любой БД.

Что можно добавить к этому в качестве примечания:

Вы можете открывать таблицу из любой БД, а также любую свободную таблицу одной и той же командой, если укажете путь к этой таблице (абсолютный или относительный), например:
USE path\table1
(Фокс найдет эту таблицу и откроет её, в какой бы БД она ни находилась или являлась свободной)

Если вы не укажете ни путь к таблице, ни имя БД, то:
1) будет открыта таблица из текущей БД, если есть открытая БД, и в ней есть таблица с таким именем;
2) иначе будет открыта таблица с указанным именем, находящаяся в текущей папке или по путям поиска (PATH), при этом не имеет значения, относится ли эта таблица к какой-то БД или является свободной.
USE table1

Если вы укажете имя БД в команде USE, то:
1) будет открыта таблица из указанной БД, в ней есть таблица с таким именем;
2) иначе будет открыта таблица с указанным именем, находящаяся в текущей папке или по путям поиска (PATH), при этом не имеет значения, относится ли эта таблица к какой-то БД или является свободной (то есть имя БД в этом случае будет проигнорировано).
USE db1!table1
Ratings: 0 negative/0 positive
Re: копирование таблиц
akvvohinc

Сообщений: 4224
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
SET DATABASE TO DATA2
... работаем с data2

Эта команда аналогична команде SELECT для рабочих областей, а поэтому необязательна для работы с таблицами БД.
Можно работать с таблицами некоторой БД даже если текущей является другая БД, и, более того, если текущей БД вообще нет.

И вообще, когда таблицы уже открыты, они все имеют уникальные алиасы, а из каких они БД или свободны, уже неважно - при работе с ними о БД можно "как бы забыть".



Исправлено 1 раз(а). Последнее : akvvohinc, 09.11.22 15:49
Ratings: 0 negative/0 positive
Re: копирование таблиц
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
А за нахера? Сидит две бабенки в кабинете, одна в сиреневых трусах, другая в синей юбке. И ты им каждой по базе данных раздаешь?
И (еб...шь мозг) морочишь голову как бы вместе, но чтобы врозь.
Ratings: 0 negative/1 positive
Re: копирование таблиц
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Зато каждая получается единственная и неповторимая :xixi:

Типа: А меня хозяинадмин любимой женой назначил :-p
Ratings: 0 negative/0 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Taran
А за нахера? Сидит две бабенки в кабинете, одна в сиреневых трусах, другая в синей юбке. И ты им каждой по базе данных раздаешь?
И (еб...шь мозг) морочишь голову как бы вместе, но чтобы врозь.

До трусов не дошло, так что не знаю, сиреневые или нет, в этих целях мог бы и по две базы каждой раздать, и по три.

Я так понимаю, это слегка завуалированная конструктивная какая-то критика чего-то или кого-то в этой ветке, или что, коллега? Что сказать то хотел?
Ratings: 0 negative/0 positive
Re: копирование таблиц
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
DmitryKn
Я так понимаю, это слегка завуалированная конструктивная какая-то критика чего-то или кого-то в этой ветке, или что, коллега? Что сказать то хотел?

Если учетный процесс пересекается, то и юзать одну базу данных.
А вероятно и одну программу. Просто в ней должны быть разные роли.
Для любого, более-менее достойного бизнеса 5-7 ролей вполне помещается в один EXE-шник размеров в 2 мегабайта. И стоит ли их делить?
Ratings: 0 negative/0 positive
Re: копирование таблиц
AndyNigmatec

Сообщений: 1574
Откуда: Волгоград
Дата регистрации: 28.06.2015
Taran
И стоит ли их делить?

Полагаю такое "добро" уже досталось ТС, теперь ему что-то с этим делать ...
Ratings: 0 negative/0 positive
Re: копирование таблиц
Taran

Сообщений: 13625
Откуда: Красноярск
Дата регистрации: 16.01.2008
AndyNigmatec
Taran
И стоит ли их делить?

Полагаю такое "добро" уже досталось ТС, теперь ему что-то с этим делать ...

Взять и сделать правильно, а не городить костыли. Чтобы потом все-таки взять и сделать правильно.
Ratings: 0 negative/0 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
Taran
Если учетный процесс пересекается, то и юзать одну базу данных.
А вероятно и одну программу. Просто в ней должны быть разные роли.
Для любого, более-менее достойного бизнеса 5-7 ролей вполне помещается в один EXE-шник размеров в 2 мегабайта. И стоит ли их делить?

В принципе, все правильно и со всем согласен, но учет не во всем пересекается. И проги возникали и видоизменялись не одновременно, и пересечение пришло не сразу. На текущий момент выгоды от объединения в одну прогу на мой непрофессиональный взгляд не перевешивают трудозатрат и неудобств - юзать надо прямо сейчас, а переделка всего займет время. Нужно было просто привести к какому-то стабильному рабочему состоянию то, что есть. А уж потом, возможно и придется спокойно и не спеша
Taran
Взять и сделать правильно, а не городить костыли. Чтобы потом все-таки взять и сделать правильно.



Исправлено 1 раз(а). Последнее : DmitryKn, 11.11.22 10:52
Ratings: 0 negative/0 positive
Re: копирование таблиц
DmitryKn
Автор

Сообщений: 300
Дата регистрации: 06.04.2022
AndyNigmatec
Taran
И стоит ли их делить?

Полагаю такое "добро" уже досталось ТС, теперь ему что-то с этим делать ...
Одно досталось, второе, обучаясь, ваял сам, как понимал.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 20 (Гостей: 20)

© 2000-2024 Fox Club 
Яндекс.Метрика