AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.02.2002, 15:45   #1  
ddadream is offline
ddadream
Участник
Аватар для ddadream
 
130 / 17 (1) ++
Регистрация: 30.11.2001
Адрес: moscow
Как выполнить запрос созданный в переменной
Например я хочу сделать такое:
в какой либо переменной я создаю запрос типа

str s;
s = "select * from inventtable where itemid = 'sss' "
вот, как мне его теперь выполнить.

а нужно мне просто способ , которым я бы мог бы создавать динамический запрос.
т.е. менять имя таблицы, т.е. выборку делать из таблиц в моем списке.

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

вот
Старый 22.02.2002, 19:42   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Штатное средство построения динамического запроса - семейство классов QueryBuild*.
Это удобнее, чем сперва генерировать строку с выражением, а потом его разбирать.

если уж очень хочется исполнять строку как код, то
посмотри на класс Statement
__________________
полезное на axForum, github, vk, coub.
Старый 26.02.2002, 06:22   #3  
Andrew Besedin is offline
Andrew Besedin
Участник
 
119 / 15 (1) ++
Регистрация: 25.01.2002
Привет, Ddadream!
Выполнить такой запрос, который ты написал, действительно нелегко...
Но есть такое средство - семейство классов Dictionary (это самый главный дед этого семейства). Там есть и DictTable, и DictField... да и чего там только нет. То есть ты можешь организовать цикл по всем таблицам (или, скажем, по всем BaseEnums)Аксапты довольно просто. А чтобы выполнить селект, попробуй такой код:

Common common;
DictTable dictTable;
Counter Counter;
;

dictTable = new DictTable(tablenum(inventTable));// Ну это так, например...
common = dictTable.makeRecord();
select count(RecId) from common;
Counter = common.RecId;
__________________
Успехов!
Андрей Беседин
Старый 26.02.2002, 12:41   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Не, Anrew.
Это еще извратнее, чем через Statement.

Посмотрите на класс SysDatabaseList
метод New:

...
if (sqlSystem::databaseBackendId() == databaseid::MS_SQL_SERVER)
resultSet = stmt.executeQuery('/*SP*/ SELECT NAME FROM [MASTER]..[SYSDATABASES] ORDER BY NAME');
if (sqlSystem::databaseBackendId() == databaseid::ORACLE)
resultSet = stmt.executeQuery('SELECT USERNAME FROM ALL_USERS ORDER BY USERNAME');
...

Вы уверены, что хотите заниматься особенностями SQL'ей?
А кроме того, Акспату запускали на MySQL....
__________________
полезное на axForum, github, vk, coub.
Старый 26.02.2002, 12:48   #5  
ddadream is offline
ddadream
Участник
Аватар для ddadream
 
130 / 17 (1) ++
Регистрация: 30.11.2001
Адрес: moscow
Ага, ну вот есть поле для деятельности.
ну вообще я так думаю что это было бы просто на VC++ написать, к тому же заготовки уже есть.
ну все равно помучаюсь если не получится, что ж.
сделаю по другому.

А что действительно правда что на MySQL запускали?

обязательно попробую. интересно.
Старый 26.02.2002, 12:58   #6  
Andrew Besedin is offline
Andrew Besedin
Участник
 
119 / 15 (1) ++
Регистрация: 25.01.2002
Здравствуйте, Сергей!
Ну, насчет извращений - это уж у каждого свое, сорри
Скорее всего, мы по-разному поняли задачу Дdadream'а. С моей точки зрения, самое главное для него - это получить СПИСОК объектов системы. А с Вашей - это ВЫПОЛНИТЬ запрос. Есть разница?
__________________
Успехов!
Андрей Беседин
Старый 26.02.2002, 13:29   #7  
ddadream is offline
ddadream
Участник
Аватар для ddadream
 
130 / 17 (1) ++
Регистрация: 30.11.2001
Адрес: moscow
Ну вообщем уточню. что бы было всем понятно.
список таблиц и полей я уже получил, теперь осталось только выполнить запрос и все.

