On-line: tnsr2, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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: 2013
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 15:16. Заголовок: Haz пишет проще инде..


Haz пишет
 цитата:
проще индекс держать с !Deleterd()


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

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




Пост N: 2014
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 15:19. Заголовок: PS + такая техника с..


PS
+ такая техника спокойно перейдет в LetoDB

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




Пост N: 6038
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 15:40. Заголовок: SergKis пишет: Кто ..


SergKis пишет:

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



Да я уже согласился.
Понял, что огород городить не надо.
Надо открывать базу в SHARED и делать индекс !Deleterd()
Только вот забыл как делать файл с уникальным именем в папке..
Сейчас сделаю свой вариант и покажу Tsbrowse.

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




Пост N: 2015
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 15:45. Заголовок: Andrey пишет Только ..


Andrey пишет
 цитата:
Только вот забыл как делать файл с уникальным именем в папке..


А с именем самого dbf не пойдет. Его должны открывать ВСЕ приложения с модификацией (как SET AUTOPEN ON) иначе "нам удачи не видать"

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




Пост N: 2016
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 15:48. Заголовок: PS Если планируешь п..


PS
Если планируешь повторно исп. удаленные записи, то нужен тэг FOR Deleted()

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




Пост N: 6039
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 15:51. Заголовок: SergKis пишет: А с ..


SergKis пишет:

 цитата:
А с именем самого dbf не пойдет. Его должны открывать ВСЕ приложения с модификацией (как SET AUTOPEN ON) иначе "нам удачи не видать"


Зачем ? Каждый узер открывает базу и делает свой индекс с !Deleterd()
Вешаем таймер и каждые полминуты делаем Refresh() базы.
Чем не решение ?
Избавимся от создания общего индекса.
Но можно держать и общий индекс с !Deleterd().
Это уже без разницы.

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




Пост N: 2017
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 16:05. Заголовок: Andrey пишет Вешаем ..


Andrey пишет
 цитата:
Вешаем таймер и каждые полминуты делаем Refresh() базы


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

 цитата:
Избавимся от создания общего индекса


По мне это минус. Если базы копеечные, то да так можно делать, но вопрос нужно ли ?

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




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


SergKis пишет:

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


Понял, так делать тогда не будем. Только для теста....

SergKis пишет:

 цитата:
По мне это минус. Если базы копеечные, то да так можно делать, но вопрос нужно ли ?


У меня такой механизм (условная индексация) работает уже лет 15.
Условная индексация каждого юзера для всех его нужных полей базы, что хочет то и выбирает и ко мне не пристаёт.

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




Пост N: 6044
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.09.18 18:25. Заголовок: Что-то фигня получае..


Что-то фигня получается с разными индексами...
С одним общим лучше !
Вот так выглядит теперь:
[img]https://i.imgur.com/gievW7U.png?3[/img]

Вот проект и исходники (fpt) - https://cloud.mail.ru/public/GMwS/mbgXwsCEs
Запустить две программы и можно тестировать.
Посмотрите пожалуйста исходники, может что-то и упустил.

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




Пост N: 2018
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.09.18 18:56. Заголовок: Andrey Так поправь ..


Andrey
Так поправьСкрытый текст


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




Пост N: 6064
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.10.18 16:04. Заголовок: Всё таки есть неболь..


Всё таки есть небольшие сбои в Tsbrowse или в примерах Tsb_Shared нужно что-то добавлять.
Непонятки возникли:
1) если удалить 2-3 записи в таблице, то нарушается показ в вертикальном скролинге.


2) demo.exe - если таблица без вертикального скролинга, то при добавлении записей вертик.скролинг не появляется (иногда появляется)


3) demo2.exe - если таблица без вертикального скролинга, то при добавлении записей вертик.скролинг появляется но без нижней стрелки, огрызок какой то...

Последний проект Tsb_Basic(1.8).7z здесь - https://cloud.mail.ru/public/8WrP/cpCzTtqKp

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




Пост N: 2084
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 07.10.18 18:43. Заголовок: Andrey Просто добав..


Andrey
Просто добавь воды строки
 
STATIC FUNCTION RecnoInsert(oBrw)
...
oBrw:ResetVScroll( .T. )
oBrw:oHScroll:SetRange( 0, 0 )

ENDIF

RETURN Nil
...
STATIC FUNCTION RecnoDelete(oBrw)
...
with object oBrw
If :nLen > :nRowCount() .and. :nRowPos < :nRowCount()
(:cAlias)->( dbSkip(-:nRowCount()) )
:nRowPos := :nRowCount()
:Refresh(.T.)
EndIf
end with


