On-line: гостей 3. Всего: 3 [подробнее..]
АвторСообщение
Vlad04
постоянный участник


Пост N: 420
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)


TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений
К примеру

 цитата:

DEFINE TBROWSE oBrw2 ;
AT 60,450 ;
ALIAS cAlias ;
OF Form1 ;
WIDTH 330 ;
HEIGHT 340 ;
FONT "Verdana" ;
SIZE 9 ;
ON DBLCLICK CopyRec();
ON GOTFOCUS fModelo_Hab(2) ;
AUTOFILTER ;
CELLED EDIT;
VALUE nRec;
GRID


Здесь я собрал параметры из разных tBrows
Можно или нет и какие парметры заменить
выражением ( и каким) ?
oBrw2:....
oBrw2:....



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


SergKis
постоянный участник




Пост N: 2003
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 08:54. Заголовок: Andrey пишет 2) Как ..


Andrey пишет
 цитата:
2) Как сделать заново полное считывание базы для этой программы ?
можно обойтись без удаления объекта, а просто заново считать базу в готовый объект ?


Сие есть тайна для меня, т.к. не понимаю о чем речь.
В тсб просмотре только 1 - :nRowCount() строк

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6032
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 09:21. Заголовок: SergKis пишет: Сие ..


SergKis пишет:

 цитата:
Сие есть тайна для меня, т.к. не понимаю о чем речь.


