- Код: Выделить всё
Private Sub Структуру_в_базу(path As String, Optional where As Node)
DoEvents
ключ = ключ + 1
База = App.path + "\" + имя_базы + ".mdb"
таблица = "каталоги"
Dim ndx As Node
Set db = OpenDatabase(База, False)
Set rs = db.OpenRecordset(таблица)
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsl = fso.getfolder(path & "\")
For Each fsl1 In fsl.SubFolders
If where Is Nothing Then Set ndx = TreeView1.Nodes.Add(, tvwChild, ключ & "key ", fsl1.Name, 1, 3) Else Set ndx = TreeView1.Nodes.Add(where.Key, tvwChild, ключ & "key", fsl1.Name, 1, 3): ndx.EnsureVisible
rs.AddNew
If where Is Nothing Then
rs.Fields("имя") = ndx.Text
rs.Fields("ключ") = ndx.Key
rs.Fields("родитель") = "корень"
rs.Fields("счетчик") = ключ
Else
rs.Fields("имя") = ndx.Text
rs.Fields("ключ") = ndx.Key
rs.Fields("родитель") = where.Key
rs.Fields("счетчик") = ключ
End If
rs.Update
If fso.getfolder(fsl1.path).Files.Count <> 0 Then Call файл_в_базу(fsl1.Name, fsl1.path) 'сколько файлов в папке
Call Структуру_в_базу(path & "\" & fsl1.Name, ndx)
Next fsl1
errhdl:
Select Case Err.Number
Case 76: MsgBox "Cannot read the drive ", vbCritical Or vbOKOnly, "Test"
End Select
Exit Sub
Call Структуру_в_базу(path & "\" & fsl1.Name, ndx) - записывает имена файлов текущей папки в базу. (таблица "файлы") .
Базу создаю так:
- Код: Выделить всё
Private Sub создать_базу(имя_базы)
Kill App.path + "\" + имя_базы + ".mdb"
Set db = CreateDatabase(App.path + "\" + имя_базы + ".mdb", dbLangGeneral)
'-----------------таблица "каталоги"
Set td = db.CreateTableDef("каталоги")
Set fd = td.CreateField("имя", dbText, 255)
td.Fields.Append fd
Set fd = td.CreateField("ключ", dbText, 255)
td.Fields.Append fd
Set fd = td.CreateField("родитель", dbText, 255)
td.Fields.Append fd
Set fd = td.CreateField("счетчик", dbText, 255)
td.Fields.Append fd
db.TableDefs.Append td
'-----------------таблица "файлы"
Set td2 = db.CreateTableDef("файлы")
Set fd2 = td2.CreateField("имя", dbText, 255)
td2.Fields.Append fd2
Set fd2 = td2.CreateField("папка", dbText, 255)
td2.Fields.Append fd2
db.TableDefs.Append td2
db.Close
End Sub
Так вот врезультате, когда смотрю созданную базу в аце: записи в столбцах идут неподряд (отслеживаю по полю "счетчик")- сначала с 1 по 130, потом сразу 188-236, и только потом 131-187 и т.д.
Из-за чего так происходит, как-будто пересортировывается все.
Как сделать чтобы записи повозрастанию шли (а то при построении дерева не может найти родительский узел)Помогите!!!