oBrw:ResetVScroll( .T. )
oBrw:oHScroll:SetRange( 0, 0 )

RETURN Nil
...

выделенное синим, можешь не ставить.

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




Пост N: 6065
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.10.18 20:48. Заголовок: SergKis пишет: Прос..


SergKis пишет:

 цитата:
Просто добавь воды строки



Спасибо ! Помогло !

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




Пост N: 6071
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.10.18 22:47. Заголовок: Всем доброй ночи ! В..


Всем доброй ночи !
Вот столкнулся с такой проблемой, не знаю как сделать перемещение записи в таблице вверх или вниз.
Какой нужно сделать алгоритм показа ?
Ввести новое поле в базу или по другому ?
Я делал ранее алгоритм пересчёта поля на лету, но там база была очень маленькой.
А для больших баз как это реализовать ?

Вот заготовку примера сделал - https://cloud.mail.ru/public/FDWs/KgajUDnAw

И ещё одна важная особенность !
Юзер хочет добавить запись под/перед курсором/маркером бровса, а не в конец базы.

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




Пост N: 1358
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.10.18 16:48. Заголовок: Andrey пишет: Юзер ..


Andrey пишет:

 цитата:
Юзер хочет добавить запись под/перед курсором/маркером бровса, а не в конец базы.


В чем проблема? Держи активный индекс по которому сортируются записи. Хоть вычисляемый, хоть по значению в поле. При добавлении позаботься о том чтобы у новой записи индекс получил нужное значение.
Варианты реализации - все что угодно на твой вкус, главное результат.
Вопрос вообще ни каким боком к Tsbrowse не относится. Если тупо оценить его то это, "как логически поместить запись в нужную позицию"
Это же и к предыстории к вопроса относится. Как решишь, далее нужно всего лишь применить новую редакцию ::gotorec() с указанием нужной строки

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




Пост N: 2086
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.10.18 19:41. Заголовок: Andrey Использую бе..


Andrey
Использую без индексов C функции (вроде от Pasha они), пробни, может подойдет Скрытый текст


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




Пост N: 1359
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.10.18 20:24. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Использую без индексов


Сергей привет.
Навеяно исходниками. Году в 90 занимался вставкой записей используя функции семейства fread, fwrite итд. Зная структуру dbf эта задача прммитивная, но тогда.... и базы были короче и валялись они локально. А может и оптимизма в голове было побольше. Сейчас я только пожелаю флаг в руки и вперёд в атаку. А я тут подожду.

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




Пост N: 2087
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.10.18 22:25. Заголовок: Haz пишет А я тут п..


Haz пишет
 цитата:
А я тут подожду.


Как говорится "Хозяин-барин", но dbInsert очень хорошо легла на:
1. Разбиение отчета печати по листам, когда нельзя разрывать лист на строках заголовков, итогов и т.д., т.е. разрывать лист можно только на детальной строке а далее как душа ляжет ... Вставляю строку типа chr(12)
2. Выполнен отбор типа select * ...., далее по уточнению различные группирования, заголовки\подзаголовки\итоги\под итоги и т.д. с выходом на печать и п.1
3. Ввод в какой то документ, где пользователь сам определяет перед\после какой строкой[и] делаем запись new
4. Export или подсовывание запроса с базы где нет полей с определенными названиями в какой то уже работающий отчет. Делаем запрос и потом меняем названия полей на нужные или на раб. месте за дробью надо не 7 знаков, а по установке, округляем и меняем в структуре через FieldRename(...)
Это основное, что использую.

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




Пост N: 1360
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.10.18 23:02. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как говорится "Хозяин-барин", но


Плавали, знаем
все тоже делаю в sql запросах
Select top 50 *
Select next
Select summa as [ выручка с НДС ]
Группировки так вообще для этого скуль и придумали
а вставку в определённую логическую позицию по спец полю определяющему сортировку и вложенность структуры.

Но тут кто как привык. Все подходы правильные когда работают

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




Пост N: 2088
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.10.18 23:32. Заголовок: Haz пишет все тоже д..


Haz пишет
 цитата:
все тоже делаю в sql запросах


На ADS у нас только немцы приходили в начале 2000-х, но их выжили скандинавы.
Из за его стоимости никто из клиентов не хочет(ел) приобретать лицензию, даже богатый Латв.энерго.
От исп. mysqll и firebird мы отказались сами из за администр. затрат эксплуатации на чужих администраторах\рс.

 цитата:
Но тут кто как привык


Схему select * или select (...) as (...) ... поддерживаю на DBFCDX(letodb), распределяя "основной" запрос на сервер, с доработкой "до кондиции" на клиенте.

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