Вверх ↑
Ответов: 16884
Рейтинг: 1239
#1: 2012-06-27 21:42:52 ЛС | профиль | цитата
faramir777 писал(а):
большую ее часть можно выкинуть
Даже из твоих часов
clock_n.png
в % получается 25%
Да.
1. Калькулятор можно сделать, используя возможности SQLite (без компонент математики)
2. Для создания таблиц используй команду с условием:
CREATE TABLE IF NOT EXISTS base (№, Дата DATE,Сумма, Категория, Описание TEXT);
CREATE TABLE IF NOT EXISTS dohod (№, Дата DATE,Сумма, Категория, Описание TEXT);
сработает, как защита.
------------ Дoбавленo в 21.42:
Add(ChildForm,6567049,623,56)
{
}
BEGIN_SDK
  Add(EditMulti,1477762,49,21)
  {
   WorkCount=1
   Width=412
   Height=305
   link(doWork1,1812192:doVisible,[(123,27)(123,62)])
  }
  Add(MainForm,1812192,189,28)
  {
   Left=35
   Top=105
   Width=425
   Height=77
   Visible=1
   Caption="Создание резервной копии базы данных"
   BorderStyle=1
   Point(doVisible)
  }
  Add(FileTools,5565160,189,266)
  {
   link(onEnd,12449883:doMessage,[])
   link(FileName,2516802:FString,[(195,244)(160,244)])
   link(NewFileName,6135487:FString,[])
  }
  Add(Button,5558362,70,252)
  {
   Left=10
   Top=10
   Width=205
   Caption="Создать резервную копию"
   link(onClick,2233415:doEvent1,[])
  }
  Add(FormatStr,6135487,196,189)
  {
   Mask="Rezerv\%1_DB.db"
   Point(FString)
   link(Str1,5514965:Result,[])
  }
  Add(DatePicker,11849315,189,77)
  {
   Left=245
   Top=10
   Width=155
   Height=21
   Point(CurrentDateTime)
   Point(DateTime)
   link(onChange,15480530:doWork1,[(234,83)(234,119)(170,119)])
  }
  Add(DateConvertor,5514965,196,133)
  {
   Mode=9
   Format="yyyy-MM-dd"
   Point(Data)
   Point(Result)
   link(Data,11849315:DateTime,[])
  }
  Add(Timer,15622425,371,49)
  {
   Interval=10
   AutoStop=1
   link(onTimer,4410535:doEvent1,[])
  }
  Add(EventFromData,10736337,406,98)
  {
  }
  Add(EventFromData,1317161,406,147)
  {
  }
  Add(Hub,4410535,420,49)
  {
   OutCount=3
  }
  Add(Message,12449883,266,266)
  {
   Message="Резервная копия базы данных\r\n успешно создана."
   Caption="Успех"
  }
  Add(FormatStr,2516802,154,203)
  {
   Mask="DB.db"
   Point(FString)
  }
  Add(EventFromData,16416642,406,196)
  {
  }
  Add(Hub,2233415,112,252)
  {
   OutCount=4
   link(onEvent1,15480530:doWork2,[(154,258)(154,139)])
   link(onEvent2,6135487:doString,[(139,265)(139,195)])
   link(onEvent3,2516802:doString,[(147,272)(147,209)])
   link(onEvent4,5565160:doCopy,[])
  }
  Add(HubEx,15480530,166,133)
  {
   link(onEvent,5514965:doConvert,[])
  }
END_SDK
А для таких случаев
SELECT SUM(Сумма)FROM base WHERE Дата >='%1' AND Дата <= '%2' AND Категория = 'Продукты'
WHERE Дата >='%1' AND Дата <= '%2' есть волшебное слово BETWEEN
А вот так примерно, одним запросом, формируется вся справка за период по категориям:
SELECT Категория||': '||SUM(Сумма)FROM base WHERE Дата BETWEEN '%1' AND '%2' GROUP BY Категория;
Т.е. из используемых тобой ~170 компонент останется всего ~20.
А если-бы дату в таблицах хранил в формате INTEGER, то всего 4 компонента.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1clock_n.png [4.8KB] [1238]
Голосовали:Konst