Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Вниз

Длинная строка в sql запросе в BDE (TQuery)   Найти похожие ветки 

 
_Guest_   (2008-05-14 16:14) [0]

Есть в длинной строке (AnsiString) значения из столбца таблицы (идентификаторы объектов), при использовании BDE:
Query.SQL.Add(строка);
Query.Open;

просле Open возникает ошибка: или обратился по несуществующему адресу или памяти мало. Если передавать не одной строкой, а многими мелкими, все равно ошибка. При использовании ADO (TADOQuery) такой проблемы нет. Можно ли это обойти, кроме как выкатыванием идентификаторов в отдельную таблицу и далее соединением таблиц? Спасибо.


 
Виталий Панасенко ©   (2008-05-14 16:19) [1]

БДЕ строить не пробовал ? Памяти добавить, PrivateDir Для Session указать ?


 
_Guest_   (2008-05-14 16:26) [2]


> Виталий Панасенко ©   (14.05.08 16:19) [1]
> БДЕ строить не пробовал ? Памяти добавить, PrivateDir Для
> Session указать ?

Нет, спасибо попробую, я в базах чайник. Передаю информацию в другую программу, а там разработчик, видимо, не лучше меня. Пока до 1000 объектов выбирали - все нормально, а больше - ошибка. Если можно, чуть подробнее про "строить БДЕ" или ссылку, что можно почитать по этой теме. Мне глубоко забраться не удасться, у меня другая тема, а вот эту конкретную задачу хотелось бы помочь решить.


 
Виталий Панасенко(дом)   (2008-05-14 16:29) [3]

ссылку - не помню, но недавно на статью натыкался.. поисковиком порыскай.. в BDEAdminе есть закладка для настройки параметров БДЕ(память, колво открытых файлов)....


 
_Guest_   (2008-05-14 16:37) [4]


> Виталий Панасенко


Спасибо. А в принципе, это ограничение где-либо прописано? С самим списком SQL  все нормально: после его заполнения, я проверяю - в нем есть все что я туда передал. Значит это где-то дальше. Файл открыт всего один. Проблема именно с длинной строки запроса.


 
Loginov Dmitry ©   (2008-05-14 22:09) [5]

> просле Open возникает ошибка: или обратился по несуществующему
> адресу или памяти мало. Если передавать не одной строкой,
> а многими мелкими, все равно ошибка.


Страшные вещи рассказываешь! Оно так и говорит "памяти мало"?


> Проблема именно с длинной строки запроса.


В BDE достаточно длинные запросы поддерживаются (то-ли 2кб, то-ли 4кб). Если не влазит, меняй логику.

По параметрам BDE и прочему - сюда: http://matrix.kladovka.net.ru/index.php?page=bdeproblems


 
_Guest_   (2008-05-15 10:04) [6]


> Loginov Dmitry ©   (14.05.08 22:09) [5]
Страшные вещи рассказываешь! Оно так и говорит "памяти мало"?

Говорит: Access violation at address 4C6217B3 in module "idsql32.dll"
Если передавать не одной строкой а несколькими, сообщение будет то же, только адрес другой. В каком то еще варианте (мы тут на пару экспериментируем) получили что-то вроде "out of memory", я сейчас точно не помню, а повторить не удается, может потому что изменили параметры BDE так, как описано в приведенной Вами статье. Т.е. что то улучшилось, но ошибка все равно возникает.

> В BDE достаточно длинные запросы поддерживаются (то-ли 2кб,
>  то-ли 4кб). Если не влазит, меняй логику.

Length(строка)=32874
А с заменой логики, я что-то ничего придумать не могу, кроме описанного в начале использования еще одной таблицы. Есть объекты, у каждого уникальный идентификатор и запись в таблице. Сколько объектов пользователь выберет неизвестно (1..100000 идентификатор - Integer), надо показать соответствующие выбранным объектам строки таблицы. Собственно я из своий программы идентификаторы передаю списком или строкой, а вот далше их надо обработать программой, работающей с БД. Если подскажите идею или хотя бы направление в котором копать, будем очень благодарны.


 
ЮЮ ©   (2008-05-15 10:13) [7]

> Сколько объектов пользователь выберет неизвестно (1&#133100000
> идентификатор — Integer),


Крутые у тебя пользователи — ручками 100 000 записей отмечать !!! Из миллиона, небось, выбирают? Отдавай им все — коль такие крутые, чего мелочиться


 
_Guest_   (2008-05-15 11:20) [8]


> ЮЮ ©   (15.05.08 10:13) [7]
> > Сколько объектов пользователь выберет неизвестно (1ﭼ?
> > идентификатор — Integer), Крутые у тебя пользователи —
> ручками 100 000 записей отмечать !!! Из миллиона, небось,
>  выбирают? Отдавай им все — коль такие крутые, чего мелочиться

Я не сказал, что пользователи отмечают записи в таблице, если бы это было так, зачем мне понадобился бы запрос через TQuery. Пользователи выбирают объекты в карте: контрол+А вот тебе все объекты на активном слое. Я, конечно, могу сказать "ая-яй, вы выбрали больше полутысячи объектов, поэтому фиг вам а не выборка по базе", но работа с базой реализована, через BDE, ADO, DBISAM и по-моему, еще через что-то еще. И везде работает, а в BDE затыкается. А я по случаю оказался крайним.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
15-1222757063
Любитель музыки
2008-09-30 10:44
2008.11.30
Чтение DVD-караоке на компьютере


15-1222603997
No_Dead(work)
2008-09-28 16:13
2008.11.30
Разыскиваются


2-1224490297
Mozgan
2008-10-20 12:11
2008.11.30
Перенос компонента из delphi 6 в delphi 7


9-1171201624
GameStudio
2007-02-11 16:47
2008.11.30
Нужен хостинг своей GameStudio


4-1201114905
Artem
2008-01-23 22:01
2008.11.30
Как заменить иконку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский