AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 12.05.2006, 11:27   #1  
Goldy ist offline
Goldy
Участник
 
29 / 15 (1) ++
Registriert seit: 27.04.2006
Переменная в select
Здравствуйте вам дамы и господа!!!!!!!!
В сиквеле есть такая возможность - указывать переменную в селекте например
declare @s varchar(10)

set @s ='ВОВан'
select @s, field1,field2
from table1

Вот есть огромная потребность указать вот так же переменную в селекте аксапты,
но в лоб это сделать не получается.
Может кто знает как это сделать либо напрямую либо как то в обход.
способ вставить с пустым полем, а потом проапдейтить пустое не подходит, так как режим многопользовательский и кто то может влезть.
Жду ответа как кто то там лета
Спасибо
Alt 12.05.2006, 11:37   #2  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
А зачем вам что-то апдейтить? Вы получаете данные в табличную переменную и можете изменить поле в ней без записи в б/д.
Что-то типа
X++:
while select from MyTable
{
    MyTable.MyField = MyValue;
    // что-то делаете с MyTable
}
__________________
Axapta v.3.0 sp5 kr2
Alt 12.05.2006, 11:56   #3  
Goldy ist offline
Goldy
Участник
 
29 / 15 (1) ++
Registriert seit: 27.04.2006
не совсем подходит данный способ, так как в данном случае идет обработка по одной записи, чего хотелось бы избежать, дело в том что используется там конструкция групповой вставки
insert_recordset table1(...)
select ....
Alt 12.05.2006, 12:07   #4  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Может этом случае будет проще воспользоваться прямым запросом на сервер (insert into ... select from)?
__________________
Axapta v.3.0 sp5 kr2
Alt 12.05.2006, 12:09   #5  
Recoilme ist offline
Recoilme
злыдень
Benutzerbild von Recoilme
Злыдни
 
895 / 192 (8) ++++++
Registriert seit: 18.06.2003
Через АДО наверно только так можно извратиться
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Alt 12.05.2006, 12:28   #6  
Goldy ist offline
Goldy
Участник
 
29 / 15 (1) ++
Registriert seit: 27.04.2006
через адо и через сиквел не катит потому что RECId автоматически не сгенериться а треба чтобы было
Alt 12.05.2006, 12:33   #7  
Recoilme ist offline
Recoilme
злыдень
Benutzerbild von Recoilme
Злыдни
 
895 / 192 (8) ++++++
Registriert seit: 18.06.2003
упс.. А можете скинуть условие задачки? Может просто лень имена полей перечислить?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Alt 12.05.2006, 12:33   #8  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Можно и ч/з Connection, но тут встает вопрос - как заполнять RecID?
__________________
Axapta v.3.0 sp5 kr2
Alt 12.05.2006, 12:38   #9  
Recoilme ist offline
Recoilme
злыдень
Benutzerbild von Recoilme
Злыдни
 
895 / 192 (8) ++++++
Registriert seit: 18.06.2003
Первый раз вижу вопрос от AndyD, наверно риторический
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Alt 12.05.2006, 12:38   #10  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von Goldy
через адо и через сиквел не катит потому что RECId автоматически не сгенериться а треба чтобы было
Ну вставьте нормально в аксе, а потом через адо или через сиквел сделайте апдейт нужного поля
Alt 12.05.2006, 12:44   #11  
Goldy ist offline
Goldy
Участник
 
29 / 15 (1) ++
Registriert seit: 27.04.2006
через апдейт не катит, так как это поле будет учавствовать в ссылочной целостности и если в него что то левое проскочит то будут нарушены данные сильно
Еще если есть мысли пожалуйста не стесняйтесь и всем помогающим спасибо
Alt 12.05.2006, 12:48   #12  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von Goldy
через апдейт не катит, так как это поле будет учавствовать в ссылочной целостности и если в него что то левое проскочит то будут нарушены данные сильно
не надо в него левое пихать, поставьте общее нормальное допустимое значение - одно на всех.
А о какой ссылочной целостности речь? У вас какие-то свои триггеры и констрэйнты в сиквеле включены?
Alt 12.05.2006, 12:53   #13  
Goldy ist offline
Goldy
Участник
 
29 / 15 (1) ++
Registriert seit: 27.04.2006
Ссылочнось логическая а не физическая
по связям нужное мне поле никак не подпихнуть по этому и есть желание как то впихнуть нужного мне поля через переменную
Alt 12.05.2006, 12:55   #14  
Recoilme ist offline
Recoilme
злыдень
Benutzerbild von Recoilme
Злыдни
 
