Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Таблицу БД SQL Server поместить на лист Excel, ошибка макроса
 
То есть хотите сказать, что у меня сам код построен не правильно пунктуация или расположение. Не грамматические ошибки ?
Таблицу БД SQL Server поместить на лист Excel, ошибка макроса
 
Здравствуйте, вопрос отчасти не в "кассу".
Написал код надстройки Excel на VB в Visual Studio 2013 . Данная надстройка позволяет "вытащить" таблицу БД SQL Server и пометить ее на лист Excel , но он этого не делает, так как в подключении ошибка, а найти не могу. Доходит до строки cn3.Execute(delt) и перескакивает на ошибку.
то что за комментированно , это первый вариант конекта
Код
Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click
        Dim wb As excel.Workbook = Globals.ThisAddIn.Application.ActiveWorkbook
        Dim sh As excel.Worksheet = wb.ActiveSheet
        Dim range As excel.Range = sh.Range("A1")

        On Error GoTo ERRH

        Dim cn3 As New ADODB.Connection

        Call cn3.Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;" _
        & "Initial Catalog=" + ComboBox1.Text + "; Data Source=" + EditBox1.Text + "")

        'cn3.ConnectionString = "Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" + ComboBox1.Text + ";Data Source=" + EditBox1.Text + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CB901666;Use Encryption for Data=False;Tag with column collation when possible=False"

        'cn3.Open()
        Dim delt As String
        delt = "drop table " + EditBox1.Text + ""
        cn3.Execute(delt)

        With sh
            .Activate()
            .Cells.Clear()
            .Cells.ColumnWidth = 8.43
        End With

        range.Activate()

        EditBox1.Text = Nothing
        ComboBox2.Text = Nothing
        ComboBox1.Text = Nothing
        Exit Sub
ERRH:
        MsgBox("Error:" & " " & Err.Source)
    End Sub
