Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Можно из под акса создать Источник данных ODBC
 
 автор: snipe   (13.02.2012 в 10:47)   личное сообщение
 
 

При соединении Акса с сервером SQL создается Источник данных ODBC
можно этот источник создать средствами VBA?
что бы не лазить Пуск - Настройка - Панель Управления - Администрирование - Источники данных (ODBC)

  Ответить  
 
 автор: Дядя Федор   (13.02.2012 в 11:01)   личное сообщение
22 Кб.
 
 

Почитай вложение. Может поможет. ->

  Ответить  
 
 автор: snipe   (13.02.2012 в 11:18)   личное сообщение
 
 

Спасибо - уже читаю

  Ответить  
 
 автор: osmor   (13.02.2012 в 11:16)   личное сообщение
 
 

Option Compare Database
 
Option Explicit
 
'Const ODBC_ADD_SYS_DSN = 1      'Add a user data source
Const ODBC_CONFIG_SYS_DSN = 2    'Configure (edit) data source
Const ODBC_REMOVE_SYS_DSN = 3    'Remove data source
Const ODBC_ADD_SYS_DSN = 4       'Add a system data source
 
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal _
   hwndParent As Long, ByVal fRequest As Long, ByVal _
   lpszDriver As String, ByVal lpszAttributes As String) As Long
                    
 
Function Build_SystemDSN()
  
    Dim Driver As String
    Dim Ret As Long
    Dim Attributes As String
 
    Driver = "SQL Server"
    'attributes are the connection information
    
    Attributes = "server=ANSRLTR" & Chr(0)
    Attributes = Attributes & "DSN=DSN_Temp" & Chr(0)
    Attributes = Attributes & "Database=ANSRLTR_Prod" & Chr(0)
    'use this line if you want to use the users name and password
    'Attributes = Attributes & "Trusted_Connection=Yes" & Chr(0)
    'use this line if you are adding a username and password
    Attributes = Attributes & "Uid=Temp;" & Chr(0) & "Pwd=TempID" & Ch(0)
 
      Ret = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, Driver, Attributes)
   
   
   'ret is equal to 1 on success and 0 if there is an error
   If Ret <> 1 Then
       MsgBox "DSN Creation Failed"
   End If
 
 
End Function

  Ответить  
 
 автор: Анатолий (Киев)   (13.02.2012 в 12:07)   личное сообщение
 
 

DBEngine.RegisterDatabase

  Ответить  
 
 автор: snipe   (13.02.2012 в 12:39)   личное сообщение
 
 

Спасибо - поизучаю

пока удалось обмануть вот так
CurrentDb.QueryDefs("Запрос1").Connect = "ODBC;DRIVER=SQL Server;SERVER=GOSKONTROL\IAS_RPN; UID=Пользователь;PWD=Пользователь;DATABASE=RPN_2;LANGUAGE=us_english;Network=DBMSSOCN"

  Ответить  
 
 автор: snipe   (13.02.2012 в 16:01)   личное сообщение
 
 

вот ссылка еще
http://support.microsoft.com/kb/892490

  Ответить  
 
 автор: Анатолий (Киев)   (13.02.2012 в 17:30)   личное сообщение
 
 

А какой у вас Акс? По А2003, ИМХО, в св-ве Connect таблицы/сохраненного запроса такой синтаксис (указание в строке имени драйвера или провайдера) не работало. Только "ODBC;DSN=Имя..."
Может ошибаюсь?

  Ответить  
 
 автор: snipe   (13.02.2012 в 18:39)   личное сообщение
 
 

2003
я для запросов к серверу использую
сначала создаю свою базу2 на сервере (которая тянет инфу из другой базы1 с таблами)
а потом запросами вытягиваю инфу - использую базу1 только на чтение (напрямую коннектится тяжко - слишком база мудреная в моем понимании, да и запросы на сервере бысрее работают)
с таблицами не пробывал - завтра попробую, хотя на sql.ru, где я нашел код, пример был конкретно на таблы ориентирован

  Ответить  
 
 автор: ddi   (13.02.2012 в 20:36)   личное сообщение
 
 

Где то прочитал, что без одбс работает быстрее ...
google odbc-less

  Ответить  
 
 автор: ddi   (14.02.2012 в 09:57)   личное сообщение
 
 

Function AttachDSNLessTable(stLocalTableName As String, stRemoteTableName As String, stServer As String, stDatabase As String, Optional stUsername As String, Optional stPassword As String)
On Error GoTo AttachDSNLessTable_Err
Dim td As TableDef
Dim stConnect As String

For Each td In CurrentDb.TableDefs
If td.Name = stLocalTableName Then
CurrentDb.TableDefs.Delete stLocalTableName
End If
Next

If Len(stUsername) = 0 Then
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";Trusted_Connection=Yes"
Else
stConnect = "ODBC;DRIVER=SQL Server;SERVER=" & stServer & ";DATABASE=" & stDatabase & ";UID=" & stUsername & ";PWD=" & stPassword
End If
Set td = CurrentDb.CreateTableDef(stLocalTableName, dbAttachSavePWD, stRemoteTableName, stConnect)
CurrentDb.TableDefs.Append td
AttachDSNLessTable = True
Exit Function

AttachDSNLessTable_Err:
AttachDSNLessTable = False
MsgBox "AttachDSNLessTable encountered an unexpected error: " & Err.Description
End Function

AttachDSNLessTable ("authors", "authors", "(local)", "pubs", "", "")

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList