Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как собрать базу по кусочкам ? (txt, asc -> mdb) / 7 сообщений из 7, страница 1 из 1
17.03.2004, 15:16
    #32445600
HoTicE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
т.е. комне приходят файлы след. вида:
2004031716850800.txt
2004031716851000.txt
2004031716851200.txt
2004031716860800.txt
2004031716861000.txt
2004031716861200.txt

в каждом файле строка вида:
1745 13

надо собрать все в одну таблицу вида
id - счетчик
time - из имя файла - 0800 - 1, 1000-2 и т.д.
area - из имя файла
total,income - в файле

id time area total income
1 1 1685 1745 13
2 2 1685 1745 23
3 3 1685 1745 35
4 1 1686 1860 33
5 2 1686 1860 44
6 3 1686 1860 55

есть ли в access такой инструмент, и можно ли это дело автоматизировать - скажем что бы он собирал это каждые n минут/секунд ?

плиз помогите, срочно !

может кто знает менее извратные способы - подскажите pls!
...
Рейтинг: 0 / 0
17.03.2004, 15:47
    #32445690
vlad_707
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
А эти файлы приходят и хранятся в одной папке?
ты знаешь имя каждого последующего файла, который должен прийти?
...
Рейтинг: 0 / 0
17.03.2004, 17:07
    #32445909
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
Option Compare Database

Dim id As Integer
Dim area As Integer
Dim cnn As ADODB.Connection
Dim rst As New ADODB.Recordset
Dim dtTotal As Integer
Dim dtIncom As Integer

Public Sub ListFilesReload()
Dim i As Integer

For i =  1  To Список10.ListCount
   Список10.RemoveItem ( 0 )
Next i

With Application.FileSearch
    .NewSearch
    .LookIn =  "o:\iii\"  'Директория с файлами'
    .SearchSubFolders = False
    .FileName =  "*.*" 
    .MatchTextExactly = True
End With
With Application.FileSearch
    If .Execute() >  0  Then
        For i =  1  To .FoundFiles.Count
        Список10.AddItem Item:=Replace(.FoundFiles.Item(i),  "c:\windows\" ,  "")
        Next i
    End If
End With
Call xxx
End Sub

Private Sub Кнопка20_Click()
   Call ListFilesReload 'Это и есть запуск всей функции'
End Sub

Public Function xxx()

Set cnn = CurrentProject.Connection
rst.Open " Таблица1 ", cnn, adOpenKeyset, adLockPessimistic

For i = 0  To Список10.ListCount -  1 
   With rst
      .AddNew
      !id = DMax("id ", " Таблица1 ") + 1 
      !fldTime = dtDate(Список10.ItemData(i))
      FileProcess (Список10.ItemData(i))
      !area = Mid(Список10.ItemData(i), Len(Список10.ItemData(i)) -  11 ,  4 )
      !total = dtTotal
      !incom = dtIncom
      .Update
   End With
Next i

End Function



Public Function dtDate(FileName As String) As Date

   dtDate = DateSerial(Mid(FileName, Len(FileName) -  19 ,  4 ), Mid(FileName, Len(FileName) -  15 ,  2 ), Mid(FileName, Len(FileName) -  13 ,  2 )) _
& " " & TimeSerial(Mid(FileName, Len(FileName) -  7 ,  2 ), Mid(FileName, Len(FileName) -  5 ,  2 ),  0 )

End Function



Private Function FileProcess(ByVal FName As String)

Dim FHandle As Integer, GetStr As String
FHandle = FreeFile
Open FName For Input As FHandle
Do Until EOF(FHandle)
Line Input #FHandle, GetStr

   dtTotal = Left(GetStr,  4 )
   dtIncom = Right(GetStr,  2 )

Loop
Close FHandle

End Function


Соответственно, нужна форма, список "Список10" и кнопка для запуска...
Попоробуй...корявенько конечно (быстренько)...
...
Рейтинг: 0 / 0
17.03.2004, 17:11
    #32445922
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
обычно у телефонной станции есть COM - порт
и нет нужды висеть сторонней проге и генерить файлы а потом еще и собирать это все своей...
...
Рейтинг: 0 / 0
18.03.2004, 07:11
    #32446408
HoTicE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
2 vlad_707
Да, все файлы в одной папке и я знаю (точнее на лету могу вычислить) какие у них будут имена.
...
Рейтинг: 0 / 0
18.03.2004, 07:12
    #32446409
HoTicE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
Deminik Обязательно попробую, результаты скажу, спасибо!
...
Рейтинг: 0 / 0
18.03.2004, 07:39
    #32446419
HoTicE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как собрать базу по кусочкам ? (txt, asc -> mdb)
2 Deminik
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
With Application.FileSearch
    If .Execute() >  0  Then
        For i =  1  To .FoundFiles.Count
        harvList.AddItem Item:=Replace(.FoundFiles.Item(i),  "c:\windows\" ,  "")
ругается на эту строчку, говорит: Run-time error '6014'
Для применения данного метода необходимо задать значение " Список значений " для свойства " Тип источника строк" (RowSourceType).

        Next i
    End If
End With
Call xxx

Next i
With Application.FileSearch


harvList = список10
приэтом файлы в нужной папке находит, о чем свидетельствует значение foundfiles.count и foundFiles.item(i)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как собрать базу по кусочкам ? (txt, asc -> mdb) / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]