Изменено: Gramoz`aka - 29.05.2015 10:29:32
Перевод с VBA в VB
 
Здравствуйте форумчане.
"Гуляя" по просторам интернета, наткнулся на надстройку для EXCEL через Visual Studio с помощью языка VB, там и оформление приятное и нет постоянно "уезжающей" кнопки ,для вызова формы , решил попробовать сделать самому , ведь на VBA подобная надстройка у меня есть.
Возникла мысль перевести весь код VBA в VB, а именно поработать через Visual Studio 2013. Лазил по форумам , искал нюансы обоих языков, но куда не зайду, пишут, что особой разницы нету. Решил перенести весь код VBA в студию, программа ругается, переделав пол кода , застрял на QueryTable. да и многие следующие части не могу сообразить как сделать.
Экспорт из Excel в SQL Server
 
Ну так как у меня работает все через форму, я все установил на кнопку:
Код
Private Sub CommandButton2_Click()

    Dim cn As New ADODB.Connection
    Set cn = CreateObject("ADODB.Connection")
       
    
    cn.Provider = "SQLOLEDB.1"


    cn.ConnectionString = "Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" + UserForm1("ComboBox1") + ";Data Source=" + UserForm1("TextBox1") + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CB901666;Use Encryption for Data=False;Tag with column collation when possible=False"
    
    
  cn.Open
  
 
  Dim nacstr As Long 'начальная строка
  nacstr = 2
  Dim pstr As Long 'конечная строка
  pstr = Cells(Rows.Count, 1).End(xlUp).row
  Dim kolnach As Long
  kolnach = 3
  Dim kolpas As Long
  kolpas = Cells(1, Columns.Count).End(xlToLeft).Column
    
    For i = nacstr To pstr
        If Cells(i, 2).Value = 1 Then
            For x = kolnach To kolpas
            Dim a As String
            a = Sheets("Лист1").Cells(1, x).Value
            Dim b As String
            b = Sheets("Лист1").Cells(i, x).Value
            Dim c As String
            c = Sheets("Лист1").Cells(1, 1)
            Dim d As String
            d = Sheets("Лист1").Cells(i, 1)
            Dim e As String
            e = UserForm1("ComboBox2").Value
            cn.Execute "update " + e + " set " + a + " = '" + b + "' Where " + c + " = '" + d + "'"
            
            Next x
            
        End If
    
    Next i
     UserForm1.Hide
End Sub
Экспорт из Excel в SQL Server
 
Всем спасибо!!!!!!!!!
С горем пополам разобрался. Работает идеально), хотя и пришлось в некоторых местах искать обходные пути))
Экспорт из Excel в SQL Server
 
TheBestOfTheBest, в данном случае нужно делать через UpDate . и да "Код_клиента" это уникальный ключ.
Я сделал цикл, командой "бегает" по колонкам и если в скрытом столбце есть 1 то он запоминает эту строку , и теперь нужно,чтобы эти строки переносились в БД .
Экспорт из Excel в SQL Server
 
Doober, в данном случае оба варианта, так как при изменении уже существующих данных, эти изменения должны вноситься в Базу. но и при добавлении новых СТРОК, они так же должны добавиться в Базу.
P.s. Ориентируясь правее единицы скрытого столбца
Изменено: Dmitry95 - 06.04.2015 07:21:01
Экспорт из Excel в SQL Server
 
Да, БД)
Экспорт из Excel в SQL Server
 
Здравствуйте, дорогие формумчане. Я столкнулся с проблемой и завис...
"Перевернул" просторы интернета, но может вопрос не так задаю. Стоит такая задача. Есть таблица, извлеченная из SQL Server в данную таблицу добавлен столбец, в строке которого появляется единичка, когда изменяешь что-либо в строке. Сам столбец скрыт, так как он не нуждается в переносе в ДБ. Но благодаря этому столбцу и должен совершаться экспорт в SQL Server.
vba событие при изменении ячейки
 
The_Prist Просто у меня был Worksheet_Change, и там не хватало пару строк, и именно по этому он срабатывал при щелчке. Поэтому я усердно твердил свое (то что видел)
А благодаря этим строкам и вам, все заработало) спасибо огромное
vba событие при изменении ячейки
 
Теперь , данное событие , не позволяет добавить столбец, который реагирует на изменение в строке.
Сам код выгрузки с сервера, находится в Module3
Изменено: Dmitry95 - 12.03.2015 09:51:22
vba событие при изменении ячейки
 
Иными словами, нужен макрос , при запуске макроса запоминания данных , при щелчке на ячейку?
Такой способ приводит к зависанию VBA  
vba событие при изменении ячейки
 
Изменения вносятся вручную. Worksheet_Change срабатывает при щелчке на ячейку, независимо изменяли ли данные или нет. Он не может запоминать значения "ДО" и "ПОСЛЕ"
vba событие при изменении ячейки
 
Worksheet_Change(ByVal Target As Range)
Кстати говоря, я находил коды, которые просто красят ячейку при щелчку на нее, независимо на изменение, и единичку в скрытый столбец  Changed ставит, а нужно только при изменении записи строки
Изменено: Dmitry95 - 11.03.2015 12:53:15
vba событие при изменении ячейки
 
Здравствуйте. Возможна такая тема уже существует, но сформулировать ее иначе или найти, я не смог.
Есть табличка, выведенная из SQL server , в нее добавлен столбец, так же при запуске макроса, данный столбец , сразу скрывается.
Дело заключается вот в чем: искал код, чтобы он реагировал при изменении информации в ячейке, а именно : в скрытом столбце, измененной строки , ставилась единичка, а ячейка меняла свой цвет.
Проблема с QueryTable: ошибка при запуске
 
Всем спасибо огромное.!!! Целую неделю я тупил с этим кодом. Но в конце концов, осилил)
А по поводу библиотек, я их нашел, но там нужно их обновлять, но так как я студент, у меня ограниченный доступ)
Проблема с QueryTable: ошибка при запуске
 
Михаил Лебедев. подскажите пожалуйста. Как поместить, в список библиотек, более новую библиотеку?
Проблема с QueryTable: ошибка при запуске
 
У меня подключена Microsoft ActiveX Data Objects 2.8 Library  
Проблема с QueryTable: ошибка при запуске
 
Ругается , ошибка синтаксиса
Могу скинуть код целиком
Код
Sub Macro1()
    Dim st As String
    Dim ct As String
    Set cn = CreateObject("ADODB.Connection")
    Dim rs As New ADODB.Recordset
    
   Dim QT1 As QueryTable
    
    cn.Provider = "SQLOLEDB.1"


    cn.ConnectionString = "Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" + Sheets("Лист4").Range("A2") + ";Data Source=" + Sheets("Лист4").Range("A1") + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CB901666;Use Encryption for Data=False;Tag with column collation when possible=False"
                            
    cn.Open
    rs.CursorType = adOpenStatic
    rs.LockType = adLockBatchOptimistic
    
    
    rs.Open "select * from dbo." + Sheets("Лист4").Range("A3") + "", cn
   
    st = "OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=tstfinserver;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CB901666;Use Encryption for Data=False;Tag with column collation when possible=False"
    
    Set QT1 = ActiveWorkbook.Worksheets(2).ListObjects.Add(SourceType:=xlSrcExternal,
              Source:=Array(s), LinkSource:=True, _
              TableStyleName:=xlGuess, Destination:=Sheets("Лист2").Range("A1")).QueryTable
              
    ct = Sheets("Лист4").Range("A2").Value + ".dbo." + Sheets("Лист4").Range("A3").Value
   
    
   
    
 End Sub
 
Ругается именно с команды Set.
То есть. я ввожу данные о сервере в одну ячейку, в другую БД, а в третью ввожу таблицу. он это считывает. и даже выводит , если вставляю вот этот код :
Код
Лист2.Range("A2").CopyFromRecordset rs 
Вместо Set то выводится просто данные из таблицы. В данном случае , это не подходит, нужен именно QT. и уже как не пробовал....
Изменено: Dmitry95 - 19.02.2015 10:30:38
Проблема с QueryTable: ошибка при запуске
 
Здравствуйте. У меня поставлена задача, вывести целиком таблицу в Excel из SQL Server. Написав простой код, который просто выводит данные из таблицы, меня такой вариант не устроил , и я начал бегать по просторам интернета и искать способы , и нашел QueryTable, как вывести красивую табличку, но вот незадача , при запуске, все время ругается.

Код
'Set QT1 = ActiveWorkbook.Worksheets(2).ListObjects.Add(SourceType:=xlSrcExternal,
              'Source:=Array(s), LinkSource:=True, _
              'TableStyleName:=xlGuess, Destination:=Sheets("Лист2").Range("A1")).QueryTable
              
    'ct = Sheets("Лист4").Range("A2").Value + ".dbo." + Sheets("Лист4").Range("A3").Value
Что с ним не так?
VBA с азов
 
vikttur
Это вынужденные меры) приходится схватывать. бывают ошибки в кодах. ну все же. по мелочи подсказывают. Ну и плюс в интернете примеры есть
Изменено: Dmitry95 - 13.02.2015 10:01:26
VBA с азов
 
Спасибо за предложенные ссылки. От части помогли в практике создать запрос на импорт и экспорт БД их SQL server в Excel
VBA с азов
 
Здравствуйте. Я студент специальности Информационные системы, и так уж вышло, что на последнем курсе, я встретился с VBA в EXCEL. К сожалению , в технаре, мы этот язык даже не проходили .
Но узнав его возможности, и сколько действий он упрощает. Я начал активно искать лекционные материалы. Найдя подходящие книги , в интернете и на работе ( практике) , я их читал, но в голове образовывалась "каша" нужной и ненужной информации. И тут я решил расставить все поп полочкам и обратиться к видео урокам для начинающих. Посмотрев парочку, я отчаялся, так как в них ничего начального нет, в данных видео показан сам результат и готовый  код.
Мне бы хотелось познакомиться с самого "низу", а именно синтаксис кода, что за чем идет.
Страницы: 1
Наверх