Базу открывать по сети SHARED. Открываем БЕЗ индексов.
Первый юзер открыл базу - допустим 10 записей в ней.
Другой добавил ещё пару записей и что-то откорректировал.
Вот по кнопке Refresh хочу перечитать заново базу и получить все записи для 1-го юзера.
У себя в задаче у меня есть такая кнопка, но там у меня условный индекс, рисуется всё автоматом.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2004
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 09:31. Заголовок: Andrey :DrawLine(....


Andrey
:DrawLine(...), :DrawSelect(...) рисуют строку из буфера записи, так что, если 2-ая прога делает commit, то твоя при перемещении по базе должна показать изменения или по кнопке :Refresh(.T.)\Display(). Пробуй

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6033
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 09:39. Заголовок: SergKis пишет: или ..


SergKis пишет:

 цитата:
или по кнопке :Refresh(.T.)\Display(). Пробуй


Блин, так просто... Не догадался сразу.
Заработало !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6034
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 10:04. Заголовок: Базу открывать по се..


Базу открывать по сети SHARED. Открываем БЕЗ индексов.
А как сделать пересчёт в 1-ом столбце, который я создаю сам ?
 
ADD COLUMN TO TBROWSE oBrw DATA {|| 0 } ; //oBrw:nAt } ;
HEADER CRLF + "NN" SIZE 40 ;
COLORS {CLR_BLACK, WHITE} ALIGN DT_CENTER ;
NAME NN

Так как индексов нет, то перестройку нумерации нежно только при вставки/удалении записи.
Добавил в эти функции - пересчёт ItogoNN( oBrw )
Вот сама функция:
Скрытый текст

Но нет вообще пересчёта. Почему ?
Проект положил на fpt и - https://cloud.mail.ru/public/KRRJ/2WvDwnz2a

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1305
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.09.18 11:47. Заголовок: Andrey пишет: Но не..


Andrey пишет:

 цитата:
Но нет вообще пересчёта. Почему ?



А чего ты ожидаешь от этого ?
Andrey пишет:

 цитата:
DATA {|| 0 }



PS и не надо портить хороший пример

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2005
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 11:54. Заголовок: Andrey А что ты счи..


Andrey
А что ты считаешь таким "хитрым" способом ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6035
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 12:00. Заголовок: SergKis пишет: А чт..


SergKis пишет:

 цитата:
А что ты считаешь таким "хитрым" способ


Ставил
ADD COLUMN TO TBROWSE oBrw DATA {|| oBrw:nAt } ;

Первый раз показывает правильно. После удаления/вставки или колёсиком покрутить нумерация слетает....
Может и неправильно так делать, тогда подскажите как ?
База открывается без индексов !
Можно было бы через массив, там вроде проще, но нужна база.

Haz пишет:

 цитата:
PS и не надо портить хороший пример


Я его до рабочей таблицы довожу. Как в жизни юзера требуют.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2006
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 12:12. Заголовок: Andrey Тебе что пиш..


Andrey
Тебе что пишешь, что не пишешь - результат один ....

 цитата:
Если ON и без индекса, то сам управляй переменной :nLen, т.е. уст. блок :bLogicLen для "правильного" счета записей в просмотре.


плюс свой skipper нужен, может еще что понадобится. А для NN колонки пиши
ADD COLUMN TO TBROWSE oBrw DATA {|| (oBrw:cAlias)->( OrdKeyNo() ) } ;
но без индекса с SET DELETED ON хз что будет

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2007
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 12:14. Заголовок: в работе тсб. не ту ..


в работе тсб.
не ту кнопку нажал, сори.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2008
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 12:52. Заголовок: Andrey пишет Я его д..


Andrey пишет
 цитата:
Я его до рабочей таблицы довожу. Как в жизни юзера требуют.


Делай команду выборки в др. таблицу ( COPY TO ..., APPEND FROM ... FOR ! deleted )
Поля бери только ключ для связки или recno + поля по которым построить рабочие индексы для тек. просмотра, если надо.
Таблица будет "узкая" и быстрая.
Связываешь с основной базой и работаешь SET DELETED OFF, отображая удаленные цветом (вдруг передумают удалять).
Все модификации переносишь на основную базу. По refresh можешь сделать ZAP и снова APPEND FROM ... или новый COPY TO ... с переоткрытием.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 6036
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 13:35. Заголовок: SergKis пишет: ADD ..


SergKis пишет:

 цитата:
ADD COLUMN TO TBROWSE oBrw DATA {|| (oBrw:cAlias)->( OrdKeyNo() ) } ;
но без индекса с SET DELETED ON хз что будет


Ставил и так, только индекса нет и высвечивается RECNO()
Из-за этого и подумал, что можно первую колонку сделать "виртуальной" и нумерацию туда самому переписывать
при вставке/добавлении записи.
Удалённые записи не нужны, юзер просит только рабочие записи.

SergKis пишет:

 цитата:
По refresh можешь сделать ZAP и снова APPEND FROM ... или новый COPY TO ... с переоткрытием.


Нужно тогда закрывать базу, открывать её монопольно и т.д.
Более сложный вариант получается....

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1306
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.09.18 13:38. Заголовок: Andrey пишет: Может..


Andrey пишет:

 цитата:
Может и неправильно так делать, тогда подскажите как


Правильно по индексу. Для таблицы которая целиком на экране , сойдет и ADD COLUMN TO TBROWSE oBrw DATA {|| oBrw:nPaintRow }

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1307
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.09.18 14:10. Заголовок: в др. таблицу ( COP..


в SHARED и по сети оптимально только индекс. Неоптимально - написать что то типа
 
ADD COLUMN TO TBROWSE oBrw DATA {|| GetNum( oBrw ) }


где GetNum()


 
Func GetNum( oBrw )
local cAlias := oBrw:cAlias
local nRec := (cAlias)->(RecNo())
LOcal n := 0


(cAlias)->(dbEval({|| ++n }, {|| !Deleted() .and. RecNo() <= nRec } ))
(cAlias)->( dbGoTo(nRec))

Return n


НО это костыль по сравнению с индексом

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2009
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 14:24. Заголовок: Andrey пишет Нужно т..


Andrey пишет
 цитата:
Нужно тогда закрывать базу, открывать её монопольно и т.д.
Более сложный вариант получается....


Это таблица отобранная, может состоять из одного поля (ключ или RecNo для связи с базой), находится в mem:,
открыта сразу монопольно - твой тсб единственный пользователь, многое упрощается.
Это общий случай для всех отборов (типа команда select) ведения, отчетов, ....

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2010
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 14:30. Заголовок: PS Можешь иметь на н..


PS
Можешь иметь на нее тэг с FOR ! deleted(), тогда удаленные будут исчезать при set deleted on, OrdKeyNo(), OrdKeyCount() будут ok

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1309
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.09.18 14:45. Заголовок: SergKis пишет: Дела..


SergKis пишет:

 цитата:
Делай команду выборки в др. таблицу ( COPY TO ..., APPEND FROM ... FOR ! deleted )


Сергей, привет!
В сети будет сюрприз.
Если коллега удалит или вставит запись , то RDD это отработает при скроле по таблице и запись либо появится, либо исчезнет, а вот нумерация слетит т.к. Refresh() не вызывался и временная таблица не пересчитана

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2011
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 15:04. Заголовок: Игорь, привет ! Сюрп..


Игорь, привет !
Сюрприза не будет, т.к. работаем (тсб) совсем с др. таблицей с конкретным числом записей.
Под командами copy to ..., append from ... понимаю условное обозначение выборки с уст. scope, filter (это скорее do while ...)
На время работы их, если это под тсб, блокируем тсб :lEnable := .T., потом :Reset(), :Display() ...
Таблица для тсб может иметь поля для индексов, тогда делаем сначала reindex.
То что в базе запись удалена, а у нас нет - будет пустая запись на экране
новой не будет совсем, но это временно до след. нажатия refresh, допустимое время появления данных на сервере оно субъективно, но существует

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1310
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 17.09.18 15:10. Заголовок: SergKis пишет: Сюрп..


SergKis пишет:

 цитата:
Сюрприза не будет


проще индекс держать с !Deleterd() и дергать номер ключа. Но легкий путь , не наш метод

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 2012
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 15:14. Заголовок: PS Для тсб (человека..


PS
Для тсб (человека) вполне может не важны те добавления\удаления в данный момент он свое крыжит
для важных выборок делаем locktable на время выборки и "чудес" не будет

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 520
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет