Страница 2 из 4
Добавлено: 22.09.2007 19:37:05
Attid
зашел на форум как раз про sqlite узнать =)
но ком строка для рисования бд это все-таки грустно )
кста проэкт roznitsa, я что-то не нашел беглым взглядом, не в мсе не в конфе =/
Добавлено: 22.09.2007 20:49:50
debi12345
Attid писал(а):зашел на форум как раз про sqlite узнать =)
но ком строка для рисования бд это все-таки грустно )
Категорически не согласен. По другому фиг нормальную БД фиг слепишь. Гибкость и надежность SQL-cкриптов, запускаемых через фронтэнд из командной строки - ничем не заменишь. Уж поверьте !
кста проэкт roznitsa, я что-то не нашел беглым взглядом, не в мсе не в конфе =/
В "public.binaries" на том же ньюс-сервере. Берите последний по дате. Хотя это еще не финальная версия. Но весь функционал на месте.
ПС:
Нюансы SQLITE3 в МСЕ:
- есть соглашения о соствествии типов при "CREATE TABLE .." и SQLDB-типов полей, при их выполнении типы полей определяются корректно и не требуют подстройки
- типы агрегатных полей, констант и прочего ( не входящего в "CREATE TABLE" - то есть не выполняеющего соглашение выше ) не определется корректно, поэтому MSEgui правильный тип можно подправить вручную - в FieldDefs (чего в дельфях/FPC нет ). Такова история полного приручения SQLITE3 !
То есть использование "CREATE TABLE" ( а не сторонних приблуд ) - важный момент.
Кстати, одна приблуда часто не может открыть БД-файл, созданный/модифицированный другой приблудой. Наступал на эти грабли...
Добавлено: 22.09.2007 21:27:40
Attid
Код: Выделить всё
Кстати, одна приблуда часто не может открыть БД-файл, созданный/модифицированный другой приблудой. Наступал на эти грабли
ну это может тольок говорить о неполноцености БД. но речь не об этом.
есть вопрос как к знатоку МСЕ, который решит перевод еще проги на мсе.
могу ли я в ДБгрид добавлять в конце запроса строчку для отображения.
например запрос возрощает
а вывести клиенту
Код: Выделить всё
ботинки 2 35
телефон 1 45
мыша 15 10
всего 18 90
как это сделать запросом или в отчете я знаю,
интересен вариант именно в гриде наименьшеми потерями.
на вскидку могу предположить использование локального буфера, но может можно проще
Добавлено: 22.09.2007 22:28:10
debi12345
Я тоже прошел период заблуждений типа поиска "волшебного грида, умеющего все делать". Слава Всевышнему, Мартин вправил мозги.
Как сделано в ROZNITSA:
================
qrySS:
в событии "AfterOpen", вызываемом при первичном открытии выборки или при автоперезапросе после записи в БД, инициированном опциями {dso_autoapply & dso_autocommit & dso_rerfresafterapply}, вызывается код заполнения фиксированной строки внизу грида :
Код: Выделить всё
// ------------------------------
// Пересчет итогов во всех (пока) столбцах по подписке
//
procedure tmainfo.recalcsummaryss;
var
bm1: tbookmark;
i,i1: integer;
begin
with dmmo, qrySS do begin
// чтобы не тормозило и не мигало при сканировании запроса
disablecontrols;
bm1:= getbookmark; // куда вернуться после сканироования
// по очереди - пресчитать все столбцы грида
for i:= 0 to 11 do begin
first; // в начало запроса
i1:= 0;
// само сканирование
while not eof do begin
// набор суммы
i1:= i1 + fields[(min_amount_fieldno-1){поправка на разную нумерацию полей } + i].asinteger;
next;
end;
// отображение суммы в текущем столбце фикс-строки
wgrdSS.fixrows[-2].captions[3{с этого стотбца идут месяцы} + i].caption:= IntToStr(i1);
end;
// возвращаемся, где были
gotobookmark(bm1);
// пусть теперь мигает
enablecontrols;
end;
end;
==============
Здесь используется метод "обсчитывать весь датасет", а не грид. При "disablecontrols" - очень скоростной ( не медленнее, чем внутренний пересчет в гриде ). Если записей очень много - можно пересчитывать дельту от последней суммы. Но тут придется фильтровать состояния выборок - чтобы несколько раз не посчитало.
Кстати, во избежание тупейшего дублирования памяти, грид в SQLDB просто отбражает текущее "окно" ( в кол-во строк грида ), накладываемое на опять-таки "окно" ( размером "packet records") записей, выбранных из БД. Поэтому считать суммы по данным самого грида ( а не связанного запроса к БД ) - может позволить только неграмотно сделанный грид, 1) вытащивший из БД все записи и 2) продублировавший эти данные во внутренних структурах.
Генератор очетов имеет фишку авто-суммирования по заданному полю БД. Включается специальной опцией.
Добавлено: 23.09.2007 00:33:25
Attid
Я тоже прошел период заблуждений типа поиска "волшебного грида, умеющего все делать". Слава Всевышнему, Мартин вправил мозги.
ну мне много не надо функционала, просто поддерживаю в 2х интерфейсах:
грид в приложении и табличка в вебморде(пхп).
мне только сортировку и подпись внизу, записей обычно не больше 30.
хотя фильтрация тоже было-бы прикольно +)
Здесь используется метод "обсчитывать весь датасет", а не грид.
это и имелось ввиду. спасибо попробую.
есть пару замечаний по МСЕ
1, решил пересохранить проэкт в другое место, другим названием
пересохранил проэкт, потом формы при сохрании формы меняется название файла, но не меняется название юнита внутри и в проэкте.
2, в настройках добавил путь к каталогу с юнитами, добавил юнит из того каталога при компеляции выводится сообщение что ошибка в юните из той папки , но по клику на сообщение файл не открывается и даже если файл открыт то не переходит в место ошибки.
ЗЫ переход из дельфи в лазарус проще чем из лазаруса в МСЕ
Добавлено: 23.09.2007 13:10:10
Attid
Кстати, во избежание тупейшего дублирования памяти, грид в SQLDB просто отбражает текущее "окно" ( в кол-во строк грида ), накладываемое на опять-таки "окно" ( размером "packet records") записей, выбранных из БД. Поэтому считать суммы по данным самого грида ( а не связанного запроса к БД ) - может позволить только неграмотно сделанный грид, 1) вытащивший из БД все записи и 2) продублировавший эти данные во внутренних структурах.
кстати. при локально режиме МСЕ поднимает все записи из файла.
соответственно у меня под линухом прога загружается полчаса =)
под вендой много записей пока не сувал.
Добавлено: 23.09.2007 14:07:53
debi12345
при локально режиме МСЕ поднимает все записи из файла.
На то он и локальный режим. Очень уж он вам (да и мне) понравился

