Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
2-1152889248
Megabyte
2006-07-14 19:00
2006.08.06
Компонент ClientDataSet


4-1145147097
Volf_555
2006-04-16 04:24
2006.08.06
Как изменять значок программы в трэи по необходимости?!


2-1151795588
SUN_ALF
2006-07-02 03:13
2006.08.06
Перехват и остановка только что запущенного процесса


2-1153131002
Квэнди
2006-07-17 14:10
2006.08.06
Преобразование даты в Posix формат


15-1152184451
Gero
2006-07-06 15:14
2006.08.06
Работал ли кто с Active Accessibility?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский