powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вставка произвольной строки в выборку SQL (Firebird)
10 сообщений из 10, страница 1 из 1
Вставка произвольной строки в выборку SQL (Firebird)
    #39133836
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, пните в нужную сторону пожалуйста, самому ничего красивого не придумать.

Задача:
Вставить в выборку SQL (СУБД Firebird) произвольную строку.

Пример из задачи:

12:00-12:30 Подъем - из бд
Свободное время (30 мин.) - произвольная строка высчитана из пред. и след. в случае если есть окно во времени.
13:00-14:00 Завтрак - из бд

Желательно это сделать SQL, т.к. работать будет быстро. Или если есть другие варианты, у меня лично ничего красивого не вышло. Использую Delphi + DBGrid + Fib. С добавлением записи в DBGrid или в DataSet ничего не придумал. С использованием вместо DBGrid обычного грида или ListView - ужасно некрасиво перерисовывается по таймеру (раз в 3 секунды).
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39133903
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsitesС использованием вместо DBGrid обычного грида или ListView - ужасно
некрасиво перерисовывается по таймеру (раз в 3 секунды).
А ты во-первых, по таймеру-то не перерисовывай. Только когда необходимо.
А во-вторых, старое содержимое не стирай, перерисовывай только изменившиеся ячейки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39133921
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites,

поскольку кроме указанных двух строк в БД (в этом интервале времени) нет, мне кажется, что задача сводится к втыканию "случайной строки" в кэш датасета между указанными строками. А значит, к SQL не имеет отношения. Иначе я не очень понимаю, как можно "взять" "случайную" строку из БД, которой там нет.
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39134019
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovА ты во-первых, по таймеру-то не перерисовывай. Только когда необходимо.
А во-вторых, старое содержимое не стирай, перерисовывай только изменившиеся ячейки.


Спасибо, учту!

По поводу SQL запроса, думал что можно как-то так хитрО:

IF freetime BETWEEN Row.Before AND Row.Afger THEN INSERT VITRUAL RECORD SET VALUES ('HelloWorld!', null) :)
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39134131
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites,

ну и фантазии.
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39134152
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsites, крайне рекомендую прочесть документацию на предмет:

1.Функции работы с датой и временем2.
Код: sql
1.
CREATE OR ALTER PROCEDURE <sp_name>(...)

3.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
FOR
    SELECT ...
      FROM ...
      INTO: ...
  DO
    BEGIN
      .
      .
      SUSPEND
    END



С датой и временем можно работать как с обычной скалярной величиной, где единицей являются сутки. Одна секунда ~0.00069444 суток.
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39134216
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offsitesIF freetime BETWEEN Row.Before AND Row.Afger THEN INSERT VITRUAL RECORD SET VALUES ('HelloWorld!', null) :)
Это SUSPEND внутри хранимой процедуры.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table test_data(id int, text varchar(50));
insert into test_data values(1, '12:00-12:30 Подъем - из бд');
insert into test_data values(2, '13:00-14:00 Завтрак - из бд');

create procedure test_proc
returns(text varchar(50))
as
begin
  for select text from test_data into :text
  do
  begin
    suspend;
    -- if (есть записи после/до)
      text = 'Свободное время (30 мин.)';
      suspend;
  end
end

select * from test_proc


Если очень сильно захотеть, то можно и одним запросом.
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39134498
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
afgm,

За идею спасибо, похоже на то что может выйти. Буду пробовать.
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39134526
DBConstructor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DBConstructorС датой и временем можно работать как с обычной скалярной величиной, где единицей являются сутки. Одна секунда ~0.00069444 суток.
Прошу прощения за опечатку. Конечно же имелась в виду одна минута (1/(24*60)) ~0.00069444
...
Рейтинг: 0 / 0
Вставка произвольной строки в выборку SQL (Firebird)
    #39141349
offsites
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
afgm,

Да, получилось, спасибо!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вставка произвольной строки в выборку SQL (Firebird)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]