|
Беда c TADOQuery, TADOCommand и т.п...
|
|||
---|---|---|---|
#18+
Беда в том, что мне нужно создавать экземпляры компонентов TADOQuery (TADOCommand) на лету прямо в коде, подставлять им значения, выполнять и после этого грохать. Так вот, когда они раскиданы на форме, и все значения заданы в Design-time, то все работает прекрасно, но при программном создании ТЕ ЖЕ САМЫЕ запросы вызывают жуткие violations. Гадость происходит, если запрос содержит параметры Вот примерный код, который не работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
У меня Delphi 5 пропатченный, MS SQL 2000. Не знаю прям что и делать, хоть из окна выбрасывайся... Может кто-нибудь уже сталкивался с этой проблемой? Помогите, пожалуйста! С меня пиво. P. S. Да, кстати, в какой-то конфе по этому делу было написано, что есть некий ADO_PATCH.EXE, который правит в том числе и этот баг дельфи... не подскажите, где его взять??? Заранее спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2002, 15:53 |
|
Беда c TADOQuery, TADOCommand и т.п...
|
|||
---|---|---|---|
#18+
Ежели сам экземпляр создаешь в рантайме, то логичнее было бы и строку запроса самому составлять динамически, а не полагаться на автоматику. Автоматика всегда имеет ограниченные рамки применения. В чем проблема склеить строчку запроса и не мучится с параметрами? Ибо когда решиться проблема с AV, начнется другая проблема - с региональными настройками, так как у тебя даты. А если клеить строчку запроса самому, а даты задавать, как рекомендовано в MSSQL в формате 'YYYYMMDD' без разделителей, можно о куче возможных граблей так и не узнать до конца жизни, т.е. прожить счастливо. Кстати, код Код: plaintext 1. 2. 3. 4. 5.
это абсолютно то же самое, что и Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2002, 10:28 |
|
Беда c TADOQuery, TADOCommand и т.п...
|
|||
---|---|---|---|
#18+
Вдогонку. Настоятельно рекомендуется вместо TADOQuery и TADOStoredProc использовать TADODataSet Патч для ADO компонентов нужен, если MDAC установлен версии больше 2.5. Если версия MDAC 2.5 и ниже, то патч не требуется. Брать на www.borland.com, искать по ключевым словам 'patch Delphi5 MDAC2.6' ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2002, 10:33 |
|
Беда c TADOQuery, TADOCommand и т.п...
|
|||
---|---|---|---|
#18+
...да я бы и на SQL забил бы, сделал бы свой мелкий текстовый форматик, в нем бы все и хранил, да тока беда-то в том, что в апликашке, которую я пишу, SQL открыт для юзера, а он может такого наворотить.... Я уже думал о том, чтобы написать свой парсер, но, боюсь, это только прибавит гемора, снизит надежность и в итоге ограничит функциональность.... Да и вообще, пацаны так не делают =) На счет finally ... end; (не могу не оправдаться) там просто, во-первых, в excepte был еще кой какой кодец, который я для краткости выкинул, а во-вторых, если вы обратили внимание, то при удачном выполнении запроса компонент остается жить еще до поры до времени.... А вот интересная фитча: Запрос в стиле: Код: plaintext 1. 2. 3.
Работает (хотя есть 2 параметра) А вот такой - нет: Код: plaintext 1. 2. 3. 4. 5.
Хотя этот же код отлично работает, если его задавать в Design-Time. Гадство!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2002, 10:46 |
|
Беда c TADOQuery, TADOCommand и т.п...
|
|||
---|---|---|---|
#18+
У меня: MDAC 2.6 Delphi 5.0 Enterprise (Build 6.18) Update Pack 1 ставил для дельфей: d5adoupdate2.zip D5EntUpdate.exe (это барахло как раз и валяется на борланде) Вот последняя надежда на ado_patch.exe, о котором все пишут, но никто его не видел... Поможите, люди добрые! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2002, 10:50 |
|
Беда c TADOQuery, TADOCommand и т.п...
|
|||
---|---|---|---|
#18+
Уважаемый sp_14! Обычно я ставлю на форму столько ADODataSet, сколько на форме представлено запросов, возвращающих данные. Ну что убудет от меня, что ли? Накладные расходы - минимальные, все равно, при использованиеи даже одного ADODataSet, код разбухает на 300-400 кило,а каждый последующий берет 2-3. Если в форме используетя один ADODataSet, то я беру его с DataModule, обычно этот прием применяется в справочниках. Разумеется CommandText собирается как строка, без всяких там Parameters. Всегда, кроме может быть самых простых запросов, обработка идет через хранимые процедуры. ( я недавно, освещал этот вопрос, если Вас интересует, попробуйте найти в поиске по "Cat2"). Ну а уж ADOCommand всегда только один, на все приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2002, 19:59 |
|
|
start [/forum/topic.php?fid=58&msg=32036862&tid=2119943]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 161ms |
0 / 0 |