В общем-то, благодаря поддержке разобрался во все, в чем хотел. Остались вопросы с отчетам, но нашел инструкцию на русском. И еще один вопрос:
Как открыть редактор отчетов скриптом и можно ли сразу определенный файл в редакторе открыть?
101 2016-04-01 13:26:59
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
102 2016-03-30 05:17:39
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
И еще замечание и вопрос по сообщениям.
Заметил, что если текст сообщения заканчивается на "я", дальше все смотрится как код (вложение).
И можно ли переименовать само окно? У меня задача сделать окошко подтверждения удаления записи. Действием я запись удалить не могу, т.к. фактически у меня просто удаляются значения из некоторых полей, а подтверждения хочется.
103 2016-03-29 16:45:16
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Знания - сила! Очередное спасибо и с новым вопросом:
Не удается с помощью MessageDlg продолжить или отменить. Две кнопки не дружатся. Пробовал так:
MessageDlg('бла-бла-бла',mtConfirmation,mbOKCancel,0);
и
MessageDlg('бла-бла-бла',mtConfirmation,[mbOK, mbCancel],0);
не хотит. И если я просто в чем-то накосорезил подскажите, правильны ли дальнейшие действия вида:
if buttonSelected = mrOK
104 2016-03-28 13:36:43
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Так работает, спасибо!
Традиционно, еще вопрос. ))
Пытаюсь выкрасить в таблице строки, дата в которых ближе, чем 30 дней от нынешней. У меня сравнивается только число, а не дата и выкрашиваются, соответственно, даты, число в которых меньше. Я так полагаю, это происходит из-за того, что в гриде все данные - строка, не смотря на формат поля в таблице? Если так, то каким способом мнеб даты сравнить? Можно логику, не код, чтоб время не тратить.
procedure frmFind_TableGrid1_OnChange (Sender: string);
var
i,iI,cR,cC: integer;
begin
cR := frmFind.TableGrid1.RowCount -1;
cC := frmFind.TableGrid1.Columns.Count -1;
for i := 0 to cR do
begin
if frmFind.TableGrid1.Cells[6,i] < FormatDateTime('ddddd', Now+30) then
begin
for iI := 0 to cC do frmFind.TableGrid1.Cell[iI,i].Color := clYellow
end;
end;
end;
105 2016-03-27 06:36:31
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Спасибо за подробные ответы!
Еще вопрос по фильтру в таблице возник. Не удается вывести строки, в которых определенное поле пустое.
Фильтр вида
request.user_r <> ''
правильно выводит только строки с непустыми значениями, а вот аналогично для пустых
request.user_r = ''
не удается.
И в запросе тоже не удается выбрать строки с пустыми значениями. Я полагаю, как-то так должно быть?
SQLExecute('SELECT count(id) FROM request WHERE user_r = ''') > 0
106 2016-03-22 16:49:51
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Еще вопрос.
В форме, при сохранении выполняется простой математ. расчет (на клик). И хотелось бы при определенных условиях (в частности, результат < 0) не сохранять запись. Сейчас у меня получается только вывести сообщение о том, что так делать нельзя )), но запись сохраняется. Есть какой-то способ не сохранять запись? Если только способом сохранения записи скриптом, то нельзя ли пример запроса с одним, двумя полями на добавление записи с данными из текстбокса, комбобокса?
107 2016-03-21 05:56:12
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Правильно будет в запрос передавать sqlValue
Спасибо! Не внимательно мануал смотрел.
Но если вам скучно то можно написать и так :
Спасибо, мне не достаточно скучно. ))
108 2016-03-20 06:47:56
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
То ли лыжи не едут, то ли я... как известно.
Пытаюсь кнопкой проверить существует ли запись, и если существует присвоить текстовому полю значение. Все удается только в случае, когда значение цифровое и обязательно начинается не с нуля. Если с нуля, нуль игнорируется, если буквы присутствуют - ошибка в запросе возникает. Не подскажете от куда у меня руки растут? ))
109 2016-03-18 05:27:36
Re: Форма входа для зарегистрированных пользователей. (3 replies, posted in Russian)
Полностью работу нет - там еще черт ногу сломит. ))
Но логика такая: при авторизации мы запоминаем группу пользователя:
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True;
Далее в procedure Form1_OnShow - не показываем ему что-то, если он не принадлежит какой-то группе, например:
if isAdmin = False then Form1.Button1.Visible := False;
Так же и при создании меню, просто не выводить определенные пункты для различных групп.
110 2016-03-18 04:04:39
Re: Форма входа для зарегистрированных пользователей. (3 replies, posted in Russian)
А просто не выводить кнопки вызова форм и пункты меню для определенных групп не достаточно? Я этим ограничился.
111 2016-03-16 03:41:15
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Извиняюсь за задержку с ответом, был в отпуске, вопрос все еще актуален для вас?
Здравствуйте!
Ничего страшного. Спасибо, разобрался.
112 2016-03-11 19:41:35
Re: Загрузка данных по фильмам из таблицы EXEL (1 replies, posted in Russian)
113 2016-03-09 07:22:16
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
И буду очень признателен за информацию о том, где почитать как правильно передавать переменные разных типов в запрос SQLite. Запутался совсем в ошибках. По примерам не догоняю, к сожалению.
114 2016-03-06 11:23:06
Re: [Решено] Фильтр в TableGrid (6 replies, posted in Russian)
А переменную в фильтр впихать никак? )
115 2016-03-05 06:31:25
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
До калькулятора пока мозгов не хватает. Тренируюсь на кошках. Захотел выкрасить ячейки в гриде, где запись моложе одного часа. Ошибок нет, результата нет (выкрашивает все). Не приходилось такое делать?
procedure frmFind_TableGrid1_OnChange (Sender: string);
var
i,c: integer;
begin
c := frmFind.TableGrid1.RowCount -1;
for i := 0 to c do
begin
if SQLExecute('SELECT * FROM events WHERE date_ins < datetime("now","-1 hour")') then frmFind.TableGrid1.Cell[2,i].Color := clYellow
end;
end;
Делал по аналогии с чисткой логов. Там корректно работает как так:
SQLExecute('DELETE FROM logs WHERE date < date("now","-60 day")');
так и эдак:
SQLExecute('DELETE FROM logs WHERE date < datetime("now","-1 hour")');
116 2016-02-29 17:01:19
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
какую СУБД вы используете?
Lite.
Спасибо! Вроде, все как надо. Буду учиться стряпать калькулятор.
117 2016-02-29 10:17:22
Re: Ряд вопросов от новичка. (30 replies, posted in Russian)
Спасибо!
Получается, при фильтре events.date >= date('now') записи с датой предыдущей не будут отображаться даже когда я захочу через поиск их найти. Во всяком случае, у меня не получается.
А варианта с датой вчерашней нет?
С логом получилось. Только вот битый час не могу понять как чистить таблицу и хранить только последние 60 дней. Планировал при закрытие удалять все записи старше 60 дней запросом. Т.е. в
procedure frmFind_OnClose
добавить
SQLExecute('DELETE FROM logs WHERE date = ???-60');
В сети тем много, но рабочего варианта я не подобрал. ) Или вообще так делать нельзя?
Еще немного побился и с этим вариантом ошибка больше не вываливается, но работать-то будет? )
DELETE FROM logs WHERE date = CURRENT_DATE-60
118 2016-02-28 10:27:09
Topic: Ряд вопросов от новичка. (30 replies, posted in Russian)
Здравствуйте!
Знакомлюсь с программой понемногу. Вопросов уйма. Делаю пока в большинстве своем копипастом из выложенных здесь работ с мизерными изменениями. Буду благодарен за помощь, и, в идеале, не доделкой/переделкой за меня, а с комментариями, хотя бы кратенькими как и что. Или примерами заготовок/работ для "домашней работы".
Общие вопросы возникшие:
С какой целью чек "таблица является словарем"? Что меняется?
Зачем в сортировке в гриде ORDER BY если и так столбец выбрать можно. Как-то "шире" выбирать позволяет?
Поддержка целостности при связах означает, что при удаление, допустим, пользователя, удаляться все записи с "его присутствием"?
Можно ли в DateTimePicker убрать секунды?
Конкретно по моему барану:
Буду благодарен за анализ скрипта. Может я лишнего чего накопипастил. Ошибки-то не прыгают, но все же.
Переделывал несколько раз, почему-то в форме авторизации по Enter перестал входить. Кликать мышой надо или через Tab. Где испортил?
Не для админа скрыть нужно две кнопки. Сейчас сделал, уверен, неправильно двумя строками:
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else frmFind.btDir.Visible:=False;
if SQLExecute ('SELECT admin FROM users WHERE id = '+IntToStr(idUser)) = '1' then isAdmin := True else frmFind.btJour.Visible:=False;
ведь можно как-то "и" сказать? ) Мои попытки увенчались ошибкой.
Не смог сам разобраться, можно ли в фильтре автозаполнения грида сказать "от сегодняшней даты"? По логике должно быть как-то "events.date >= ?", нет?
Существует ли возможность ведения журнала действий пользователей: пользователь, дата, время, действие (вход, выход, добавил запись, редактировал, удалил)? В идеале, чтоб только последине 60 дней хранились записи. Чтоб сильно база не росла. Если существует, может какая-то готовая работа есть для "поковырять самостоятельно"?
Хотелось бы выполнять проверку на совпадения по саунам/времени, соответственно с оповещением о накладке. Может тоже работа какая есть с примером?
И самое для меня сложное. В конечном итоге хочется сделать калькулятор стоимости. Но, слишком много вводных, даже не знаю как таблицу организовать. Цена зависит от: сауны, времени (9-18, 18-22, 22-9), дня (буд./вых.), кол-во человек (до 6 - ставка, свыше за каджого человека по ... с 9 до 18 и по ... с 18 до 9), скидки. При создании записи мы получаем: часы, сауна, кол-во человек, буд./вых., скидка. С чего начать ковырять?