Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как программно изменить текст запроса Access? [D7, MS Access 2002]


Страницы:   1 2

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:
В том-то и дело, что юзер не будет менять запрос/вьюху, его будет менять моя программа. А не хочу создавать свой, потому что в Аксесе есть макрос (не путать с модулем), который запускает подряд больше десятка запросов/вьюх, и в одном из них нужно вставить правильную дату. Мне проще изменить дату программой и выполнить потом один этот макрос, чем пересоздавать уже готовые запросы


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо