|  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 | 
| начальный | 
			
			Подожду, Апну и пойду зводить новую ветку
		 | 
|  | 
|  | 
| 
 |