Astra30 wrote:

Уважаемый, DriveSoft.  Попробовал сделать как в приведённом Вами примере, но данные в отчёт не передаются, в чём я ошибся?  https://yadi.sk/d/w81y-oIs3KveEK

Добрый день.
Подскажите в чем проблема - попробую помочь.
Если проект в версии не выше 1.46 - можете выслать на почту.
ces@rciugra.ru

2

(35 replies, posted in Russian)

tkuzmin wrote:

Дмитрий, добрый день!
Вопрос все еще очень актуален

Да мне бы тоже хотелось бы посмотреть на сам принцип построения данного алгоритма

непосредственно с данной проблемой я разобрался но не понял как данная проблема образовалась.
выложить проект без самой базы нет смысла.
а с базой много места.
если коротко то на дату -25.10 в числовом поле стояло значение
на вторую дату - 26.10 в данном поле убрали значение (возможно оставили пробел) но визуально я вроде его не заметил.
По крайней мере когда при повторном "создании" проблемы проставил нуль в значении (который потом при сохранении записи преобразуется в значение NULL (иначе алгоритм расчета нарушался) отчет работал номрально.

При удалении значении с сохранением пробела в значении - появлялась такая же ошибка которую описал изначально.

Но повторюсь - при визуальном просмотре вроде пробел отсутствовал когда мне указали на ошибку и в другеи форматы кроме экселя выгружал нормально (даже в ворд выгружал специально и проверял на наличие символов используя функцию "отобразить все знаки").
фиг знает что такое

Выходит ошибка при формировании экселевского файла.
В других форматах все нормально

5

(9 replies, posted in Russian)

тогда

На кнопку Button1 навесить процедуру
procedure Form1_Button1_OnClick
begin
Form1.DateTimePicker1.OpenCalendar;
end;

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

7

(9 replies, posted in Russian)

По умолчанию на форме DateTimePicker установить невидимым.
Form1.DateTimePicker1.Visible := False;

На кнопку Button1 навесить процедуру
procedure Form1_Button1_OnClick
begin
Form1.DateTimePicker1.Visible := True;
end;

8

(2 replies, posted in Russian)

я бы мог помочь но на днях улетаю отдыхать на море. буду только 24.07. если к этому времени вопрос будет еще актуальный - напишите мне на почту echuchkin@mail.ru

9

(4 replies, posted in Russian)

а почем нельзя?
можно ведь использовать 1 компонент который работает  в натуральное время
и 2 компонент - рабочий  с лагом в 9 часов от реального

10

(18 replies, posted in Russian)

если  нужен период то просто ставите 2 условия
where data1>=strftime('%d.%m.%Y',{DateTimePicker1}) and  data1=<strftime('%d.%m.%Y',{DateTimePicker2})

11

(18 replies, posted in Russian)

У Вас 2 даты
по мне так я бы написал их так:
SELECT
record_count,
strftime('%d.%m.%Y',data) as data1,
strftime('%d.%m.%Y',data vipolneniya) as data2, //кстати поле "data vipolneniya" вроде имеет пробел
kvartira,
fio,
kontakt,
soderjanie,
primichanie
adres.adres,
tip.tip,
ispolnitel.ispolnitel,
FROM baza
LEFT OUTER JOIN adres ON adres.id=baza.id_adres
LEFT OUTER JOIN tip ON tip.id=baza.id_tip
LEFT OUTER JOIN ispolnitel ON ispolnitel.id=baza.id_ispolnitel

если на форме есть выбор даты то дописываете

where data1=strftime('%d.%m.%Y',{DateTimePicker1}) или
where data2=strftime('%d.%m.%Y',{DateTimePicker1}) в зависимости от того по какой даты идет выборка

12

(18 replies, posted in Russian)

ну это к Дмитрию вопросы.

13

(18 replies, posted in Russian)

2.5 не откроется у меня.
чтобы сюда выкладываь рекомендуется удалять экзешный файл

14

(18 replies, posted in Russian)

у меня версия 1.44 так что смогу помочь только в этой версии. прикрепляйте

15

(18 replies, posted in Russian)

могу

16

(18 replies, posted in Russian)

fdimon2006 wrote:

Спасибо. подскажите еще пожалуйста. не могу понять в чем проблема. при формировании Отчета выдает ошибку

ну тут все просто. в отчете есть поля которые отсутствуют в SQL запросе.
это бывает когда после составления отчета был изменен sql запрос
в sql запросе отсутствуют поля:
диспетчер
тип
вид.

17

(3 replies, posted in Russian)

К сожалению это то от чего я отходил изначально.
Вы предложили вместо пустого места использовать нули.
Я же НУЛИ изначально удалял так как они влияют на расчет MIN и AVG.
Можно наверно вернуть НУЛИ в данные но вот построение всей отчетности будет требовать конкретного пересмотра.
В самом то SQL запросе это вроде не составит труда используя SUM и COUNT *** FROM *** WHERE *** >0
Но вот поставить этот метод в расчете средней по группе в FastReport - тут думалки у меня пока не хватает - там как то ограничен синтаксис при расчете агрегатных функций.
Но все равно спасибо - буду думать.

18

(3 replies, posted in Russian)

спасибо попробую

19

(3 replies, posted in Russian)

Вот уже месяц бьюсь и не могу понять причину некоректного отображения данных.
Вся работа с программой базируется на 1 таблице kash.
в ней 16 полей - вещественное число иа пара вспомогательных (дата и ссылка на другую таблицу).

Простейшая выборка в отчет
select
*
from kash

(реализовано в - Отчет по АЗС на дату (Excel))

отражает данные по разному - где разделитем точка а где разделитем запятая.
используя
UPDATE kash SET Z_A80 = REPLACE(Z_A80, ',', '.') - (применительно ко всем полям)
или UPDATE kash SET Z_A80 = REPLACE(Z_A80, '.', ',') - (применительно ко всем полям)
пытался привести данные к единообразию по всей таблице.
но результат все равно прежний. по каким то колонкам отражабтся данные с точнокй а по каким то полям с запятой.
вроде ничего страшного когда выгружаю в ексель, но вот при работе с другими отчетами это вылазит боком.
агрегатные функции типа AVG в FastReport упорно не дают  формировать отчет где разделитем отражаются точки в первом отчете.

Помогите разобраться почему так отражаются данные

20

(11 replies, posted in Russian)

хотя нет. наврал. прочитал немного внимательней требования. нужно видеть проект - но в принципе направление все равно то же самое только с корректировкой немного

21

(11 replies, posted in Russian)

Я думаю задача проста если у вас структура базы еще не завершена.
создаете еще 1 таблицу (newtable) где всего параметр - дата (date).
на форму 2 (открытие записи из грида) навешиваете скрипт procedure form2_OnShow
куда вносите всего 1 строку
SQLExecute('insert into newtable (date) VALUES (nau));


на главной форме создаете несколько надписей Label1, Label2 и т.д

на закрытие  формы показа записи навешиваете скрипт подсчета количества записей в таблице по условиям (за день, месяц, год)
типа
form1.Label1.Caption :=SQLExecute('SELECT count(id) FROM newtable where date=' ____';')

ну и все
синтаксис как и раньше с косяками но принцип должен быть понятен.
Если будут траблы с синтаксисом скриптов - пишите. Хотя я всегда пытаюбсь сперва сам решить а потом уже беспокоить форумчан smile

22

(11 replies, posted in Russian)

конечно синтаксис немного нарушен но принцип то понятен?

23

(11 replies, posted in Russian)

ну так Вы же условия задаете компонентами на форме (дата, комбобоксы, едиты и т.д).
примените их условия в SQL запросе

к примеру у вас грид формирует поиск из таблицыTable1
при этом используется параметр дата из компонента DateTimePicker1 на форме

вот и задайте sql запрос
select
*
from Table1
where Table1.date = {DateTimePicker1}

результат в отчете будет аналогичен результату в гриде

если есть другие параметры отбора в гриде просто добавляете эти параметры в условие WHERE типа
where Table1.date = {DateTimePicker1} and Table1.id_table2 = {ComboBox1.dbItemID}

24

(11 replies, posted in Russian)

надо скрипт писать
сперва задаете переменную по общей длине таблицы типа
var
table: integer

потом создате процедуру на отрытии той формы где табля типа
procedure main_OnShow
begin
table:= main.TableGrid1.Width;
end;

туда же вписываете размеры колонок типа
main.TableGrid1.Columns[0].Width := table/100*30;
main.TableGrid1.Columns[1].Width := table/100*30;
main.TableGrid1.Columns[2].Width := table/100*40;

чтобы в итоге получилось:
procedure main_OnShow
begin
table:= main.TableGrid1.Width;
main.TableGrid1.Columns[0].Width := table/100*30;
main.TableGrid1.Columns[1].Width := table/100*30;
main.TableGrid1.Columns[2].Width := table/100*40;
end;


не уверен конечно но думается что должно получиться.
можно конечно проще пойти если у вас размер формы не зависит от размера экрана - статитеская то есть.
тогда проще - без всяких переменных задаете размер колонок
к примеру длина таблицы 1200 пикселей
main.TableGrid1.Columns[0].Width := 300;
main.TableGrid1.Columns[1].Width := 500;
main.TableGrid1.Columns[2].Width := 400;

25

(11 replies, posted in Russian)

Не совсем конечно понятно для чего убирать горизонтальный. в опциях таблицы вроде нет этого но можно задать размер колонок в % отношении от размера грида. при сумме % = 100% горизонтальный скрол уберется сам