Страница 1 из 1
Извините, это опять я...
Добавлено: 04 сен 2007, 03:01
Kotъ-Begemotъ
Создаётся впечатление что тут один я задаю вопросы, но что делать, действительно такая ситуация...
Так вот...
А есть ли в РСУБД понятие "чётности"/"нечётности"? То есть можно как-то в фильтре проверить четное ли поле таблицы или нет, и на основании этого отобразить (исключить из фильтра) или не отображать даннное поле? В Paradox этого сделать нельзя, поэтому делал через "ЦК КПСС" то есть функцию, которая писАла в спец. таблицу с AutoIncrement полем и возвращала четное число значение поля или нет... Это можно как-то во "взрослом SQL" реализовать проще? Нет функций типа IsOdd или IdEven или других механизмов?
Про совет писать в спец табрицу (это для Paradox, а для SQL создать генератор по модулю 2 я не говорю сейчас

Добавлено: 04 сен 2007, 07:52
Dimitry Sibiryakov
Ну а что мешает проверить делимость нацело на 2?
Добавлено: 04 сен 2007, 11:35
WildSery
Если это фильтр, то может, на клиенте и смотреть?
Если же это выборка, без возможности посмотреть "всё", то в ХП реализуй.
Re: Извините, это опять я...
Добавлено: 04 сен 2007, 16:14
Slavik
Kotъ-Begemotъ писал(а):А есть ли в РСУБД понятие "чётности"/"нечётности"? То есть можно как-то в фильтре проверить четное ли поле таблицы или нет, и на основании этого отобразить (исключить из фильтра) или не отображать даннное поле?
Фильтр полей??? или всё же строк в выборке???
Re: Извините, это опять я...
Добавлено: 04 сен 2007, 19:55
Kotъ-Begemotъ
Slavik писал(а):Kotъ-Begemotъ писал(а):А есть ли в РСУБД понятие "чётности"/"нечётности"? То есть можно как-то в фильтре проверить четное ли поле таблицы или нет, и на основании этого отобразить (исключить из фильтра) или не отображать даннное поле?
Фильтр полей??? или всё же строк в выборке???
Обычный фильтр для строк. К сожалению в Paradox прямо в выражении фильтра у меня не получилось анализировать на чётность или нечётность, не жрёт выражения

((
Re: Извините, это опять я...
Добавлено: 04 сен 2007, 20:52
Slavik
WildSery правильно советует. Попробуй TDataSet.OnFilterRecord на клиенте или хранимую процедуру (в FB2 можно и execute block) на сервере.
Re: Извините, это опять я...
Добавлено: 04 сен 2007, 22:31
Kotъ-Begemotъ
Slavik писал(а):WildSery правильно советует. Попробуй TDataSet.OnFilterRecord на клиенте или хранимую процедуру (в FB2 можно и execute block) на сервере.
+
Буду думать. Проблема в том, что подобные вопросы мне отныне надо решать для двух платформ - для Paradox чтобы вводить новшества в существующем и работающем проекте, и под FB2.0 поскольку на него будет осуществляться переход...
Добавлено: 05 сен 2007, 09:08
aaa3d
Dimitry Sibiryakov писал:
Ну а что мешает проверить делимость нацело на 2?
без всяких ХП или фильтров на клиенте....
выведет четные.
select * from shop where shop_id= cast ((shop_id/2) as integer) *2
удачи
Добавлено: 05 сен 2007, 11:27
WildSery
aaa3d писал(а):удачи
А она понадобится, потому как бездырочные id - это скорее нонсенс

Добавлено: 05 сен 2007, 11:36
aaa3d
при чем тут бездырочные ID ?
Добавлено: 05 сен 2007, 12:04
WildSery
Может, и не при чём. Мне показалось, что "чётное" в данном случае интерпретировалось как "каждое второе".
Добавлено: 05 сен 2007, 16:43
Kotъ-Begemotъ
WildSery писал(а):Может, и не при чём. Мне показалось, что "чётное" в данном случае интерпретировалось как "каждое второе".
Тебе правильно показалось

Но в моём случае "дырок" не будет -потоком льются записи в таблицу Orders и нужно "по-честному" раскидать их на двух диспетчеров

Было так, чейчас уже немного по-другому всё, но на будущее, мало ли...
Добавлено: 05 сен 2007, 16:48
Kotъ-Begemotъ
aaa3d писал(а):Dimitry Sibiryakov писал:
Ну а что мешает проверить делимость нацело на 2?
без всяких ХП или фильтров на клиенте....
выведет четные.
select * from shop where shop_id= cast ((shop_id/2) as integer) *2
удачи
Да, но проблема с использованием этого выражения в свойстве Filter для Paradox'овской Ttable которая в существующем проекте есть...

(( Поэтому приходилось колхозить с "псеводгенератором" и функцией возвращающей значение его по модулю 2...
Хм... Кстати проверил, в выражинии фильтра всё-таки эта конструкция работает! Правда применять уже не придётся, так как у меня была возможность это суррогатное поле менять, для передачи заказа от одного диспетчера другому, так что даже при таком выражении фильтра пришлось бы всё равно вводить еще одно поле - признак передачи заказа от диспетчера диспетчеру... Но за идею спасибо! Я как-то не додумался до такого выражения фильтра... Век учись...
