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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.12.2005, 10:16   #1  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Проверка уникальности ItemDimIdx в InventSum
День добрый!

Как написать запрос который бы проверил уникальность индекса ItemDimIdx(ItemId и InventDimId) в InventSum, т.е. вывел неуникальные коммнации?

А то вылезает:

?Номенклатура 000045813
Невозможно выбрать запись в 'Запасы в наличии' ('InventSum') Номенклатура: 000045813.
База данных SQL обнаружила ошибку.
Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver][SQL Server]Index 'I_174ITEMDIMIDX' on table 'INVENTSUM' (specified in the FROM clause) does not exist.
Оператор SQL: SELECT A.ITEMID,A.POSTEDQTY,A.POSTEDVALUE,A.DEDUCTED,A.RECEIVED,A.RESERVPHYSICAL,A.RESERVORDERED,A.ONORDER,A.ORDERED,A.QUOTATIONISSUE,A.QUOTATIONRECEIPT,A.DEL_CONFIGID,A.INVENTDIMID,A.CLOSED,A.REGISTERED,A.PICKED,A.AVAILORDERED,A.AVAILPHYSICAL,A.PHYSICALVALUE,A.ARRIVED,A.PHYSICALINVENT,A.CLOSEDQTY,A.LASTUPDDATEPHYSICAL,A.LASTUPDDATEEXPECTED,A.POSTEDVALUESECCUR_RU,A.PHYSICALVALUESECCUR_RU,A.ITEMNAME,A.RECID FROM INVENTSUM A(INDEX(I_174ITEMDIMIDX) UPDLOCK) WHERE ((DATAAREAID=?) AND ((ITEMID=?) AND (INVENTDIMID=?))) OPTION(FAST 1)
Старый 06.12.2005, 10:30   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Выполни запрос в Query Analyzer'е
X++:
select DataAreaId, ItemId, InventDimId
from InventSum
group by DataAreaId, ItemId, InventDimId
having count(*) > 1
__________________
Axapta v.3.0 sp5 kr2
Старый 06.12.2005, 10:32   #3  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Цитата:
Сообщение от DreamCreator
Index 'I_174ITEMDIMIDX' on table 'INVENTSUM' (specified in the FROM clause) does not exist
А при чём здесь уникальность индекса? Запустите переиндексацию таблицы
__________________
С уважением, Игорь Ласийчук.
Старый 06.12.2005, 10:32   #4  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
а при чем тут уникальность-неуникальность, если
Цитата:
SQL ServerIndex 'I_174ITEMDIMIDX' on table 'INVENTSUM' (specified in the FROM clause) does not exist
?
Вам синхронизация нужна
__________________
-ТСЯ или -ТЬСЯ ?
Старый 06.12.2005, 10:39   #5  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от AndyD
Выполни запрос в Query Analyzer'е
X++:
select DataAreaId, ItemId, InventDimId
from InventSum
group by DataAreaId, ItemId, InventDimId
having count(*) > 1
Ругается на having! ( Переменная having не объявлена.)
Цитата:
Сообщение от Garic
А при чём здесь уникальность индекса? Запустите переиндексацию таблицы
Реиндексация средствами Аксапты проходит успешно!
Цитата:
Сообщение от Vadik
?
Вам синхронизация нужна
Не проходит -- вылезает сообщение об ошибке (привел в первом посте)!
Старый 06.12.2005, 10:42   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от DreamCreator
Ругается на having! ( Переменная having не объявлена.)
В Query Analyzer'е?
__________________
Axapta v.3.0 sp5 kr2
Старый 06.12.2005, 10:46   #7  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от AndyD
В Query Analyzer'е?
Извини -- написал в Аксапте!

Нет доступа к Query Analizer-у.
Запущу из Аксапты.
Старый 06.12.2005, 10:48   #8  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Попробуй ч/з Connection
__________________
Axapta v.3.0 sp5 kr2
Старый 06.12.2005, 10:55   #9  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Может пригодится..

PHP код:
   InventSum   inventSum;
    
Connection  conn = new Connection();
    
Statement   stmt conn.createStatement();
    
ResultSet   resultSet;
    
QueryText   queryText;
    ;
    
queryText = @" select DataAreaId, ItemId, InventDimId
                        from InventSum
                            group by DataAreaId, ItemId, InventDimId
                                having count(RecId) > 1"
;
    