895 / 192 (8) ++++++
Registriert seit: 18.06.2003
т.е. заинсертить все махом, а потом одним апдэйтрекрдсетом в одной транзакции всё проапдэйтить тоже не катит?!?
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Alt 12.05.2006, 12:59   #15  
denny ist offline
denny
Участник
 
93 / 29 (1) +++
Registriert seit: 16.11.2003
Ort: Novosibirsk
Не уверен, что понял условия задачи, но можно попробовать через макросы. (Пример - макрос InventDimJoin). На каком этапе становится известным значение переменной?
Alt 12.05.2006, 13:00   #16  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von Recoilme
т.е. заинсертить все махом, а потом одним апдэйтрекрдсетом в одной транзакции всё проапдэйтить тоже не катит?!?
я вот тоже не очень понимаю, почему не катит...
Zitat:
Zitat von Goldy
Ссылочнось логическая а не физическая
Дык Ваша логическая ссылочность нарушится только на время транзакции. Думаю, что невооруженный глаз этого временного нарушения просто не заметит
Alt 12.05.2006, 13:19   #17  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
У меня тут мысль пришла - использовать промежуточную таблицу для занесения таких констант. Затем в insert_recordset делать join этой таблицы с основной
Т.е. что-то типа этого
X++:
static void Job112(Args _args)
{

    Table20 table20;
    Table20 table20_;
    table19 table19;
    table21 table21;
    ;
    ttsbegin;
    table20.initValue();
    table20.field1 = 1000;
    table20.insert();

    insert_recordset table19 (field1, field2)
    select field1 from table21
    join field1 from table20_ where table20_.recId == table20.recId;
    table20.delete();
    ttscommit;
}
__________________
Axapta v.3.0 sp5 kr2
This post has been rated by: Goldy (1), alman (0).
Alt 12.05.2006, 13:26   #18  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von AndyD
У меня тут мысль пришла - использовать промежуточную таблицу для занесения таких констант.
Ну, кстати, да.
Zitat:
Zitat von Goldy
через адо и через сиквел не катит потому что RECId автоматически не сгенериться
можно попробовать погенерить RecId самостоятельно, вот ссылка в помошь: Вставка строк в таблицы Аксапты сторонними средствами
Alt 12.05.2006, 13:29   #19  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Обычно это делается через while select:
X++:
CustTable custTable;
MyTable   myTable;
;
while select custTable
{
    myTable.clear();
    myTable.fieldForConst = MyConstant;
    myTable.AccountNum = custTable.AccountNum;
    .....
    myTable.insert();
}
Однако Аксапта в случае массовой вставки (как в Вашем случае) предполагает использования класса \System Documentation\Classes\RecordInsertList. С ним также делается все в цикле:
X++:
RecordInsertList ril;
CustTable          custTable;
MyTable            myTable;
;
ril = new RecordInsertList(tablenum(MyTable));
while select custTable
{
    myTable.clear();
    myTable.fieldForConst = MyConstant;
    myTable.AccountNum = custTable.AccountNum;
    .....
    ril.add(myTable);     
}
ril.insertDataBase();
В этом случае вы получите весьма шуструю вставку (по данным ребят, которые исследовали этот класс - по сравнению с предыдущим способом - раз в 10 быстрее, однако я лично не могу ни подтвердить ни опровергнуть это утверждение. Могу сказать лишь что автором утверждения является г-н db )
__________________
Возможно сделать все. Вопрос времени

Geändert von sukhanchik (12.05.2006 um 13:33 Uhr)
Alt 12.05.2006, 13:38   #20  
Goldy ist offline
Goldy
Участник
 
29 / 15 (1) ++
Registriert seit: 27.04.2006
Ай AndyD ай маладца
дествительно через вспомогательную таблицу
спасибо
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2 while select или join? _scorp_ DAX: Программирование 9 23.01.2009 16:02
Разница NotInTTS и Found Logger DAX: База знаний и проекты 6 18.09.2008 12:35
gatesasbait: Reverse keyword on Select Statements Blog bot DAX Blogs 0 08.02.2008 00:10
Fred Shen: Always use recId to know if a select statement returns a record Blog bot DAX Blogs 0 28.10.2006 16:40
Вопрос про Demand Planner slava09 DAX: Функционал 4 25.09.2006 11:43
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 04:10 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.