Як використовувати Excel для читання та запису зовнішньої бази даних

Поділитися зараз:

Excel може робити практично все; чи слід це робити все, це інша справа. Хоча електронна таблиця дуже потужна в обробці даних, вона не надто велика для зберігання нормалізованих даних. Використання Excel для реляційної бази даних, як SQL Server покращує потужність програми.

To start, вам знадобиться MS Access або більш стабільний і безкоштовний - SQL Server Експрес. Передбачається, що на пристрої для читання відображається стрічка Excel Developer і він знайомий з редактором VBA та мовою структурованих запитів (SQL). Ця стаття використовує SQL Server рядки з'єднання. Щодо MS-Access, зверніться до Google.

У той час як Excel має власні вбудовані процедури отримання інформації з SQL Server у (скажімо) зведену таблицю, наш приклад надасть більшу гнучкість у виборі даних.

Рядок з'єднання

Я буду використовувати приватну базу даних; вставте власну інформацію про драйвера замість моєї в підпрограму ConnectDatabase. Потім ми використовуємо connDB як канал зв'язку до нашої бази даних - у моєму випадку для повернення результатів із збереженої процедури. Ви можете використовувати більш стандартні оператори SQL, такі як "Вибрати * з ..."

Порядок ведення бізнесу

По-перше, ми завантажимо комбіновані варіанти з SQL Server коли книга відкривається, використовуючи макрос Auto_open і скидаючи її на аркуш “ComboData”. Незалежно від того, знаходиться Сервер у хмарі або локально, помітних затримок у s не будеtarting Excel - доки база даних доступна з робочої станції.

Далі ми витягнемо відфільтровані дані з бази даних і помістимо їх у Excel, стовпці F - K.

Інтерфейс

У Mine є випадаючі вікна для фільтрування інформації з бази даних. Роль поле зі списком запускає пошук для заповнення таблиці праворуч.Рольовий комбінований блок викликає пошук для заповнення таблиці

Перейменуйте “Sheet1” на “Main”. Додайте принаймні одне поле зі списком.

Кодекс

Public connDB As New ADODB.Connection
Public rstNew As New ADODB.Recordset
Public rs As New ADODB.Recordset
Public strSQL As String
Public nID As Integer

Sub auto_Open()
    Call PopulateComboData     'kicks off the first process  on Open
End Sub

Sub PopulateComboData()
    Sheets("ComboData").Range("A3:C100").ClearContents
    Call ConnectDatabase      'use the ConnectDatabase routine
    strSQL = "Select DeptID, Department, Phase from tblDept Order by Department"
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("A3").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ReadData()
    intRole = Sheets("main").Range("D7")
    Sheets("Main").Range("F4:L100").ClearContents
    Call ConnectDatabase
    strSQL = "EXEC DBTest " & intRole    'calls a stored proc with parameter
    Set rs = connDB.Execute(strSQL)
    ActiveSheet.Range("F4").CopyFromRecordset rs      'copies the recordset in bulk
End Sub

Sub ConnectDatabase()
    On Error GoTo ErrConnect
    If connDB.State = 1 Then connDB.Close     'closes connection if already open
    strServer = "197.200.28.164" 
    strDBase = "Qcrew_sql"
    strUser = "joesoap_sql"
    strPWD = "frU6ra!@"
    If strPWD > "" Then 
        strConnectionstring = "DRIVER={SQL Server};Server=" & strServer & _
        ";Database=" & strDBase & ";Uid=" & strUser & ";Pwd=" & strPWD & _
        ";Connection Timeout=30;"
    Else        'Use windows authentication
        strConnectionstring = "DRIVER={SQL Server};SERVER=" & strServer & _
        ";Trusted_Connection=yes;DATABASE=" & strDBase
    End If
    connDB.Open strConnectionstring
Exit Sub
ErrConnect:
    MsgBox Err.Description
End Sub

Відформатуйте елемент керування комбінованим полем, щоб прочитати аркуші “ComboData”. Потім клацніть правою кнопкою миші поле зі списком, щоб призначити йому підпроцедуру ReadData. Коли елемент вибрано у списку, напишіть його ключ на аркуші “Основний”, клітинка D7. Код VBA використовуватиме цей ключ як фільтр (див. IntRole, вище).

Посилання на dll library

Використовуйте Інструменти> Посилання у вікні коду для посилання на бібліотеку об’єктів даних Microsoft Active Xrarр. Це дозволить Excel використовувати об'єкти ADODB, заявлені в коді.Посилання на бібліотеку об’єктів даних Microsoft Active Xrary

Підпрограма ReadData вище використовує реляційну структуру даних, показану нижче, яку важко досягти лише в Excel.Підпрограма ReadData використовує реляційну структуру даних

Подальші зміни даних можуть викликати зворотний запис у базу даних із відповідним оператором SQL Update, за яким слід connDB.execute (strSQL).

Нарешті, захистіть свій код від перегляду або зміни:  Інструменти> Властивості> Захист.

Вирішення проблем Excel:

Час від часу, особливо коли в ньому є складні програми, Excel може аварійно завершити роботу та не покрити належним чином. У разі виникнення пошкоджений xlsx файл, маючи ефективний інструмент відновлення зручний вирішить most проблеми.

Вступ автора:

Фелікс Хукер - фахівець з відновлення даних у DataNumen, Inc., яка є світовим лідером у галузі технологій відновлення даних, в тому числі ремонт rar помилка та програмні продукти для відновлення sql. Для отримання додаткової інформації відвідайте WWW.datanumen.com

Поділитися зараз:

Коментарі закриті.