where в команде select sql | |
---|---|
glaz58 Автор Сообщений: 812 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Уважаемые знатоки! в нижеприведённой команде
|
Re: where в команде select sql | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Если речь идет об "обычном" логическом отрицании, то надо вроде так записывать условие:
AND !smetarab->index=1 |
Re: where в команде select sql | |
---|---|
dimag Сообщений: 464 Откуда: Одинцово Дата регистрации: 17.12.2002 |
------------------ Глупость - это не отсутствие ума, это такой ум. |
Re: where в команде select sql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Для начала проверить без суммирования и без дополнительных таблиц (просто все поля из smetarab вывести). Может быть индекс по этому полю испорчен...
кроме того тут декартово произведение таблиц фигурирует (таблица rccs никак не "связана" с другими - соответственно перед суммированием данные будут "дублироваться" столько раз, сколько записей в этой таблице) - это тоже надо иметь в виду. Без разницы для числовых данных. Так же как и писать != <> или # в качестве оператора "не равно". В VFP он не нужен, если речь про FPD или ещё что-то древнее - хз, но автор этого не указал. ------------------ WBR, Igor |
Re: where в команде select sql | |
---|---|
glaz58 Автор Сообщений: 812 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Работаю на VFP9 SP2. Таблица rccs однострочная. Индекс smetarab не испорчен, строк в ней немного, заполняется ручным набором (составление смет на строительство или ремонт). До добавления поля Index всё работало нормально, теперь в связи с новой методикой нужно обработать таблицу smetarab таким образом, чтобы строки, где Index=1 не включались в суммирование. (Index=1 - это текущие цены, а там где Index!=1 - это цены 2000-го года, они переводятся в текущие умножением на соответствующие индексы)
|
Re: where в команде select sql | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Вроде как INDEX - зарезервированное слово. Не может ли это как-то влиять на работу SQL-запроса? Собственно, это легко можно проверить, переименовав поле INDEX.
|
Re: where в команде select sql | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Думается, что у Фокса нет зарегистрированных слов. Если INDEX будет написано там, где синтаксис ждет эту опцию, то воспримет её как опцию. В других случаях будет искать переменную, алиас, имя файла и т.п. с таким именем. Скажем,
|
Re: where в команде select sql | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Ну... Это как сказать.
Сейчас уже не помню, в какой версии FPD это было. Сдали нам разработчики АРМ с исходниками. Сопровождать со стороны эксплуатации пришлось мне. Вдруг оказалось, что иногда АРМ буквально "вылетает" без каких-либо сообщений. При просмотре модуля ничего этакого не видно. Всё "чисто и прозрачно". Тогда воспользовался отладчиком, который тоже ничего не показывал. Всё работает. Случайно удалось в режиме отладчика попасть на ветку, где было такое присвоение (типа признак того, что "чего-то не хватает" в исходных данных) proc=0 И вот на этой строке происходил мгновенный вылет из АРМа. Видимо, такая вот строка приводила к "обнулению" всех программ из памяти. Что-то типа CLEAR PROGRAM. Где-то в Help писали, что нельзя использовать зарезервированные слова, так как это может приводить к неожиданным результатам. Исправлено 2 раз(а). Последнее : Simple777, 19.10.21 11:30 |
Re: where в команде select sql | |
---|---|
glaz58 Автор Сообщений: 812 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Спасибо за внимание к моему топику. У меня не вылетает, но почему-то включает в суммирование, несмотря на то, что указано:
Исправлено 1 раз(а). Последнее : glaz58, 19.10.21 11:40 |
Re: where в команде select sql | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Можно "для отладочных целей" максимально упростить SQL-запрос с тем, чтобы "локализовать проблему" и выяснить, в каком именно месте происходит глюк. Иногда такой метод срабатывает. После выявления "места проблемы" можно попытаться возникшую проблему обойти тем или иным способом.
То есть перед вызовом реального SQL-запроса попробовать вызовы более простых запросов. Там, типа, просуммировать только одно поле по одному условию. Чтобы корректно отработал запрос. Потом постепенно усложнять запрос. Так можно будет выяснить, "где собака зарыта". |
Re: where в команде select sql | |
---|---|
pasha_usue Сообщений: 3650 Откуда: Е-бург Дата регистрации: 06.10.2006 |
В rccs сколько записей? |
Re: where в команде select sql | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Ни в какой не было - я прошел почти все (если не все) версии Фокса, начиная с FoxBase+ 1988 года. И команду USE INDEX можно было писать уже тогда. Цитата: Да, список Reserved Words приводится (или приводился) в Help, но о запрете использования таких слов ничего не писали - предупреждали, что это может приводить к ошибкам синтаксиса. Я не могу с ходу придумать команду, которая выдаст синтаксическую ошибку при использовании зарезервированных слов в другом качестве, но в любом случае, примеры показывают, что о запрете речь не идет, и если уж компилятор справился со своей задачей (как в случае ТС), то далее всё будет Ok. |
Re: where в команде select sql | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Про USE INDEX я ничего и не говорил. А вот случай с proc=0 с последующим вылетом реальный. Это я хорошо запомнил. настолько это было удивительно.
Вообще говоря, есть некоторые "понятия" о том, "что такое хорошо", и "что такое плохо". Использование зарезервированных слов для имен таблиц и переменных вряд ли комильфо. Во всяком случае после proc=0 я никогда не использую зарезервированные слова не по прямому их назначению. Впрочем, если кому-то это годно, то пусть использует, конечно. |
Re: where в команде select sql | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата: Если такой случай и был, то очевидно, что не из-за использования слова proc. Ещё раз уточню, что проблема, если она и есть (была), может касаться только компиляции (ошибка синтаксиса). В рантайме никаких "зарезервированных слов" уже нет (о макро не говорю, так как это та же компиляция), и если компилятор оформил твой proc как переменную, то "вылет" никак не связан с тем, что proc - сокращение от PROCEDURE. Впрочем, если ты ведёшь речь о чем-то из разряда НЛО, барабашек, создания вечного двигателя и т.п., то конечно - чем черт не шутит - тогда лучше такие слова не использовать. Цитата: Ну, это уже немного другой вопрос. Исправлено 1 раз(а). Последнее : akvvohinc, 19.10.21 16:49 |
Re: where в команде select sql | |
---|---|
akvvohinc Сообщений: 4224 Откуда: Москва Дата регистрации: 11.11.2008 |
Кстати, вот что такое "глюк" Фокса (правда, у меня предпоследний релиз VFP):
У кого-нибудь этот код работает? А такой?
Исправлено 1 раз(а). Последнее : akvvohinc, 19.10.21 17:05 |
Re: where в команде select sql | |
---|---|
glaz58 Автор Сообщений: 812 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Одна строка.
|
Re: where в команде select sql | |
---|---|
Chemberzhy Сообщений: 13142 Откуда: Измаил Дата регистрации: 28.04.2009 |
where (smetarab->nrazd=razdel->nrazd And smetarab->shifr=gesnnaim->shifr) AND smetarab->index!=1
------------------ Что-то с памятью моей стало, всё что было не со мной- помню. |
Re: where в команде select sql | |
---|---|
Равиль Сообщений: 6555 Откуда: Уфа Дата регистрации: 01.08.2003 |
VFPA : 1) Первый - нет - ошибка : [attachment 35876 1.png] 2) Второй - да, работает Уи-Уи-Уи (сирена) - Первый госпитализируется в лечебницу Чена ------------------ Тяжело согнать курсором муху с монитора ... |
Re: where в команде select sql | |
---|---|
glaz58 Автор Сообщений: 812 Откуда: Воронеж Дата регистрации: 09.02.2008 |
Спасибо, что попытались помочь, но результат тот же, что со скобками, что без скобок. Упорно включает в суммирование строки, где Index=1. Придётся делать перенос поля из detail в Group footer calculate - Sum и делить на 2. Делить на 2 - потому что при переносе поля из Detail, которых 2 - Detail1 и Detail2 при суммировании в Group Footer результат удваивает.
Исправлено 2 раз(а). Последнее : glaz58, 19.10.21 20:01 |
Re: where в команде select sql | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ничего удивительного - если делать индексные ключи "неопределённого" размера, то рано или поздно получим эту ошибку. В хелпе есть целый раздел посвящённый всяким нюансам создания индексных выражений - но и он не может покрыть всех возможных случаев. Впрочем, там явно сказано Цитата: Тут речь будет не про ключ нулевого размера, но про ключ "неправильного" (недостаточного) размера.
ну или соответственно
------------------ WBR, Igor |
© 2000-2024 Fox Club  |