Форум: "Базы";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизКак программно изменить текст запроса 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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.012 c