Задача стоит так: есть объем данных, которые я читаю из текстового файла. В данных три поля - ИД, время и третье, логическое - 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
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