|  31.05.2007, 15:56 | #1 | 
| Участник | А есть ли документация о том, как подключаться к другим базам? 
			
			В стандартной аксапте не нашла описания того, как можно подключаться и манипулировать данными на другом сервере SQL (подключаться не Аксапте из Аксапты). Есть ли документация по описанию методов или прочего?
		 | 
|  | 
|  31.05.2007, 16:04 | #2 | 
| Moderator | 
			
			Например, можно глумиться посредством ODBC или ADO: * класс Connection (System Documentation \Classes \Connection) и его расширения: OdbcConnection, UserConnection * классы CCADO* | 
|  | 
|  31.05.2007, 16:04 | #3 | 
| Участник | 
			
			Например создать соединение через ODBC. И делать запрос. Ниже пример классика. В котором выберается какая база и делается запрос. Какая-то простая выборка.
		 | 
|  | 
|  31.05.2007, 16:07 | #4 | 
| SAP | Цитата: 
		
			В стандартной аксапте не нашла описания того, как можно подключаться и манипулировать данными на другом сервере SQL (подключаться не Аксапте из Аксапты). Есть ли документация по описанию методов или прочего?
		
	 | 
|  | 
|  31.05.2007, 16:11 | #5 | 
| SAP | X++: CCADOConnection connection = new CCADOConnection(); CCADOCommand command = new CCADOCommand(); CCADORecordSet recordSet; CCADORecordSet recordSetLine; CCADOFields fields; CCADOFields fieldsLine; ; try { connection.open("Строка подключения"); command.activeConnection(connection); command.commandText("SQL операторы"); recordSet = command.execute(); while (!recordSet.EOF()) { fields = recordSet.fields(); info(fields.itemIdx(0).value()); recordSet.moveNext(); } } catch(Exception::Error) { throw error("Обработка прекращена."); } | 
|  | 
|  31.05.2007, 17:37 | #6 | 
| Участник | 
			
			Я воспользовалась и этим примером. SQL мониторинг + прямой запрос к SQL Все хорошо, но в нем мне надо указывать sa и пароль к нему, а как сделать так , чтоб он реагировал на account win, те. в зависимости от пользователя, вошедшего сеть. | 
|  | 
|  31.05.2007, 17:43 | #7 | 
| SAP | Цитата: 
		
			Все хорошо, но в нем мне надо указывать sa и пароль к нему, а как сделать так , чтоб он реагировал на account win, те. в зависимости от пользователя, вошедшего сеть.
		
	 | 
|  | 
|  31.05.2007, 17:47 | #8 | 
| Участник | 
			
			я ограничу доступ к формированию отчета, использующего подключение на уровне Аксапта, вот и все.
		 | 
|  | 
|  31.05.2007, 17:50 | #9 | 
| SAP | Цитата: 
		
			я ограничу доступ к формированию отчета, использующего подключение на уровне Аксапта, вот и все.
		
	 Цитата: 
		
			Все хорошо, но в нем мне надо указывать sa и пароль к нему, а как сделать так , чтоб он реагировал на account win, те. в зависимости от пользователя, вошедшего сеть.
		
	 | 
|  | 
|  31.05.2007, 17:51 | #10 | 
| Участник | 
			
			А вообще идея следующая, есть 20 баз.  Есть 3 пользователя. Эти пользователи должны получать смешанный отчет из данных аксапта и 20баз. Как тогда правильно это дело реализовать? Просто настроить источник для 20 баз - это много. А скоро еще больше будет. (И потом я плохо понимаю, где тогда надо odbc настраивать, на сервере каждой базы, на аос, аха или где?) Последний раз редактировалось Arahnid; 31.05.2007 в 17:53. | 
|  | 
|  31.05.2007, 18:04 | #11 | 
| SAP | 
			
			Ну помойму в форме настройки подключений можно ясно указать windows аунтификация, получив строку подключения вам останится в ней менять только названия серверов X++: COM DataLinks = new COM("DataLinks"); // вызываем окно настройки OLEDB-соединения Connection.ConnectionString(strConnectionString); DataLinks.PromptEdit(Conn); | 
|  | 
|  31.05.2007, 18:10 | #12 | 
| Участник | X++: {
    ODBCConnection odbc ;
    Statement      statement;
    ResultSet      res;
    str            queryText;
    FolioConnectionParameters_NV    folioConnectionParameters   =   FolioConnectionParameters_NV::find();
    LoginProperty                   loginProperty;
    ;
    loginProperty    = new LoginProperty();
    loginProperty.setUsername(folioConnectionParameters.UserName);
    loginProperty.setPassword(folioConnectionParameters.UserPassword);
    loginProperty.setServer  (folioConnectionParameters.ServerName);
    loginProperty.setDatabase(folioConnectionParameters.Database);
    odbc =  new ODBCConnection(loginProperty);
    if(odbc)
    {
        statement       = odbc.createStatement();
        queryText   = strfmt("SELECT * FROM SCL_ARTC");
        odbc.ttsbegin();
        res = statement.executeQuery(queryText);
        res.next();
        info(strfmt("%1 %2", res.getString(1), res.getString(2)));
        odbc.ttscommit();
    }
} | 
|  | 
|  31.05.2007, 18:11 | #13 | 
| злыдень | Цитата: 
		
			Сообщение от Arahnid
			   А вообще идея следующая, есть 20 баз.  Есть 3 пользователя. Эти пользователи должны получать смешанный отчет из данных аксапта и 20баз. Как тогда правильно это дело реализовать? Просто настроить источник для 20 баз - это много. А скоро еще больше будет. (И потом я плохо понимаю, где тогда надо odbc настраивать, на сервере каждой базы, на аос, аха или где?) 
				__________________ Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ | 
|  | 
|  31.05.2007, 18:16 | #14 | 
| Участник | 
			
			win аутентификацию нада указать в на SQL сервере
		 | 
|  | 
|  31.05.2007, 18:19 | #15 | 
| SAP | Цитата: 
		
			используя этот пример, как в него вписать win аутентификацию.
		
	 | 
|  | 
|  31.05.2007, 18:26 | #16 | 
| Участник | 
			
			Тогда такой вопрос, уже более точный. 20 баз на разных серверах. Где надо прописать ODBC, на каком сервере? Какие настройки там лучше сделать, если в СКУЛЬ программе каждый пользователь входит под своим имененем и на это имя заведен пользователь в базе SQL\..\Logins? | 
|  |