Страницы: 1
RSS
SQL запрос из Excel VBA
 
Приветствую, знатоки.  
 
Есть проблемка небольшая - написать VBA код, который бы запрашивал у пользователя 3 параметра (переменные), приняв их делал бы SQL запрос к базе вида select * from ""Parameter1"" where ....    
 
Сам SQL запрос то я напишу, а вот как три переменные взять у пользователя в красивом виде, не подскажете?    
 
К сожалению, в VBA я полный ноль пока. :(
 
Нет! С треугольником ошибся! :)
 
Ага, то что надо. Спаисбо большое.
 
А не подскажете, как дальше вызвать значение переменной sFirstString? Текущий код выдает Subscript out of range..  
 
Код такой:  
 
Sub macros1()  
 
Dim sFirstString As String  
sFirstString = InputBox("Первый параметр", "Первый параметр")  
If sFirstString = "" Then Exit Sub  
 
   With ActiveWorkbook.Connections("desktop AgregaSQL").OLEDBConnection  
       .BackgroundQuery = True  
       .CommandText = Array("select * from ""sFirstString""")  
       .CommandType = xlCmdSql  
       .Connection = Array( _  
       "OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=AgregaSQL;Data Source=desktop;Use Proced" _  
       , _  
       "ure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=DESKTOP;Use Encryption for Data=False;Tag with column coll" _  
       , "ation when possible=False")  
       .RefreshOnFileOpen = False  
       .SavePassword = False  
       .SourceConnectionFile = ""  
       .SourceDataFile = ""  
       .ServerCredentialsMethod = xlCredentialsMethodIntegrated  
       .AlwaysUseConnectionFile = False  
       .ServerFillColor = False  
       .ServerFontStyle = False  
       .ServerNumberFormat = False  
       .ServerTextColor = False  
   End With
 
Т.е. вот тут как указывать переменную, в каком формате?  
 
       .CommandText = Array("select * from ""sFirstString""")
 
Попробуйте убрать кавычки, ВБА сам рисует их при явном объявлении текстовой переменной. И если в коде где-то пишется текст, то он берется в кавычки, а переменная - нет
 
{quote}{login=Igor67}{date=29.07.2010 10:36}{thema=}{post}Попробуйте убрать кавычки, ВБА сам рисует их при явном объявлении текстовой переменной. И если в коде где-то пишется текст, то он берется в кавычки, а переменная - нет{/post}{/quote}  
 
Не помогает.. Все равно subscript out of range.
 
Под себя перепишете как надо. Это просто пример  
 
   Dim conn As New ADODB.Connection  
   Dim comm As New ADODB.Command  
   Dim rs As New ADODB.Recordset  
 
   conn.ConnectionString = "....."  
   conn.Open  
   comm.ActiveConnection = conn  
   comm.CommandType = adCmdStoredProc  
 
   comm.Parameters.Append comm.CreateParameter("@value1", adVarChar, adParamInput, 50, "aaa")  
   comm.Parameters.Append comm.CreateParameter("@value2", adVarChar, adParamInput, 50, "bbb")  
 
   comm.CommandText = "test"  
   Set rs = comm.Execute
 
Настоятельно рекомендую не использовать  CommandText полученный с помощь слияния нескольких кусочков строк. Ошибки могут быть там где даже и не предполагаете.  
От неправильного преобразования типов данных до ошибок в правильном составлении sql запроса(например апостроф в sql запросе распознается к кавычки в VBA и его надо дублировать тексте запроса если он передается как параметр)
 
Здравствуйте!  
 
Нужна помощь в написании sql-запроса в VBA.  
Можете подробнее описать код. Что должно быть в ConnectionString, как создать подключение к другому файлу Excel или другому листу этой же книги.  
 
Спасибо
 
читаем тут  
http://support.microsoft.com/kb/257819
Спасибо
Страницы: 1
Наверх