powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ошибка 1150
5 сообщений из 5, страница 1 из 1
Ошибка 1150
    #34405398
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста
ошибка 1150 вылетает интересно периодически
при выполнении следующего SELECTa

Код: plaintext
SELECT TOP  101   F1,F2,F3......F31 FROM table1 INNER JOIN table2 ON F1t1=F1t2  LEFT JOIN table3 ON F1t1=F3t3 WHERE условие ORDER BY F1,F2,F3,F4,F5,F6,F7 INTO CURSOR _curTMP NOFILTER
Понимаю что дело в памяти нехватает ее якобы,
но оперативки 1Гб и почему тогда фокс не свопит ее на диск если курсор получается большой.
Меня уже конкретно достают подобным вопросом и тыипа надо что-то делать.
VFP8SP1
...
Рейтинг: 0 / 0
Ошибка 1150
    #34405465
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jura.KПодскажите пожалуйста
ошибка 1150 вылетает интересно периодически
при выполнении следующего SELECTa

Код: plaintext
SELECT TOP  101   F1,F2,F3......F31 FROM table1 INNER JOIN table2 ON F1t1=F1t2  LEFT JOIN table3 ON F1t1=F3t3 WHERE условие ORDER BY F1,F2,F3,F4,F5,F6,F7 INTO CURSOR _curTMP NOFILTER
Понимаю что дело в памяти нехватает ее якобы,
но оперативки 1Гб и почему тогда фокс не свопит ее на диск если курсор получается большой.
Меня уже конкретно достают подобным вопросом и тыипа надо что-то делать.
VFP8SP1
1. Сколько полей в Table1, Table2, Table3
2. Опишите подробней таблицы. Потому как алиасов в запросе нет и ни фокс, ни я не понимаем, к какому из алиасов относятся F1T1, F1T2, F1T3. Причем фоксу легче, чем мне, так как он знает, в каких таблицах нет этих полей.

Опять же, если F1T1 и F3T3 содержатся в таблице Table3, то фокс будеть джойнить практически по True или по False, зависит от данных.
Потом, Top 101 не поможет, так как применяется ORDER. Пока не отсортирует, первые 101 не отберет.
И еще. Нужны типы полей, по которым идет связка и сортировка. Ну мало ли, по VARCHAR(250) связка идет.
...
Рейтинг: 0 / 0
Ошибка 1150
    #34413828
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица table1 имеет 17 полей, но в выборку включается 12 полей из этой таблицы.
Таблица table2 имеет 48 полей но в выборку включаются 15 полей из этой таблицы.
Таблица table3 имеет 11 полей но в выборку влючается 6 полей.
table1 связывается с table2 по полям table1.IDT1=table2.T2IDT1 оба поля Char(10)
table3 связывается с table2 по полям table2.T2IDT3=table3.IDT3 оба поля Char(10)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT TOP  101  
           table1.F1,table1.F2,table1.F3,table1.F4,table1.F5,table1.F6,
           table1.F7,table1.F8,table1.F9,table1.F10,table1.F11,table1.F12,
           table2.F13,table2.F14,table2.F15,table2.F16,table2.F17,
           table2.F18,table2.F19,table2.F20,table2.F21,table2.F22,
           table2.F23,table2.F24,table2.F25,table2.F26,table2.F27,
           table3.F28,table3.F29,table3.F30,table3.F31,table3.F32,table3.F33
    FROM table1 INNER JOIN tabl2 
            ON table1.IDT1=table2.T2IDT1 
            LEFT JOIN table3 ON table2.T2IDT3=table3.IDT3 
    WHERE &lcStrokaZaprosa
    ORDER BY table2.F13,table2.F14,table1.F1,table1.F2,table1.F3,table1.F4,table1.F5
    INTO CURSOR _curTMP NOFILTER 
Да еще поля по которым идет сортировка имеют тип Char(6) до Char(40) и тип Date
Имена полей по всем таблицам имеют уникальное название, т.е. ни одно имя поля не повторяется.
(вообще поля в таблицах называются по другому не F1....F31, но названия уникальны по всей системе)
В выборку попадает memo поле которое содержится в таблице table3.
Мне кажется именно из-за него возникают проблеммы. Отследить очень сложно база находится не у меня, достаточно далеко, ошибка появляется изредка может быть раз в неделю. Т.е. в принципе все работает но иногда сваливается в ошибку и именно с таким кодом как будто бы памяти нехватает.
Да по поводу TOP

Help[TOP nExpr [PERCENT]]
Определяет, что в результитрующий набор Запроса будут выбраны первые nExpr записей или заданный процент от общего количества записей выборки. Диапазон допустимых значений для выражения nExpr : от 1 - до 32,767, или, если задана опция PERCENT, вы можете задать значения процентов: от 0.01 - до 99.99. Visual FoxPro сортирует результирующий набор Запроса, а за тем возвращает соответствующее количество записей, как указано в TOP nExpr [PERCENT].

Примечание
Для использования опции ограниченной выборки TOP, вы болжны обязательно определить секцию ORDER BY, для сортировки. В секции ORDER BY определяется имя / номер столбца, относительно которого выполняется выборка первых записей Запроса, количество которых задается в опции TOP.
Другое дело что в 9 он как то лучше работает но к сожалению имеем 8
...
Рейтинг: 0 / 0
Ошибка 1150
    #34414112
Dinozavr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jura.KВ выборку попадает memo поле которое содержится в таблице table3.
Мне кажется именно из-за него возникают проблеммы. Отследить очень сложно база находится не у меня...

Включение в запрос полей memo - штука довольно опасная. Дело в том, что, по моему опыту, в этом случае соответствующая колонка выборки получает такую длину, какова длина содержимого поля memo в первой выбранной записи таблицы-источника. Вы, конечно, сами понимаете всю непредсказуемость такой ситуации.

Я в подобных случаях включал в список полей запроса выражение типа:

Код: plaintext
SELECT a, b, PADL(c_memo,  50 ), ... FROM ... && и т.д. 

Естественно, значение длины для такого поля должно быть необходимым и достаточным для обеспечения корректного сравнения. Существенным является также выбранная Вами операция сравнения - "=" или "==".

С наилучшими пожеланиями, Dinozavr.
...
Рейтинг: 0 / 0
Ошибка 1150
    #34414498
Jura.K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну во-первых memo поле включается не в условие запроса а в результат, хотя не вижу ни каких препятствий для включения его и в условие запроса.
Во-вторых если в результат запроса включается мемо поле без использования функций, то оно и в результирующей таблице будет иметь тип memo, а значит иметь произвольную длинну, т.к. фокс его сразу определяет типом memo.
При условии что не делается извратов типа IIF(cNum='1','Один',m_Pole), в этом случае конечно можно получить в выборку либо memo либо char(4).
Другое дело что memo поля часто портяться при некачественных сетях (да и вообще железе) и вот тогда при выборе сбойного поля фокс выкидывает ошибку С0000005.
Вот я и думаю (предполагаю) что и ошибка 1150 вываливается из-за этого, хотел узнать может кто сталкивался с такой проблеммой и кто нибудь уже ее решал?
Разницу между = и == я тоже прекрасно понимаю, но причина ошибки не в этом. В условиях используется = но при этом правая часть условия дополняется пробелами до длинны поля.
И все равно всем спасибо.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ошибка 1150
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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