Попытка номер N

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Сообщение Attid » 22.09.2007 19:37:05

зашел на форум как раз про sqlite узнать =)
но ком строка для рисования бд это все-таки грустно )

кста проэкт roznitsa, я что-то не нашел беглым взглядом, не в мсе не в конфе =/
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 22.09.2007 20:49:50

Attid писал(а):зашел на форум как раз про sqlite узнать =)
но ком строка для рисования бд это все-таки грустно )

Категорически не согласен. По другому фиг нормальную БД фиг слепишь. Гибкость и надежность SQL-cкриптов, запускаемых через фронтэнд из командной строки - ничем не заменишь. Уж поверьте !

кста проэкт roznitsa, я что-то не нашел беглым взглядом, не в мсе не в конфе =/

В "public.binaries" на том же ньюс-сервере. Берите последний по дате. Хотя это еще не финальная версия. Но весь функционал на месте.

ПС:

Нюансы SQLITE3 в МСЕ:
- есть соглашения о соствествии типов при "CREATE TABLE .." и SQLDB-типов полей, при их выполнении типы полей определяются корректно и не требуют подстройки
- типы агрегатных полей, констант и прочего ( не входящего в "CREATE TABLE" - то есть не выполняеющего соглашение выше ) не определется корректно, поэтому MSEgui правильный тип можно подправить вручную - в FieldDefs (чего в дельфях/FPC нет ). Такова история полного приручения SQLITE3 !

То есть использование "CREATE TABLE" ( а не сторонних приблуд ) - важный момент.
Кстати, одна приблуда часто не может открыть БД-файл, созданный/модифицированный другой приблудой. Наступал на эти грабли...
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 22.09.2007 21:27:40

Код: Выделить всё
Кстати, одна приблуда часто не может открыть БД-файл, созданный/модифицированный другой приблудой. Наступал на эти грабли


ну это может тольок говорить о неполноцености БД. но речь не об этом.

есть вопрос как к знатоку МСЕ, который решит перевод еще проги на мсе.

могу ли я в ДБгрид добавлять в конце запроса строчку для отображения.
например запрос возрощает
Код: Выделить всё
ботинки 2 35
телефон 1 45
мыша  15 10


а вывести клиенту
Код: Выделить всё
ботинки  2  35
телефон 1   45
мыша    15  10
всего    18  90


как это сделать запросом или в отчете я знаю,
интересен вариант именно в гриде наименьшеми потерями.
на вскидку могу предположить использование локального буфера, но может можно проще
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 22.09.2007 22:28:10

Я тоже прошел период заблуждений типа поиска "волшебного грида, умеющего все делать". Слава Всевышнему, Мартин вправил мозги.

Как сделано в 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) продублировавший эти данные во внутренних структурах.

Генератор очетов имеет фишку авто-суммирования по заданному полю БД. Включается специальной опцией.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 23.09.2007 00:33:25

Я тоже прошел период заблуждений типа поиска "волшебного грида, умеющего все делать". Слава Всевышнему, Мартин вправил мозги.

ну мне много не надо функционала, просто поддерживаю в 2х интерфейсах:
грид в приложении и табличка в вебморде(пхп).
мне только сортировку и подпись внизу, записей обычно не больше 30.
хотя фильтрация тоже было-бы прикольно +)

Здесь используется метод "обсчитывать весь датасет", а не грид.
это и имелось ввиду. спасибо попробую.


есть пару замечаний по МСЕ
1, решил пересохранить проэкт в другое место, другим названием
пересохранил проэкт, потом формы при сохрании формы меняется название файла, но не меняется название юнита внутри и в проэкте.

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

ЗЫ переход из дельфи в лазарус проще чем из лазаруса в МСЕ
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Attid » 23.09.2007 13:10:10

Кстати, во избежание тупейшего дублирования памяти, грид в SQLDB просто отбражает текущее "окно" ( в кол-во строк грида ), накладываемое на опять-таки "окно" ( размером "packet records") записей, выбранных из БД. Поэтому считать суммы по данным самого грида ( а не связанного запроса к БД ) - может позволить только неграмотно сделанный грид, 1) вытащивший из БД все записи и 2) продублировавший эти данные во внутренних структурах.


