Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Как программно изменить текст запроса Access?   Найти похожие ветки 

 
AGGRESSOR ©   (2006-05-31 10:57) [0]

Добрый день всем. Собственно, весь вопрос в сабже. Кто уже сталкивался?


 
Megabyte ©   (2006-05-31 11:10) [1]

Из Дельфи?


 
sniknik ©   (2006-05-31 11:21) [2]

не меняется, нет команды ALTER VIEW, ессть вариант пересоздать "убить" и сделать заново, на это команды есть. см. справку.

p.s. мог бы и привести и как, но тут поискт "тех кто сталкивался", а я не сталкивался, просто знаю, прочитал когдато когда учил SQL, никаких "столкновений" не было...


 
Desdechado ©   (2006-05-31 11:25) [3]

query.sql.text:="другой текст запроса";
query.Open


 
AGGRESSOR ©   (2006-05-31 11:41) [4]

2 Megabyte: Это не существенно, главное- код
2 sniknik: Вариант "убить и сделать заново" мне не очень подходит, т.к. таким образом я мог бы и динамически его создавать, а потом открывать через DAO. Задача как раз в том, чтобы получить текст запроса, хранящегося в Access в закладке "запросы", и изменить его, чтоб пользователь мог его потом запустить, не думая о том, что там нужно менять дату.
2 Desdechado: Это не изменение текста запроса, это создание и запуск запроса. Текст надо сначала получить. Откуда- я выше писал.


 
Desdechado ©   (2006-05-31 11:46) [5]

AGGRESSOR ©   (31.05.06 11:41) [4]
Что-то не то с терминологией. Запрос - это любое обращение к SQL-СУБД.
А "сохраненный" запрос - это вьюха.
Причем идеология вьюх несколько отличается от того, как, похоже, ты ее используешь. По крайней мере, константы в них зашиваются крайне редко, тем паче даты.


 
Sergey13 ©   (2006-05-31 11:50) [6]

Как то не очень понятен конечный смысл всего этого.
Насколько я помню запросы в аксесе - это нечто вроде вьюх. Зачем потсоянно менять фактически метаданные? Почему просто нельзя свои запросы писать? Где гарантия, что юзер вообще правильно изменит запрос?


 
Aggressor ©   (2006-05-31 11:52) [7]

Я пользуюсь терминологией MS Access. На закладке написано "запросы", поэтому все элементы, которые там есть, я называю запросами. Я не говорю, что нет обходного пути. Просто хотелось узнать что-то новое.
З.Ы.: До сих пор нигде не встречал вьюх на добавление данных в таблицу или удаление данных из нее


 
Aggressor ©   (2006-05-31 11:55) [8]

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


 
Sergey13 ©   (2006-05-31 11:56) [9]

2 [7] Aggressor ©   (31.05.06 11:52)
А ты вообще прогу в Аксесе пишешь или в Делфи?


 
Sergey13 ©   (2006-05-31 11:58) [10]

2[8] Aggressor ©   (31.05.06 11:55)
Ну так может тот макрос подправить надо?
Хотя я с аксесом не работал - ну его. 8-)


 
Aggressor ©   (2006-05-31 11:58) [11]

2 Sergey13:
Пока оформлю это макросом в Аксесе, чтобы было проще отлавливать ошибки синтаксиса, а потом перенесу его в Делфи


 
Desdechado ©   (2006-05-31 12:36) [12]

> не встречал вьюх на добавление данных в таблицу или удаление данных из нее
Это тоже одна из стандартных функций вьюх - изоляция внутреннего представления от пользователя. Пускай данные добавляет во вьюху, а там они могут быть раскиданы по подлежащим таблицам.


 
sniknik ©   (2006-05-31 12:43) [13]

> и в одном из них нужно вставить правильную дату
вот этот один "убей" и создай его по новой с уже правильной датой

ну или попытайся изменить, вот  этих полях хранится описание запросов
SELECT Lv,LvExtra,LvModule,LvProp FROM MSysObjects WHERE Type=5
открой, разбери, измени только одну дату...


 
saxon   (2006-05-31 12:44) [14]


> Aggressor ©   (31.05.06 11:55) [8]

А параметр в запросе не поможет?


 
Desdechado ©   (2006-05-31 12:59) [15]

saxon   (31.05.06 12:44) [14]
Впервый слышу о параметрических вьюхах.


 
sniknik ©   (2006-05-31 13:01) [16]

> А параметр в запросе не поможет?
тогда макрос придется менять, он в [8] говорит, что запрос вызывается из него.


 
sniknik ©   (2006-05-31 13:03) [17]

> Впервый слышу о параметрических вьюхах.
это ты с access-ом не работал ;о), там и процедуры сделаны как вьюхи.


 
saxon   (2006-05-31 13:07) [18]


> Desdechado ©   (31.05.06 12:59) [15]