как вытащить список я нашел в форме SysSqlAdmin.
Старый 26.02.2002, 13:43   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Хм... Наверное.

Цитата:
создаю запрос типа...
а нужно ... динамический запрос.


Цитата:
а вообще делаю ... поиск техта по всем таблицам и полям...
Я бы вообще не парился бы в Аксапте над этим, а попытался бы использовать станадртную службу полнотекстного поиска в MS SQL.

а вообще Может я ошибаюсь...
но "по всем ... полям" - это включая поля без индексов?
ddadream, вы оценили нагрузку на сервер и сеть, которую будет генерить ТАКОЙ запрос из клиентского приложения?

Сама постановка вопроса мне не кажется правильной. Может в консерватории подправить?
__________________
полезное на axForum, github, vk, coub.
Старый 26.02.2002, 13:47   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Насчет MySQL'я.
По крайней мере, ответы на вопросы по MySQL'ю были на сайте damgaard'а.
Теперь убрали.
__________________
полезное на axForum, github, vk, coub.
Старый 26.02.2002, 16:56   #10  
ddadream is offline
ddadream
Участник
Аватар для ddadream
 
130 / 17 (1) ++
Регистрация: 30.11.2001
Адрес: moscow
А не подскажите ли мне случайно, где это в SQLe находится такой вот хитрый поиск?

я это решил сделать не потому что мне делать вроде как нечего, а хотелось бы отслеживать кое какие изменения в базе.
а в MS SQL я просто не смог найти этого...

по всем полям, это имелось ввиду именно по всем полям, конечно же и без индексов.


потому что индексы там имеют 10-20% полей от их общего количества.
Старый 26.02.2002, 18:23   #11  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Может эта stored процедура поможет?
(смотри приаттаченный файлик)
В свое время, когда возникла необходимость узнать какое значение аксапты куда разбежалось по разным таблицам пришлось накидать нечто подобное.
Запускается на SQL-Server, выполняется в Query An-er'e.
Если чего-то не работает, то не обессудьте
<b>2ddadream</b>
А идея насчет поиска по всем таблицам системы очень даже неплоха. По крайней, на раннем этапе, даже эта простенькая процедура помогла приблизиться к пониманию работы системы.
В свободное время тоже попытаюсь реализовать подобное в Аксапте.
Вложения
Тип файла: txt searchprocedure.txt (3.5 Кб, 387 просмотров)
__________________
С уважением, Вячеслав.
Старый 26.02.2002, 19:02   #12  
ddadream is offline
ddadream
Участник
Аватар для ddadream
 
130 / 17 (1) ++
Регистрация: 30.11.2001
Адрес: moscow
Да вот это действительно помогло, да еще + на сервере выполняется и даже достаточно быстро.
Спасибо! Slava.
Старый 27.02.2002, 14:57   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано ddadream
А не подскажите ли мне случайно, где это в SQLe находится такой вот хитрый поиск?
fulltext search.

Цитата:
Изначально опубликовано ddadream
я это решил сделать не потому что мне делать вроде как нечего, а хотелось бы отслеживать кое какие изменения в базе.
а в MS SQL я просто не смог найти этого...
В MS SQL - Query Analyzer.
Можно и в Аксапте
Меню Сервис \ Параметры \ Закладка SQL
Мне кажется, что Query Analyzer удобнее.

Цитата:
Изначально опубликовано ddadream
по всем полям, это имелось ввиду именно по всем полям, конечно же и без индексов.
Хм... ну, вам с вашей модификацией и жить
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Невозможно выполнить команду языка определения данных в () iHomer13 DAX: Программирование 8 18.07.2008 10:56
выполнить запрос на 1С 8.1 NetBus DAX: Программирование 3 09.06.2008 18:31
Почему join запрос разбивается на подзапросы!? 3oppo DAX: Программирование 59 28.06.2007 11:52
Не работает запрос на нескольких компаниях Bega DAX: Программирование 3 16.09.2005 10:21
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:09.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.