![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно изменить текст запроса Access? [D7, MS Access 2002]
AGGRESSOR © (2006-05-31 10:57:00)Добрый день всем. Собственно, весь вопрос в сабже. Кто уже сталкивался?
saxon (2006-06-02 11:16:00) [1]
> sniknik © (02.06.06 11:08) [26]
да уж .... а еще пару дней назад про это говрили.
sniknik (2006-06-02 11:08:00) [2]> Тяну access для того, чтобы запускать огромное кол-во сохраненных там запросов/вьюх через DoCmd.OpenQuery().
???
"процедуры" "запускаются" -> EXEC Proc Par1, ... также можно выполнить параметризованную вьюху.
стандартно вьюхи "запускаются" SELECT * FROM View
без всяких access-ов.
> Кстати, проблему я все-таки решил. .... Все работает :)
фактически сделал параметр "через задницу"... чего мешало сделать его "по правильному"? (не понимаю, вроде говорил там у тебя неменяемое чтото, только запросом можно "регурировать", а тут оказывается меняется все... сам и пишеш. т.е. вообще все...)
Aggressor (2006-06-02 10:26:00) [3]Тяну access для того, чтобы запускать огромное кол-во сохраненных там запросов/вьюх через DoCmd.OpenQuery().
Кстати, проблему я все-таки решил. Не в лоб, но решил. Чтобы не пытаться модифицировать запрос/вьюху и изменять там дату, я создал таблицу из одного поля с одной записью типа дата, а потом с пом. DoCmd.RunSQL апдейчу это самое единственное поле на нужную мне дату без условия, а запрос завязываю на эту таблицу. Все работает :)
sniknik (2006-06-01 18:16:00) [4]> <OleObject>.DoCmd.DeleteObject(acQuery)
нда... век живи век учись... ;), ты чего его через access удаляеш? а зачем тебе тогда ADO? запрос DROP VIEW xxx, и проще и работать будет не только для аксесса в режиме сервера автоматизации (создание CREATE ...).
кстати если ты тянеш за собой access то вполне возможно у него есть методы получить уже расшифрованный запрос, надо только найти.
вернее не надо, но раз ты внего так "уперся" и жить без него не можеш... ;о)
Aggressor (2006-06-01 17:41:00) [5]Разобрался с удалением запроса. Если кому-то интересно:
<OleObject>.DoCmd.DeleteObject(acQuery)
Сейчас разбираюсь с созданием заново...
Aggressor (2006-06-01 17:06:00) [6]2 sniknik © (31.05.06 16:06) [20] :
> а при "убистве" + создании (с тем же именем естественно)
> исправленного варианта, что, придется?
Не придется, НО: это равносильно созданию его заново, а это можно сделать и проще. Тем более что я по-прежнему не знаю, как убить и создать :)
2 Sergey13 © (31.05.06 16:10) [21] :
В этом случае так и есть. Потому что отчет делается сначала с помощью запуска SQL к базе SyBase, потом полученный текстовый файл загоняется в Access, а из данных Access'а (только что загруженных и прошлых периодов) экселевский файл тянет нужные в форму отчета (с помощью пользовательских функций через DAO 3.6). Объеденить эту компанию в некое подобие работающего автоматически отчета мне поможет Delphi.
Sergey13 (2006-05-31 16:10:00) [7]2 [19] Aggressor © (31.05.06 16:02)
Такое ощущение, что твоя программа на Делфи - это оболочка для запускания макросов. Мне кажется - это несколько неоптимально, так сказать. Не находишь?
sniknik (2006-05-31 16:06:00) [8]> Спасибо за перечень полей!
да не за что... поймеш когда в них "унутрь" заглянеш... ;)
> А макрос менять не придется до тех пор, пока не меняется имя запроса.
а при "убистве" + создании (с тем же именем естественно) исправленного варианта, что, придется?
Aggressor (2006-05-31 16:02:00) [9]2 sniknik [13]:
Спасибо за перечень полей!
А макрос менять не придется до тех пор, пока не меняется имя запроса. Потому что макрос в Аксесе- это не только код ВБА, но и кое-что еще, чему в нормальном языке даже нет названия (см. закладку "макросы")
saxon (2006-05-31 13:07:00) [10]
> Desdechado © (31.05.06 12:59) [15]
Запросы в Access и вьюхи- не одно и тоже, с ними можно работать как со Stored Procedure.
> [8]
> и в одном из них нужно вставить правильную дату.
> sniknik © (31.05.06 13:01) [16]
Может я и неправильно понял, но вот тут показалось что это условие в запросе.
sniknik (2006-05-31 13:03:00) [11]> Впервый слышу о параметрических вьюхах.
это ты с access-ом не работал ;о), там и процедуры сделаны как вьюхи.
sniknik (2006-05-31 13:01:00) [12]> А параметр в запросе не поможет?
тогда макрос придется менять, он в [8] говорит, что запрос вызывается из него.
Desdechado (2006-05-31 12:59:00) [13]saxon (31.05.06 12:44) [14]
Впервый слышу о параметрических вьюхах.
saxon (2006-05-31 12:44:00) [14]
> Aggressor © (31.05.06 11:55) [8]
А параметр в запросе не поможет?
sniknik (2006-05-31 12:43:00) [15]> и в одном из них нужно вставить правильную дату
вот этот один "убей" и создай его по новой с уже правильной датой
ну или попытайся изменить, вот этих полях хранится описание запросов
SELECT Lv,LvExtra,LvModule,LvProp FROM MSysObjects WHERE Type=5
открой, разбери, измени только одну дату...
Desdechado (2006-05-31 12:36:00) [16]> не встречал вьюх на добавление данных в таблицу или удаление данных из нее
Это тоже одна из стандартных функций вьюх - изоляция внутреннего представления от пользователя. Пускай данные добавляет во вьюху, а там они могут быть раскиданы по подлежащим таблицам.
Aggressor (2006-05-31 11:58:00) [17]2 Sergey13:
Пока оформлю это макросом в Аксесе, чтобы было проще отлавливать ошибки синтаксиса, а потом перенесу его в Делфи
Sergey13 (2006-05-31 11:58:00) [18]2[8] Aggressor © (31.05.06 11:55)
Ну так может тот макрос подправить надо?
Хотя я с аксесом не работал - ну его. 8-)
Sergey13 (2006-05-31 11:56:00) [19]2 [7] Aggressor © (31.05.06 11:52)
А ты вообще прогу в Аксесе пишешь или в Делфи?
Aggressor (2006-05-31 11:55:00) [20]2 Sergey13:
В том-то и дело, что юзер не будет менять запрос/вьюху, его будет менять моя программа. А не хочу создавать свой, потому что в Аксесе есть макрос (не путать с модулем), который запускает подряд больше десятка запросов/вьюх, и в одном из них нужно вставить правильную дату. Мне проще изменить дату программой и выполнить потом один этот макрос, чем пересоздавать уже готовые запросы