Даже блобы поднимает.
Но ведь мы уже знаем, что к чему - птичка или SQlite3 ( с их индексами, B-TREE и прочими извратами ), если нужна скорость, правда ?
Добавлено: 23.09.2007 15:14:52
Attid
но для больших обьемов к сожелению не годится =(
а жаль.
аналог в МСЕ ?
Добавлено: 23.09.2007 22:26:06
debi12345
Self.WindowState := wsMaximized;
В нужном событии при создании формы или в любой момент вызвать :
{form.}window.windowpos:= wp_maximized;
или
{form.}container.window.windowpos:= wp_maximized;
PS:
Соберите комплект доки прилагаемой к MSE* утиллитой - сразу все найдете.
Добавлено: 24.09.2007 10:05:08
Attid
Соберите комплект доки прилагаемой к MSE* утиллитой - сразу все найдете.
это тот что со скрипта собирает из исходников хтмлки ? если да то мне он сильно не помогает.
Вопрос на засыпку, а отчеты в МСЕ можно ли хранить отдельно ?
чтоб для переноса черточки не перекомпилировать приложение ?
Добавлено: 24.09.2007 10:58:18
debi12345
В принципе, когда появятся PackageLibraries - тогда и "отдельно хранить" будет. Мартин принципиально отказывается городить хотфикс огород с псевдо-пакетами "а-ля Лазарус" ( которые один фиг в программу собираются ) - хотя мы ему потихоньку капаем на мозги "никто, кроме тебя, эти пэкаджи не сделает".
Тут другой прикол уже на подходе, и возможно Мартин хочет одним выстрелом нескольких зайцев замочить - межпроцессовое взаимодействие и обмен событиями через пайпы ( делается для запуска загружаемых форм ). Тогда можно будет вместо пэкаджа (ДЛЛ) подгружать и работать с исполняемым файлом. Нечто типа DCOM.
Шаблоны MSEgui-отчетов ( те же формы ) - как раз попадают в категорию "запуск загружаемых форм". Но это в будущем. А будущее в этом проекте долго ждать себя не заставляет.
Добавлено: 24.09.2007 14:09:38
Attid
это плохо, это очень плохо.
PackageLibraries не нужен для хранения отчетов отдельно.
пойду с мартином пообщаюсь .
а это у меня так или вообще если над МСЕ приложение в венде помохать мышей то CPU 50%
GIMP CPU 15%
lazarus CPU 5%
firefox 17%
IE 11 %
проверь у себя есть также давай жаловаться Мартину =)
Добавлено: 24.09.2007 16:53:49
debi12345
проверь у себя есть также давай жаловаться Мартину =)
============
Под Вынь-ХП ( классическая тема, все визуальные эффекты вырублены) больше 7% на проекте ROZNITSA не получается. Хоть тресни. Под Линуксом загрузка гораздо больше - для всех программ.
А вообще - вопрос вставал. Снижали. Если честно, мнение Мартина - даже если происходит, то фигня все это. Главное - чтобы в айдле не жрало ничего.
PackageLibraries не нужен для хранения отчетов отдельно.
Вам нужны шаблоны-описатели отчетов, по которым строятся реальные отчеты ? Это совсем другая песня. Лично мне это не подходит - вследствие невозможности зашить сложную логику( пока ).
Добавлено: 24.09.2007 18:17:47
Attid
добрался до розницы пытаюсь открыть проэкт
Can not read formfile "/C:/projects/mse/roznitsa/dm.mfm".
Error reading qryOffices.IndexDefs: Error reading TIndexDef.Name: Unknown property: "Name"
таких еще несколько.
потом
Unresolved references in trefsfo to dmmo.
Do you wish to search the formfile?
Can not read formfile "/C:/projects/mse/roznitsa/refs.mfm".
Unresolved reference to dmmo.
ну и приложение падает =(
Код: Выделить всё
---------------------------
Error
---------------------------
An unhandled exception occurred at $0056B3DF :
EReadError : Error reading qryOffices.IndexDefs: Error reading TIndexDef.Name: Unknown property: "Name"
$0056B3DF
$0056E883
$00568467
$00573384
$0056E909
$00568467
$0043AFC7 TMSECOMPONENT__READSTATE, line 2746 of C:/lazarus/msegui/lib/common/kernel/mseclasses.pas
$005690DD
$00438594 LOADMODULE, line 1277 of C:/lazarus/msegui/lib/common/kernel/mseclasses.pas
$00438813 DOLOAD, line 1317 of C:/lazarus/msegui/lib/common/kernel/mseclasses.pas
$004386A1 INITMSECOMPONENT, line 1332 of C:/lazarus/msegui/lib/common/kernel/mseclasses.pas
$00438883 LOADMSEMODULE, line 1443 of C:/lazarus/msegui/lib/common/kernel/mseclasses.pas
$0045F85C TMSEDATAMODULE__CREATE, line 90 of C:/lazarus/msegui/lib/common/kernel/msedatamodules.pas
$0045F765 TMSEDATAMODULE__CREATE, line 80 of C:/lazarus/msegui/lib/common/kernel/msedatamodules.pas
$004382C3 CREATEMODULE, line 1187 of C:/lazarus/msegui/lib/common/kernel/mseclasses.pas
$
---------------------------
OK
---------------------------
Добавлено: 24.09.2007 20:17:07
debi12345
Чтобы не было приколов - FPC 2.2 ( у Вас это вижу ), если еще проблемы - пересобрать FPC с патчем ( из MSE* SVN ). Потерянные имена - как раз из этой оперы.
Спокойнее будет не токль в плане сборки MSE*, но и вообще.