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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2006, 10:44   #1  
zipo is offline
zipo
Участник
 
32 / 23 (1) +++
Регистрация: 16.05.2006
Таблицы аксапты и ключевые слова MSSQL
В общем-то давненько наткнулся на такую вот проблемку:
Аксапта позволяет создавать в АОТ таблицы у которых имена филдов совпадают с ключевыми словами БД. Такие как update, insert, close и т.д.
Создать, то позволяет, но вот синхронизироваться с БД не может, т.к. ошибочка синтаксиса выходит. Движок аксапты почему-то названия филдов в кавычки не берет.

Собственно когда в первый раз столкнулся с этой проблемой - создавал табличку сам и после не долгих раздумий просто изменил название поля. Но сейчас ситуация такая, что есть визар по созданию таблицы для пользователя аксапты и вот тут то нужно отслеживать все ити ключевые слова.
Поискал в аксапте по макросам но не нашел.
Может кто знает, есть ли в аксапте табличка в которох может хранится информация о ключевых словах БД. Так что бы можно было ее заюзать и не делать свой велосипед и собственно поддерживать его.
Старый 21.12.2006, 11:15   #2  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Таблица SQLSYSTEMVARIABLES строка KEYWORDS
Класс SqlDatabaseInit инициализит эту табличку, но только один раз при первом натравливании аксапты на базу
За это сообщение автора поблагодарили: kashperuk (2).
Старый 21.12.2006, 12:12   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
В общем-то данные из этой строки таблицы используются ядром Axapta'ы для разруливания таких ситуаций. Можно добавить нужные ключевые слова, тогда при создании полей будет добавляться префикс из стороки QUOTEPRE (по умолчанию без префикса) и суффикс из QUOTEPOST (по умолчанию суффикс подчеркивание "_").
Тут засада такая - размер этого поля 254 символа, соответственно не все ключевые слова можно включить (изменять его размер не пробовал)

Только не забудьте после добавления ключевых слов перезапустить AOS'ы
__________________
Axapta v.3.0 sp5 kr2
Старый 21.12.2006, 12:19   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Только это еще не все. Не пробуйте создавать поля или таблицы с именами, совпадающими с внутренними функциями типа TypeId. Такие поля (Table1.TypeId) кое-где будут работать, а кое-где не компилируются.
Старый 21.12.2006, 12:21   #5  
zipo is offline
zipo
Участник
 
32 / 23 (1) +++
Регистрация: 16.05.2006
Там похоже явно не все ключевые слова:
PROC,SUM,LINENO,OPEN,TRANSACTION,BY,PERCENT,PROCEDURE,CURRENT_DATE,CURRENT_TIME,CURRENT_USER,DUMMY,PERMANENT,PIPE

И есть ли способ из аксапты причитать таблицы которые лежать только в сервере БД не использую ADODB и подобного
Старый 21.12.2006, 12:26   #6  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
1. Не все
2. UserConnection, ResultSet
Старый 21.12.2006, 12:31   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Чтение этой таблицы вам не поможет (хотя посмотреть, как это делается можно в приведенном выше классе SqlDatabaseInit).
То, что в ней есть и так будет обрабатываться самой Axapta'ой, а для остального - создайте класс, в котором пропишите keywords из BOL'а для MS SQL (или создайте таблицу, где пропишите их. Для Oracle' можно воспользоваться вьюшкой V$RESERVED_WORDS) и возвращайте результат проверки
__________________
Axapta v.3.0 sp5 kr2
Старый 21.12.2006, 13:59   #8  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Цитата:
Сообщение от EVGL Посмотреть сообщение
Только это еще не все. Не пробуйте создавать поля или таблицы с именами, совпадающими с внутренними функциями типа TypeId. Такие поля (Table1.TypeId) кое-где будут работать, а кое-где не компилируются.
InventBuyerGroup.Group
__________________
С уважением, Вячеслав.
Старый 21.12.2006, 14:49   #9  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
а если вместо ковыряния системных таблиц перечитать
Developer's Best Practice Handbook \ Naming conventions ?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 21.12.2006, 16:30   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вадим, ты имеешь в виду
Цитата:
The reserved words are listed below the System Documentation node in the Application Object Tree
?
__________________
Axapta v.3.0 sp5 kr2
Старый 21.12.2006, 16:49   #11  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
чуть выше

Цитата:
General rules
Names must be logical and descriptive.
чуть ниже
Цитата:
Name structure
Where possible, application object names should be constructed hierarchically from three basic components:

{business area name} + {business area description} + {action performed (for classes) or type of contents (for tables)}

Examples:
CustInvoicePrintout
PriceDiscAdmCopy
PriceDiscAdmDelete
PriceDiscAdmSearch
PriceDiscAdmName
PriceDiscAdmTrans
если следовать этим принципам, на какую из зарезервированных инструкций можно наткнуться?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 21.12.2006, 20:16   #12  
zipo is offline
zipo
Участник
 
32 / 23 (1) +++
Регистрация: 16.05.2006
Напомню, что таблицы бутут создаваться из визарда обычными пользователями, которые понятия не имеют о бестпрактисах.
Старый 21.12.2006, 20:34   #13  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Ну и присваивайте автоматически префикс всем полям и названиям таблиц. Так будет их потом проще найти и вычистить.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Пересоздание таблицы при синхронизации Serg16 DAX: Администрирование 1 26.08.2009 13:55
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Кеширование средствами аксапты Logger DAX: Программирование 27 11.10.2007 14:40
Получение из поля Map кода поля реальной таблицы, к ней привязанной (Mappings) vey DAX: Функционал 5 16.03.2005 11:16
Как решить проблему с правами на вновь создаваемые записи таблицы. AY DAX: Прочие вопросы 4 02.10.2003 12:44
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:33.