Надстройка Excel для отображения данных из (My) базы данных SQL

Есть ли простой способ импорта данных из источника данных mysql / odbc в таблицу Excel?

Пользователь должен иметь возможность выбирать некоторые значения из раскрывающихся списков (например, диапазон дат, название ветви и т. Д.), А значения из раскрывающегося списка должны использоваться для заполнения (подготовленных) операторов SQL. Результаты должны отображаться в файле Excel.

В идеале должен быть пункт меню «сохранить снимок», который преобразует динамический файл Excel (с сохраненными инструкциями SQL) в статический файл Excel, таким образом уменьшая подверженность внутренних ресурсов (например, SQL) внешним ресурсам.

Спасибо

15.12.2008 20:43:36
4 ОТВЕТА
0
15.12.2008 20:46:23

Вы можете загрузить драйвер ODBC для MySQL , создать источник данных и использовать MS Query для создания пользовательского запроса SQL, который можно добавить в Excel через меню «Данные».

2
15.12.2008 20:48:29

Вот пример:

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

strCon = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=MyDB;" _
& "User=UName;Password=PWord;Option=3;"


cn.Open strCon

strSQL = "SELECT * FROM Members"

rs.Open strSQL, cn

Worksheets(3).Cells(2, 1).CopyFromRecordset rs
0
15.12.2008 20:58:18

Этот метод должен быть быстрее, чем CopyFromRecordset. Конечно, вы должны убедиться, что у вас установлен драйвер MySQL ODBC 5.1 ...

With AWorksheet.QueryTables.Add( _
   Connection:="ODBC;Driver=MySQL ODBC 5.1 Driver;Port=3306;Server=mysqlservername;Database=snort;User=username;Password=password;Option=3;"
   Destination:=AWorksheet.Range(AWorksheet.Cells(1, 1), AWorksheet.Cells(1, 15)) _
  )

   .CommandText = "SELECT Something FROM Somewhere"
   .Name = "Name"
   .FieldNames = True
   .RowNumbers = False
   .FillAdjacentFormulas = False
   .PreserveFormatting = True
   .RefreshOnFileOpen = False
   .BackgroundQuery = True
   .RefreshStyle = xlOverwriteCells
   .SavePassword = False
   .SaveData = True
   .AdjustColumnWidth = False
   .RefreshPeriod = 0
   .PreserveColumnInfo = True
   .Refresh BackgroundQuery:=False
   .Delete
End With
0
5.07.2010 21:40:17