30.11.2005, 17:00 | #1 |
Участник
|
Доступ к VIEW SQL SERVER из Axapta
Добрый день
Не могу получить доступ к VIEW SQL SERVER из Axapta Пишу Statement st; OdbcConnection Con; ResultSet resultSet; str ServerName; str DatabaseName; str User; str Password; str str_st; str TableName; LoginProperty LP = new LoginProperty(); ; ServerName =***; DatabaseName =***; User =*** Password =***; TableName =***; LP.setDatabase(DatabaseName); LP.setServer(ServerName); LP.setUsername(User); LP.setPassword(Password); Con = new OdbcConnection(LP); // str_st ="select * from (" + TableName + ")"; str_st =TableName; resultSet = st.executeQuery(str_st); while (resultSet.next()) { ***** , где TableName – имя VIEW в SQL SERVER. Программа доходит до while (resultSet.next()) и выдает ошибку [Microsoft][ODBC SQL Server Driver][SQL Server]The request for procedure 'TpS_ItemTurnOverOnDateN' failed because 'TpS_ItemTurnOverOnDateN' is a view object. Причем если в str_st пишешь запрос к таблицам SQL SERVER , то все работает. В чем ошибка ? |
|
30.11.2005, 17:18 | #2 |
Участник
|
Укажите имя View без круглых скобок
str_st ="select * from " + TableName;
__________________
Axapta v.3.0 sp5 kr2 |
|
30.11.2005, 17:27 | #3 |
Участник
|
Я уж и в круглых и в квадратных скобках пробывал и без них.
Та же самая ошибка [Microsoft][ODBC SQL Server Driver][SQL Server]The request for procedure 'TpS_ItemTurnOverOnDateN' failed because 'TpS_ItemTurnOverOnDateN' is a view object. |
|
30.11.2005, 17:33 | #4 |
Участник
|
View - это виртуальная таблица и правила ее использования такие-же как для обычных таблиц. Т.е. выборка осуществляется ч/з SELECT.
Надо заменить кусок кода // str_st ="select * from (" + TableName + ")"; str_st =TableName; на приведенный мной выше
__________________
Axapta v.3.0 sp5 kr2 |
|
30.11.2005, 17:36 | #5 |
Участник
|
ВСЕ РАВНО. Та же ошибка
|
|
30.11.2005, 17:43 | #6 |
Участник
|
Попробуйте свой запрос выполнить в Query Analyzer
__________________
Axapta v.3.0 sp5 kr2 |
|
30.11.2005, 17:50 | #7 |
Участник
|
ВЫПОЛНЯЕТСЯ
Да, в примере, я не скопировал st = con.createStatement(); после Con = new OdbcConnection(LP); Попробуйте повторить ситуацию, вот JOB Statement st; OdbcConnection Con; ResultSet resultSet; str ServerName; str DatabaseName; str User; str Password; str str_st; str TableName; LoginProperty LP = new LoginProperty(); ; ServerName ="***"; DatabaseName ="***"; User ="sa"; Password =""; TableName ="select * from queryName"; //TableName = "BOMTABLE"; // TableName ="select * from BOMTABLE"; LP.setDatabase(DatabaseName); LP.setServer(ServerName); LP.setUsername(User); LP.setPassword(Password); Con = new OdbcConnection(LP); st = con.createStatement(); str_st =TableName; resultSet = st.executeQuery(str_st); while (resultSet.next()) { info("работает"); } , где queryName - имя запроса |
|
30.11.2005, 18:02 | #8 |
Участник
|
А что это такое
Цитата:
queryName - имя запроса
__________________
Axapta v.3.0 sp5 kr2 |
|
30.11.2005, 18:08 | #9 |
Участник
|
да, имя запроса TpS_ItemTurnOverOnDateN, просто я назвал запрос queryName абстрактно
|
|
30.11.2005, 18:37 | #10 |
Участник
|
Вышеприведенный код выполняется нормально.
Кстати, обратите внимание, что в сообщении об ошибке так же указывается оператор SQL отправляемый на сервер.
__________________
Axapta v.3.0 sp5 kr2 |
|
30.11.2005, 19:20 | #11 |
Участник
|
Нашел причину ошибки
при выполнении кода, встроенного в класс, выдавалась ошибка [Microsoft][ODBC SQL Server Driver][SQL Server]The request for procedure 'TpS_ItemTurnOverOnDateN' failed because 'TpS_ItemTurnOverOnDateN' is a view object. Когда делал тоже самое в job аксапта стала ругаться на неправильное представление даты в запросе. Убрал условие на дату в запросе - все заработало. Теперь понятно, где собака зарыта. С вашей помощью. Спасибо. |
|
02.12.2005, 10:37 | #12 |
начальный
|
Привет Всем!!!
Написал Job-ик для того что бы добраться к другой базе под SQL, например, Northwind и попробовать закачать из таблицы, например, Orders ,ну например, в таблицу уже в Axapte SalesTable.
Но пока не могу даже добраться до Northwind. Прошу помощи знающих людей. static void SqlAccess(Args _args) { Statement st; OdbcConnection Con; ResultSet resultSet; str ServerName; str DatabaseName; str User; str Password; str str_st; //str_st ="select * from " + TableName; str TableName; LoginProperty LP = new LoginProperty(); ; ServerName = "Local"; DatabaseName = "Northwind"; User = "sa"; Password =""; //TableName = "Orders "; // ="select * from queryName"; // TableName ="select * from BOMTABLE"; LP.setDatabase(DatabaseName); LP.setServer(ServerName); LP.setUsername(User); LP.setPassword(Password); Con = new OdbcConnection(LP); st = con.createStatement(); //str_st ="select * from " + TableName + ""; str_st ="select * from Orders "; //str_st =TableName; resultSet = st.executeQuery(str_st); print resultSet; pause; //while (resultSet.next()) //{ ////info("OK"); //} } |
|
02.12.2005, 11:08 | #13 |
начальный
|
Кто нить подскажет? Или новую ветку заводить.
|
|
02.12.2005, 11:19 | #14 |
начальный
|
Подожду, Апну и пойду зводить новую ветку
|
|
|
|