Страницы: 1
RSS
Работа с данными в памяти через ADODB.Recordset, или варианты
 
Задача стоит так:
есть объем данных, которые я читаю из текстового файла.
В данных три поля - ИД, время и третье, логическое  - 0/1
Надо сгрупировать поля с одинаковыми ИД и разнести их по разным листам

Т. к. я чуть больше привык к БД и Аксу, мне проще сделать "Select * from *"
и я начал так решать:
1. читаю файл и заполняю прочитаным соответвующие поля в ADODB.Recordset (rstADO в  примере)
2. Хотел сделать из него "Select * from *". Но что-то не идет, найденый пример придуман для Акцесс, и под рекордсет, существующий только временно в памяти переписать не вышло с первого захода.

Неработающий кусок с селектом
Код
Dim cn As Object    ' As ADODB.Connection
Dim rs1 As Object   ' As ADODB.Recordset
Set cn = CreateObject("ADODB.Connection") ' as New ADODB.Connection
Set rstDAO = CreateObject("ADODB.Recordset") ' as New ADODB.Recordset

 strSQL = "CREATE VIEW MyTableView AS SELECT DISTINCT pid FROM rstADO;"
    With cn
        .Open
        .Execute strSQL
    End With

Или я вообще не тудой пошёл?
Изменено: panix1111 - 29.12.2016 12:28:28
Мы в Екселе не работаем, мы в нём живём!
 
Кажись нашёл то что надо или очень похоже на то:
Код
Sub GetTXTfile()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, rs2 As ADODB.Recordset
Dim sCon$, StrSql$, i&
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName _
& ";Extended Properties=""Excel 8.0;IMEX=1;HDR=No"";"
cn.Open sCon
If Not cn.State = 1 Then Exit Sub
StrSql = "Select F1 from [Лист1$]group by F1"
rs.Open StrSql, cn, adOpenKeyset, adLockPessimistic
For i = 0 To rs.RecordCount - 1
StrSql = "select F2 from [Лист1$] where F1='" & rs.Fields(0).Value & "'"

rs2.Open StrSql, cn, adOpenKeyset, adLockPessimistic
Open ThisWorkbook.Path & "\" & rs.Fields(0).Value & ".txt" For Output As #1
Print #1, rs2.GetString(adClipString, -1, ";", vbCrLf, "(NULL)")
rs2.Close
Close
rs.MoveNext
Next
rs.Close: cn.Close
Set cn = Nothing: Set rs = Nothing
End Sub 


код R Dmitry
Мы в Екселе не работаем, мы в нём живём!
 
Доброе время суток.
И прошли мимо на форуме Excel и Access могут облегчить друг другу жизнь?
 
Цитата
panix1111 написал: Кажется из рекордсета нелдьзя делать селект
А смысл? Делаете запрос с группировкой к своему текстовому файлу. Далее, используя Recordset.Filter, разносите нужное по листам.
Страницы: 1
Читают тему
Наверх