Запросы в Access и вьюхи - не одно и тоже, с ними можно работать как со Stored Procedure.

> [8]
> и в одном из них нужно вставить правильную дату.

> sniknik ©   (31.05.06 13:01) [16]

Может я и неправильно понял, но вот тут показалось что это условие в запросе.


 
Aggressor ©   (2006-05-31 16:02) [19]

2 sniknik [13]:
Спасибо за перечень полей!
А макрос менять не придется до тех пор, пока не меняется имя запроса. Потому что макрос в Аксесе- это не только код ВБА, но и кое-что еще, чему в нормальном языке даже нет названия (см. закладку "макросы")


 
sniknik ©   (2006-05-31 16:06) [20]

> Спасибо за перечень полей!
да не за что... поймеш когда в них "унутрь" заглянеш... ;)

> А макрос менять не придется до тех пор, пока не меняется имя запроса.
а при "убистве" + создании (с тем же именем естественно) исправленного варианта, что, придется?


 
Sergey13 ©   (2006-05-31 16:10) [21]

2 [19] Aggressor ©   (31.05.06 16:02)
Такое ощущение, что твоя программа на Делфи - это оболочка для запускания макросов. Мне кажется - это несколько неоптимально, так сказать. Не находишь?


 
Aggressor ©   (2006-06-01 17:06) [22]

2 sniknik ©   (31.05.06 16:06) [20] :

> а при "убистве" + создании (с тем же именем естественно)
> исправленного варианта, что, придется?

Не придется, НО: это равносильно созданию его заново, а это можно сделать и проще. Тем более что я по-прежнему не знаю, как убить и создать :)

2 Sergey13 ©   (31.05.06 16:10) [21] :
В этом случае так и есть. Потому что отчет делается сначала с помощью запуска SQL к базе SyBase, потом полученный текстовый файл загоняется в Access, а из данных Access"а (только что загруженных и прошлых периодов) экселевский файл тянет нужные в форму отчета (с помощью пользовательских функций через DAO 3.6). Объеденить эту компанию в некое подобие работающего автоматически отчета мне поможет Delphi.


 
Aggressor ©   (2006-06-01 17:41) [23]

Разобрался с удалением запроса. Если кому-то интересно:
<OleObject>.DoCmd.DeleteObject(acQuery)
Сейчас разбираюсь с созданием заново...


 
sniknik ©   (2006-06-01 18:16) [24]

> <OleObject>.DoCmd.DeleteObject(acQuery)
нда... век живи век учись... ;), ты чего его через access удаляеш? а зачем тебе тогда ADO? запрос DROP VIEW xxx, и проще и работать будет не только для аксесса в режиме сервера автоматизации (создание CREATE ...).

кстати если ты тянеш за собой access то вполне возможно у него есть методы получить уже расшифрованный запрос, надо только найти.
вернее не надо, но раз ты внего так "уперся" и жить без него не можеш... ;о)


 
Aggressor ©   (2006-06-02 10:26) [25]

Тяну access для того, чтобы запускать огромное кол-во сохраненных там запросов/вьюх через DoCmd.OpenQuery().
Кстати, проблему я все-таки решил. Не в лоб, но решил. Чтобы не пытаться модифицировать запрос/вьюху и изменять там дату, я создал таблицу из одного поля с одной записью типа дата, а потом с пом. DoCmd.RunSQL апдейчу это самое единственное поле на нужную мне дату без условия, а запрос завязываю на эту таблицу. Все работает :)


 
sniknik ©   (2006-06-02 11:08) [26]

> Тяну access для того, чтобы запускать огромное кол-во сохраненных там запросов/вьюх через DoCmd.OpenQuery().
???
"процедуры" "запускаются" -> EXEC Proc Par1, ... также можно выполнить параметризованную вьюху.
стандартно вьюхи "запускаются" SELECT * FROM View
без всяких access-ов.

> Кстати, проблему я все-таки решил. .... Все работает :)
фактически сделал параметр "через задницу"... чего мешало сделать его "по правильному"? (не понимаю, вроде говорил там у тебя неменяемое чтото, только запросом можно "регурировать", а тут оказывается меняется все... сам и пишеш. т.е. вообще все...)


 
saxon   (2006-06-02 11:16) [27]


> sniknik ©   (02.06.06 11:08) [26]


да уж .... а еще пару дней назад про это говрили.



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

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.042 c
3-1148979455
Still Swamp
2006-05-30 12:57
2006.08.06
Поделитесь заголовочным файлом для FireBird Embeded


8-1139581971
sally
2006-02-10 17:32
2006.08.06
Сохранение картинки в XML файл


4-1145254631
Brother
2006-04-17 10:17
2006.08.06
Иконки рабочего стола


2-1153123382
ksa2002
2006-07-17 12:03
2006.08.06
Редактирование DBGrid


1-1150958318
Maxim_82
2006-06-22 10:38
2006.08.06
PlayList с помощью ListBox а