кстати. при локально режиме МСЕ поднимает все записи из файла.
соответственно у меня под линухом прога загружается полчаса =)

под вендой много записей пока не сувал.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 23.09.2007 14:07:53

при локально режиме МСЕ поднимает все записи из файла.

На то он и локальный режим. Очень уж он вам (да и мне) понравился :) Даже блобы поднимает.
Но ведь мы уже знаем, что к чему - птичка или SQlite3 ( с их индексами, B-TREE и прочими извратами ), если нужна скорость, правда ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 23.09.2007 15:14:52

но для больших обьемов к сожелению не годится =(
а жаль.


Код: Выделить всё
  Self.WindowState := wsMaximized;

аналог в МСЕ ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 23.09.2007 22:26:06

Self.WindowState := wsMaximized;

В нужном событии при создании формы или в любой момент вызвать :

{form.}window.windowpos:= wp_maximized;

или

{form.}container.window.windowpos:= wp_maximized;

PS:

Соберите комплект доки прилагаемой к MSE* утиллитой - сразу все найдете.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 24.09.2007 10:05:08

Соберите комплект доки прилагаемой к MSE* утиллитой - сразу все найдете.


это тот что со скрипта собирает из исходников хтмлки ? если да то мне он сильно не помогает.

Вопрос на засыпку, а отчеты в МСЕ можно ли хранить отдельно ?
чтоб для переноса черточки не перекомпилировать приложение ?
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 24.09.2007 10:58:18

В принципе, когда появятся PackageLibraries - тогда и "отдельно хранить" будет. Мартин принципиально отказывается городить хотфикс огород с псевдо-пакетами "а-ля Лазарус" ( которые один фиг в программу собираются ) - хотя мы ему потихоньку капаем на мозги "никто, кроме тебя, эти пэкаджи не сделает".
Тут другой прикол уже на подходе, и возможно Мартин хочет одним выстрелом нескольких зайцев замочить - межпроцессовое взаимодействие и обмен событиями через пайпы ( делается для запуска загружаемых форм ). Тогда можно будет вместо пэкаджа (ДЛЛ) подгружать и работать с исполняемым файлом. Нечто типа DCOM.

Шаблоны MSEgui-отчетов ( те же формы ) - как раз попадают в категорию "запуск загружаемых форм". Но это в будущем. А будущее в этом проекте долго ждать себя не заставляет.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 24.09.2007 14:09:38

это плохо, это очень плохо.
PackageLibraries не нужен для хранения отчетов отдельно.
пойду с мартином пообщаюсь .


а это у меня так или вообще если над МСЕ приложение в венде помохать мышей то CPU 50%

GIMP CPU 15%

lazarus CPU 5%

firefox 17%

IE 11 %

проверь у себя есть также давай жаловаться Мартину =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 24.09.2007 16:53:49

проверь у себя есть также давай жаловаться Мартину =)
============
Под Вынь-ХП ( классическая тема, все визуальные эффекты вырублены) больше 7% на проекте ROZNITSA не получается. Хоть тресни. Под Линуксом загрузка гораздо больше - для всех программ.

А вообще - вопрос вставал. Снижали. Если честно, мнение Мартина - даже если происходит, то фигня все это. Главное - чтобы в айдле не жрало ничего.

PackageLibraries не нужен для хранения отчетов отдельно.

Вам нужны шаблоны-описатели отчетов, по которым строятся реальные отчеты ? Это совсем другая песня. Лично мне это не подходит - вследствие невозможности зашить сложную логику( пока ).
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Attid » 24.09.2007 18:17:47

добрался до розницы пытаюсь открыть проэкт

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   
---------------------------
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение debi12345 » 24.09.2007 20:17:07

Чтобы не было приколов - FPC 2.2 ( у Вас это вижу ), если еще проблемы - пересобрать FPC с патчем ( из MSE* SVN ). Потерянные имена - как раз из этой оперы.
Спокойнее будет не токль в плане сборки MSE*, но и вообще.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Пред.След.

Вернуться в MSEide + MSEgui

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Рейтинг@Mail.ru