|
|||||||
умный импорт из Excel листа в таблицу Access
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - Excel->Access
Запись: xintrea/mytetra_db_adgaver_new/master/base/1512853191cheezga7x0/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Excel: умный импорт из Excel листа в таблицу Access Всем привет, помогите разобраться с нижеизложенным. '======================================================================= Решать такую задачу со стороны Excel сложнее чем из Access, в котором достаточно выполнить два запроса, один на обновление второй на добавление. '======================================================================= Получается последовательность такая:
Код : Dim xlsRecordSet as ADODB.Recordset Set xlsRecordSet=New ADOD.Recordset ??? 2. ??? 22.
Код : Const ConnectionString As String = _ "Provider = Microsoft.Jet.OLEDB.4.0;" + _ "Data Source = C:\Data\myData.mdb;Persist Security Info=False"
Dim Connection As ADODB.Connection
Set Connection = New ADODB.Connection Connection.ConnectionString = ConnectionString
If Connection.State = ObjectStateEnum.adStateOpen Then objConn.Close Connection.Open End If
'....
If Connection.State = ObjectStateEnum.adStateOpen Then objConn.Close Connection.Close End If 3. ...
4. ...
'======================================================================= Как рекордсет создается и заполняется Вы можете посмотреть в коде. Также его можно сортировать и передавать в массив (это для примера).
Код : Sub SortRecordset() Dim rs As Object, i%, V() Set rs = CreateObject("ADODB.Recordset")'создание рекордсета rs.Fields.Append "Fld", 200, 255 ' добавление поля в рекордсет rs.Open 'открываем рекордсет rs.AddNew 'добавление записи в реккордсет rs(0) = "Text" 'ввод данных rs.Update 'сохранение rs.Sort = "Fld" 'имя поля сортировки "Fld desk" - по убыванию V = rs.GetRows 'при необходимости передаем все содержимое рекордсета в массив rs.Close ' закрываем рекордсет Set rs = Nothing ' очищаем переменную для освобождения памяти End Sub Организовать циклы добавления нужного количества полей, сбора данных листа и заполнения полей рекордсета, надеюсь Вы сможете самостоятельно.
'=======================================================================В цикле перебора набора записей, создается строчная переменная содержащая значение поля рекордсета Код : ... rs.MoveFirst Do Until rs.EOF sSql = "INSERT INTO Table1 ( Fld1 ) SELECT '" & rs(1) & "'" 'текст момещается в апострофы Execute.sSql ' rs.MoveNext Loop ... примерно так.
'=======================================================================
'=======================================================================
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|