![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Insufficient memory for this operation [D6, dBase, FoxPro]
dest © (2006-12-11 13:15:00)Такой запрос при запуске программы из Delphi выполняется нормально. После формируется по этому кваери отчетная форма.
Но если автономно запустить екзешник, вываливает на Exception.
Если exception убрать, ошибки опять нет.
Но иногда вываливает на нечто подобное:
Insufficient memory for this operation.
File or directory does not exist.
File: D:\DISTR\~my\___Teplosbit\WinABR~ap\_QSQL000.DBF
Table does not exist.
Он что, слишком сложен для BDE? Есть возможность его упростить?
novill (2006-12-11 14:11:00) [1]> [3] dest (11.12.06 13:17)
Если условия берутся не из таблицы, то попробуй конструкцию ... NA in (1,5,7,...) ...
dest (2006-12-11 14:10:00) [2]мда.. но это гемор... (
с учетом того, что программно создать таблицу даже не получится. FOXBASE читает только те ВИА базы, которые он создает "без лишностей".
придется использовать пустые FOSBASE-кие шаблоны и лишь заполнять их программно...
sniknik (2006-12-11 14:07:00) [3]> что после обработки она должна считываться простейшим FOXBASE.
ну так это после... а зачем себя ограничивать во времяработы?
используй чтонибудь нормальное, а для "считываться простейшим FOXBASE" делай специальную таблицу, после всего.
dest (2006-12-11 13:59:00) [4]>> sniknik © (11.12.06 13:40) [17]
это я думал раньше... попробую.....
dest (2006-12-11 13:57:00) [5]Запрос ессественно, формируется программно. Ни ключей, не индексов! у базы нет.
Все потому, что после обработки она должна считываться простейшим FOXBASE.
sniknik (2006-12-11 13:40:00) [6]а интересно, переписанное в такой форме пройдет?
select * from ABR0711.DBF
where
(MG = '1' and NA in = ('1', '5', '7', 9', '16', '22', '24', '26', '28', '33', '44', '45', '50')) or
....
хотя это одно и тоже...
и кстати зачем там строки? с цифрами было бы лучше.
Anatoly Podgoretsky (2006-12-11 13:38:00) [7]> ЮЮ (11.12.2006 13:27:12) [12]
> на матрицу
Вот она его и поимела.
sniknik (2006-12-11 13:34:00) [8]откуда получаешь этот список условий? может и так из другой таблицы? и тогда смысла "огород городить" нет, надо просто нормально запрос составить с условием на подзапрос.
ЮЮ (2006-12-11 13:30:00) [9]Интересно, о подобное из LocalView выдюжит?
SELECT 1 MG,1 NA
UNION
SELECT 1, 5
...
clickmaker (2006-12-11 13:30:00) [10]
> [12] ЮЮ © (11.12.06 13:27)
о, точно
а я-то все вспоминаю, где я это уже видел зелеными буквами по черному фону...
ЮЮ (2006-12-11 13:27:00) [11]
> Имхо, все это тянет на какой-то массив, где индекс - MG
на матрицу
sniknik (2006-12-11 13:26:00) [12]> Он что, слишком сложен для BDE?
подобное быдет сложно для любого движка/sql сервера
> Есть возможность его упростить?
для mssql при больших списках условий рекомендуют создавать временную таблицу и строить запрос на сравнение с ней... быстрее работает.
ЮЮ (2006-12-11 13:26:00) [13]Речь идет о subj-евом запросе.
BETWEEN и IN и в LocalSql никто не отменял.
clickmaker (2006-12-11 13:25:00) [14]Имхо, все это тянет на какой-то массив, где индекс - MG
clickmaker (2006-12-11 13:24:00) [15]
> Такое, боюсь и другие движки не потянут, не то что, БДЕ.
ну там можно between и in заюзать
ЮЮ (2006-12-11 13:22:00) [16]
> Ну и так еще 660 раз..........
Надо 666 раз :)
Такое, боюсь и другие движки не потянут, не то что, БДЕ.
Если продумвнный выбор сделать действительно не возможно кроме как кликанья на пересечении MG и NA, то запиши рультаты этих кликаний во временную таблицу и соединяй её с данными
Desdechado (2006-12-11 13:22:00) [17]результат получается слишком большой
не пиши такие запросы (стрелял бы за них) - ни по длине текста, ни по длине результата
Sergey13 (2006-12-11 13:20:00) [18]> [4] dest (11.12.06 13:17)
> Ну и так еще 660 раз..........
Упалпадстул.
Сори за лексикон.
dest (2006-12-11 13:17:00) [19]Ну и так еще 660 раз..........
dest (2006-12-11 13:17:00) [20]
((MG = '5')and(NA = '6'))or
((MG = '5')and(NA = '14'))or
((MG = '5')and(NA = '17'))or
((MG = '5')and(NA = '27'))or
((MG = '5')and(NA = '29'))or
((MG = '5')and(NA = '33'))or
((MG = '5')and(NA = '41'))or
((MG = '5')and(NA = '65'))or
((MG = '5')and(NA = '77'))or
((MG = '6')and(NA = '3'))or
((MG = '6')and(NA = '9'))or
((MG = '6')and(NA = '15'))or
((MG = '6')and(NA = '16'))or
((MG = '6')and(NA = '18'))or
((MG = '6')and(NA = '19'))or
((MG = '6')and(NA = '44'))or
((MG = '6')and(NA = '46'))or
((MG = '7')and(NA = '1'))or
((MG = '7')and(NA = '20'))or
((MG = '7')and(NA = '24'))or
((MG = '7')and(NA = '27'))or
((MG = '7')and(NA = '28'))or
((MG = '7')and(NA = '31'))or
((MG = '7')and(NA = '62'))or
((MG = '8')and(NA = '4'))or
((MG = '8')and(NA = '5'))or
((MG = '8')and(NA = '8'))or
((MG = '8')and(NA = '9'))or
((MG = '8')and(NA = '14'))or
((MG = '8')and(NA = '17'))or
((MG = '8')and(NA = '18'))or
((MG = '8')and(NA = '19'))or
((MG = '8')and(NA = '26'))or
((MG = '8')and(NA = '27'))or
((MG = '8')and(NA = '38'))or
((MG = '9')and(NA = '1'))or
((MG = '9')and(NA = '5'))or
((MG = '9')and(NA = '6'))or
((MG = '9')and(NA = '7'))or
((MG = '9')and(NA = '15'))or
((MG = '9')and(NA = '19'))or
((MG = '9')and(NA = '24'))or
((MG = '9')and(NA = '26'))or
((MG = '9')and(NA = '28'))or
((MG = '9')and(NA = '34'))or
((MG = '9')and(NA = '36'))or
((MG = '9')and(NA = '41'))or
((MG = '10')and(NA = '6'))or
((MG = '10')and(NA = '9'))or
((MG = '10')and(NA = '14'))or
((MG = '10')and(NA = '17'))or
((MG = '10')and(NA = '25'))or
((MG = '10')and(NA = '32'))or
((MG = '10')and(NA = '33'))or
((MG = '10')and(NA = '35'))or
((MG = '10')and(NA = '36'))or
((MG = '10')and(NA = '40'))or