Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 01:09   #1
VladimirC2004
 
Регистрация: 04.09.2011
Сообщений: 5
По умолчанию Как распарсить файл *.txt в access.

Доброго времени суток! Такая проблема: есть файл .txt (смотри приложение) нужно последние три строки впихнуть в таблицу access. Уже сломал голову...
Заранее спасибо.
Вложения
Тип файла: txt Донесение о землетрясении N4328.txt (309 байт, 146 просмотров)
VladimirC2004 вне форума Ответить с цитированием
Старый 05.11.2011, 12:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
нужно последние три строки впихнуть в таблицу access
Просто как строками?
Примерно с потолка:
Код:
Sub b()
Open "C:\Донесение о землетрясении N4328.txt" For Input As #1
        Dim s As String
         
        Do While Not EOF(1) And s <> ""
            Line Input #1, s
        Loop
        Dim r As DAO.Recordset
        Set r = CurrentDb.OpenRecordset("Таблица1")
        Do While Not EOF(1)
            Line Input #1, s
            r.AddNew
            r!Поле1 = s
            Debug.Print s
        Loop
        r.Update
Close #1
End Sub
Т.Е. пройтись до нужных строк которые потом занести в базу
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.11.2011, 02:26   #3
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

я думаю если тексты не "война и мир" и знаем что нужны именно последние строки, то лучше распарсить так :

Код:
Sub ImpTXT()
    Dim oFSO, TFile, a, i&
       Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set TFile = oFSO.OpenTextFile("D:\post.txt",1)
    a = Split(TFile.ReadAll, vbNewLine)
    TFile.Close:  Set TFile = Nothing
     For i = UBound(a) To UBound(a) - 2 Step -1
        Debug.Print a(i)
     Next
End Sub
а уже добавить в таблицу, можно любым удобным способом.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 06.11.2011 в 02:29.
R Dmitry вне форума Ответить с цитированием
Старый 06.11.2011, 13:43   #4
VladimirC2004
 
Регистрация: 04.09.2011
Сообщений: 5
Хорошо

Спасибо огромное... вроде разобрался. (правда не совсем то, что нужно, но по крайней мере толкнули куда надо...)
А не подскажете, каким образом можно из Access по нажатию кнопки построить слайд в PowerPoint (т.е. воткнуть туда картинку, на нее накинуть объект "звезда" в середину и текст из ячейки таблицы ACCESS)?
VladimirC2004 вне форума Ответить с цитированием
Старый 06.11.2011, 15:07   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте VladimirC2004.
"..не совсем то, что нужно.." жаль возможно Вас устроит следующий вариант,
я добавил несколько строк к коду предложенному R Dmitry и получилась конструкция
проверяющая все текстовые файлы в заданной папке (sSourceFolder) и добавляет новые данные в таблицу
БД в которой выполняется этот код, т.е. достаточно "сбрасывать" все файлы донесений в одну папку
и периодически выполнять код:
Код:
Sub txtFileToMDB()
'укажите имя папки в которой размещаются текстовые файлы
'и данные из всех файлов будут прочитаны и переданы в таблицу БД
Const sSourceFolder = "c:\folderForTxtFiles\"
Dim s$, i%, j%
On Error Resume Next
   s = Dir(sSourceFolder + "*.txt", 7)
   Do Until s = ""
        j = j + txtToMDB(sSourceFolder + s)
        i = i + 1
        s = Dir
   Loop
'If i > 0 Then MsgBox "файлов в папке '" + sSourceFolder & _
        "' : " & i & vbCrLf & "добавлено записей : " & j
End Sub
Function txtToMDB&(sFile$)
'укажите реальное название таблицы и имена полей
Const sQ1 = "select F1, F2, F3 from table where F1='", sQ2 = "' and F2='", sQ3 = "' and F3='"
    Dim oFSO, TFile, a, i&, s$, d As DAO.Database, r As DAO.Recordset
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set TFile = oFSO.OpenTextFile(sFile, 1)
    a = Split(TFile.ReadAll, vbNewLine)
    TFile.Close:  Set TFile = Nothing
     For i = UBound(a) To LBound(a) Step -1
        If i < 4 Then
            Exit For
        ElseIf Len(a(i)) > 0 And i - LBound(a) > 2 Then
            Set d = CurrentDb
            Set r = d.OpenRecordset(sQ1 + a(i - 2) + sQ2 + a(i - 1) + sQ3 + a(i) + "'")
            If r.EOF Then
                r.AddNew
                r(0) = a(i - 2): r(0) = a(i - 1): r(0) = a(i)
                r.Update
                txtToMDB = 1
            End If
            Exit For
        End If
     Next
Set r = Nothing: Set d = Nothing
End Function
"..каким образом можно из Access по нажатию кнопки построить слайд в PowerPoint..?"
- какое отношение имеет этот вопрос к теме "..файл *.txt в access.."?
Придерживайтесь правила 1 вопрос = 1 тема

Успехов Вам.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.11.2011, 15:20   #6
VladimirC2004
 
Регистрация: 04.09.2011
Сообщений: 5
Хорошо

Спасибо!!! Пока не посмотрел (т.к. делаю пока другую задачу) но по описанному Вами - супер!
А про напоминание - извиняюсь - торопился и на автомате там-же и задал вопрос...
Спасибо еще раз!!!
VladimirC2004 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать из excel файл txt? ru3000 Microsoft Office Excel 5 20.05.2016 10:33
Как создать из excel файл txt? 2 ru3000 Microsoft Office Excel 10 05.07.2009 20:07
как открыть файл.txt Sergeu Общие вопросы Delphi 1 25.09.2008 13:24
Как создать txt файл Titan123 Общие вопросы Delphi 7 29.06.2008 16:56
Как прочесть txt файл www.site.ru/info.txt BR17UY Работа с сетью в Delphi 1 16.04.2007 13:01