![]() |
|
![]() ![]() ![]() |
|
Akella |
|
||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Вот таблица, значение сортировки нужно записать в поле ID2, раньше в него записывалось рэндомное число и объявления сортировались каждый выход газеты тоже рэндомно, все были довольны, теперь хотят по-другому.
![]()
Добавлено через 1 минуту и 46 секунд
Не могу сообразить как это средствами хранимки (Firebird) сделать. Я и на дельфи-то до конца не могу сообразить. Осталось совсем чуть чуть, довести до ума этот участок, который выдёргивает записи из массива датасетов и записывает в них значения.
Добавлено через 2 минуты и 44 секунды
в PSQL Firebird`а нет возможности объявлять массив курсоров Добавлено через 3 минуты и 37 секунд Кофе закончился. ![]() /*ушёл просить кофе у бухгалтеров Добавлено через 5 минут и 20 секунд Наверное забыл про q[i].next ![]() |
||||||||
|
|||||||||
vladimir74 |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 28.11.2006 Репутация: 2 Всего: 3 |
так у тебя в таблице много рекламодателей?
а новый ID должен быть сквозным или отдельным для каждого?
ты тут присваеваешь id2 значение верхнего цикла т.е. для всех трех записей у тебя будет одно и тоже значение..., лучше ввести отдельную переменную .... Добавлено через 4 минуты и 42 секунды
ну тогда надо сразу делать масив квери... кажется Akella именно это и сделал. Я просто в начале прочитал массив и решил что хотят работать с простыми массивами... Добавлено через 8 минут и 53 секунды
ИМХО нужно просто счетчик сделать отдельной переменной... Добавлено через 9 минут и 42 секунды и это тоже.... --------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ. |
||||||||
|
|||||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
да, в таблице рекламодателей на данный момент пока что 124 записи, а это значит, что в таблице объявлений живут объявления от 124 разных рекламодателей Добавлено @ 11:36 точно... ты прав, надо подумать ещё Добавлено @ 11:41 Переделал на
тестирую, о результатах отпишусь Это сообщение отредактировал(а) Akella - 2.12.2008, 11:42 |
|||
|
||||
Deniz |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Akella, есть одна мысль, сейчас попробую объяснить.
Допустим есть запрос:
СчетчикСтарт:=0; Далее, находим минимальное кол-во объяв (обозначим М) и кол-во записей в запросе ( Cnt ) Далее цикл типа такого:
Аналогично со вторым, третьим и т.д. Когда прошли всех РД в запросе, делаем переоткрытие запроса, и продолжаем с начала. Значение СчетчикСтарт := max(Sort_ID) + 1; Делаем пока основной запрос возвращает данные. Надеюсь понятно объяснил. Это сообщение отредактировал(а) Deniz - 2.12.2008, 14:37 -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
будет всегда 0 записей, т.к. в базе не бывает записей, где id_sort может быть пустым, это регулируется триггерами ![]() Добавлено через 1 минуту и 23 секунды treklama - это таблица, где хранятся сами объявления, а рекламодатели хранятся в tagency или я недопонял ход твоих мыслей |
|||
|
||||
Deniz |
|
||||||||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Можно поменять запрос на where id_sort = тот признак, при котором надо делать обновление, предполагаю что 0
Как я понял нужно выбрать всех рекламодателей и напечатать по 1 объяве из каждого, потом еще по одной и т.д. Так вот мысль была такая: Запросом отбираем, именно из treklama, всех РД и кол-во их объявлений. Кол-во записей в этом наборе есть шаг приращения Sort_ID, а М это минимальное кол-во объявлений, которое есть у всех. т.е. если взять первый пост с примером, то
Мин = 1 Cnt = 3 Идем по циклу от 0 до М-1, пока 1 раз, получаем по всем РД, Счетчик дорос до 3 (3 записи) и увеличиваем его на 1.
Cnt = 2, опять тоже самое, как в первый раз не совсем удачный пример получился. результат:
На след итерации останется только
Cnt = 1 Сейчас нет времени писать код на Delphi, но если не поймешь, может завтра попробую соорудить что-то. -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||||||||||||
|
|||||||||||||||
Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
правильно
ну да дальше не до конца понял, туплю, разбираюсь в твоём алгоритме Добавлено через 6 минут и 16 секунд Всё, вроде получилось ![]()
Всем большое спасибо!! ![]() ![]() Отдам юзерам, пусть теперь они мучаются ![]() Добавлено через 7 минут и 52 секунды Но я пока что не ставлю вопрос, как решённый. ![]() "От этих пчёл всего можно ожидать". (с) ![]() |
||||||
|
|||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
мда
![]() ![]() /*ушёл думать дальше |
|||
|
||||
Deniz |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
Akella, мой вариант попробуй, может получится
![]() -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
|||
|
||||
Akella |
|
||||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
ну я же так и делаю
Вот получился у меня массив из трёх НД (наборов данных). В одном 10 записей, во - втором 116 и в третьем - 350.
M = 10 для всех, так? Приращение для каждого своё: 10, 116 и 350. Так? вместо моего?
|
||||||||
|
|||||||||
Deniz |
|
||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1251 Регистрация: 16.10.2004 Где: Новый Уренгой Репутация: 8 Всего: 44 |
нет
Для всех приращение = кол-во записей в наборе (в моем select) т.е., по моему select получается:
переоткрываем запрос и получаем:
Будет желание напишу код на Delphi -------------------- "Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с) |
||||||||
|
|||||||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
попробую
![]() |
|||
|
||||
uranpro |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: нет Всего: 1 |
Заинтересовался))))
*ушел кодить* -------------------- I want a perfect soul |
|||
|
||||
uranpro |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 571 Регистрация: 7.5.2008 Где: Moscow city Репутация: нет Всего: 1 |
такс)...
создал таблицу w_test: FName varchar(50) ID_Sort int добавил записи только в fname a a a a b b b c c d Delphi>>
Добавлено @ 12:49 работает на mssql2005 будет работать на др серверах, если реализовать функцию в UPDATE -> TOP 1 Это сообщение отредактировал(а) uranpro - 10.12.2008, 12:53 -------------------- I want a perfect soul |
||||
|
|||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Попью кофе - попробую.
![]() В любом случае всем большое спасибо за помощь!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |