|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.07.2011, 18:43 | #1 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Странные баги в FB
Здравствуйте!
Возникло не сколько странных проблем с СУБД/БД никак не могу решить, может сможете что-то подсказать... IBExpert + FB2.5 1. Не воспринимает CASE, ругается на строке (!) Parsing error! Пробовал в конце каждой строки when ставить ";" без разницы. Переделал на IF всё сразу заработало. Код:
Код:
А. Первая совершает определённое действие над всем списком, корректировка данных в БД для строк из списка. Увы, почему-то обрабатывает только последний (!) номер из списка. Содержит конструкцию: Код:
Код:
|
31.07.2011, 13:06 | #2 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Профи, помогайте, сам пока разобраться не могу - не хватает опыта с SQL...
Проверил в БД все входящие данные, всё передано из программы верно. Код:
Главная процедура п.2.А получила весь список "100,101,102" (1), процедура разбиения списка п.2 разбила список и вернула таблицу (проверено вручную запросом и проверкой результата), после чего процедура п.2.А отработала (2) - согласно проверочной записе вставленной после слова "do" - 3 раза, тк при каждом цикле в тестовую таблицу добавлялись номера "100","101","102"... но в реальности данные изменились только у последней записи номер "102"! Впечатление, что у конструкции функция корректировки записей работает после ВСЕХ циклов, а не в каждом цикле... Или же наоборот - начинается цикл с конца списка и сразу после обработки первой в исполнении записи (последней в списке - "102") цикл работает вхолостую не корректируя нужные записи... Подскажите что нужно скорректировать для этого... Последний раз редактировалось delphicoding; 31.07.2011 в 13:20. |
31.07.2011, 14:32 | #3 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
=== вопрос 1 решён только с использованием IF, CASE не принимает ни в каком виде! странно.
=== вопрос 2.А решён добавлением else в каждую строку. По поводу вопроса 2.Б тоже нашёл где проблема - с процедурой в БД написанной в первом постинге всё в порядке, список просто не доходит до процедуры. Проблема в конструкции: Код:
Последний раз редактировалось delphicoding; 31.07.2011 в 16:13. |
31.07.2011, 16:48 | #4 | |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Решён вопрос 2.Б!
Заработала такая конструкия: Цитата:
Осталось лишь непонятно почему IBExpert+FB2.5 никак не хочет пропускать CASE ??? |
|
31.07.2011, 21:01 | #5 | ||
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Цитата:
Цитата:
|
||
31.07.2011, 23:40 | #6 |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
А что не может? Какая по-сути разница какое действие производить-то?!
То есть в таком случае писать можно только через конструкцию?: Код:
Последний раз редактировалось delphicoding; 31.07.2011 в 23:46. |
01.08.2011, 09:01 | #7 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Точка! Использовать его так, как Вы хотите (исходя из того, что его имя совпадает с оператором выбора в других ЯП) - НЕЛЬЗЯ! Цитата:
(ну кроме того, что вы в зависимости от типа создаёте кучу дополнительнх переменных.... А если TYPE будет принимать 100 значений? А если тысячу? я бы посмотрел над изменением алгоритма и/или использования вместо a_shift b_shift и т.д. массивов... Ну, тут Вам, как разработчику, виднее, как нужно, как лучше, как удобнее, универсальнее и т.д. и т.п.) |
||
01.08.2011, 13:53 | #8 | |
Заблокирован
Регистрация: 04.07.2011
Сообщений: 261
|
Цитата:
Код:
CASE же как раз должен работать иначе - выходить из цикла при нахождении искомого A=1 и таким образом повторное присвоение становится невозможным. Код:
|
|
01.08.2011, 14:27 | #9 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
CASE в SQL запросах ВОЗВРАЩАЕТ значение! Возвращает. и всё. Никаких операций по изменению данных он не производит И НЕ ДОЛЖЕН производить! Не пойму, что здесь непонятного?! p.s. для вашего примера может пройти так: Код:
Последний раз редактировалось Serge_Bliznykov; 01.08.2011 в 14:31. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
странные таблички | Пепел Феникса | Свободное общение | 5 | 22.09.2010 14:13 |
странные проблемы с с++ | Plastilin | Общие вопросы C/C++ | 9 | 21.02.2010 03:50 |
Странные ошибки. | Rio309 | Общие вопросы Delphi | 2 | 19.10.2009 19:22 |
Странные задачи | L_M | Свободное общение | 60 | 19.05.2009 08:54 |