resultSet stmt.executeQuery(queryText);
    while (
resultSet.next())
    {
        print 
resultSet.getString(2);
        print 
resultSet.getString(3);
        
pause;
    } 
Дублирования нет.. странно.. а синхронизировать не дает..
Старый 06.12.2005, 11:01   #10  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
У вас разошёлся SqlDictionary и БД.

Можно попробовать удалить их из таблички SQlDictionary и после етого синронизировать.
Не уверен
__________________
С уважением, Игорь Ласийчук.
Старый 06.12.2005, 11:16   #11  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Исправил 11.18
Помогла проверка/синхронизация, InventSum после удаления записей в SQLDictionary синхронизировалась.

Возвращаюсь к первой проблеме.

Спасибо!

________________________________________

Уже поправил:

После удаления всех полей для InventSum (TableId = 174), и попытке синхронизировать (другая база, другая апликуха, до удаления работало нормально)

вылезло вот такое сообщение

Синхронизация
Невозможно выполнить команду языка определения данных в '' ('').
База данных SQL обнаружила ошибку.
Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver][SQL Server]There is already an object named 'INVENTSUM' in the database.
Оператор SQL: CREATE TABLE INVENTSUM (ITEMID VARCHAR(20) NOT NULL DEFAULT '' ,...,POSTEDVALUESECCUR_RU NUMERIC(28,12) NOT NULL DEFAULT 0 ,PHYSICALVALUESECCUR_RU NUMERIC(28,12) NOT NULL DEFAULT 0 ,ITEMNAME VARCHAR(100) NOT NULL DEFAULT '' ,DATAAREAID VARCHAR(3) NOT NULL DEFAULT 'dat' ,RECID INT NOT NULL CHECK (RECID <> 0) )
Ошибки во время синхронизации базы SQL со словарем данных системы.
Операция закончилась неудачно.
Синхронизация 1 таблиц закончилась неудачно

Последний раз редактировалось DreamCreator; 06.12.2005 в 11:47.
Старый 06.12.2005, 11:21   #12  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Упс. Я имел в виду удалить индексы оттуда. Но они оказывается не там живут. Щас покопаю.
Так вы удалили считайте что всю табличку и оно пытается по новой создать.
__________________
С уважением, Игорь Ласийчук.
Старый 06.12.2005, 11:23   #13  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Garic
Упс. Я имел в виду удалить индексы оттуда. Но они оказывается не там живут. Щас покопаю.
Так вы удалили считайте что всю табличку и оно пытается по новой создать.
InventSum синхронизировался -- в SQLDictionary по новой появились записи.
Сейчас на проблемной базе поэксперементирую!
Старый 06.12.2005, 11:42   #14  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Проделал все на проблемной базе -- SqlDictionary пересоздался, проблема с InventSum осталась...
_______________________________________________________

Может пригодится, удаление всех записей по InventSum из SQLDictionary
PHP код:
static void updateSQLDictionary(Args _args)
{
    
Connection conn = new Connection();
    
Statement stmt conn.createStatement();
    
QueryText queryText;
    ;
    
queryText = @"use testBase
                    delete from SQLDictionary
                        where tableId = '174'"
;
    
stmt.executeUpdate(queryText);

_______________________________________________________

База тестовая, поэтому restore из бэкапа рабочей может решить проблему.. но случись такое на рабочей..
Старый 06.12.2005, 12:29   #15  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от DreamCreator
База тестовая, поэтому restore из бэкапа рабочей может решить проблему.. но случись такое на рабочей..
на рабочей все же лучше сначала "проверку/синхронизацию" сделать
во избежание, так сказать..
__________________
-ТСЯ или -ТЬСЯ ?
Старый 06.12.2005, 17:23   #16  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
На данный момент ситуация такая

Через Enterprise Manager попытался удалить проблемный индекс - не дает т.к. primary индекс, причем через DesignTable не видно что есть primary-key. В Аксапте соответственно primary key убрал -- все равно, удалить индекс не дает. Будем восстанавливать из бэкапа!

Спасибо за поддержку!
Теги
inventsum

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
RecordSet у inventSum CasperSKY DAX: Программирование 3 21.03.2008 15:52
Ошибка при разноске складских движений Starling DAX: Администрирование 9 12.10.2007 14:21
Можно ли чистить InventSum? DreamCreator DAX: Программирование 19 05.12.2006 15:38
Проверка целостности coja DAX: Администрирование 6 06.09.2006 13:14
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

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

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

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