Разбор веб-формы в таблице данных - PullRequest
1 голос
/ 12 февраля 2009

Кто-нибудь знает, как написать динамический анализатор данных в VBA для сбора данных из текстового файла и ввода их в таблицу базы данных (доступ в MS)? Форма содержит около 55 полей, поэтому я бы лучше написал код, который мог бы подобрать название поля из текста, чем копировать текст. Есть ли умный способ сделать это и избежать запуска стороннего приложения для выполнения задачи?

Веб-форма (которая выводится из компонента Joomla «PERforms») также может прикреплять файл XML, но это не кажется совместимым для простого импорта записей в Access.

Формат данных приведен ниже (мне пришлось добавить дополнительные символы возврата каретки, чтобы они отображались в нескольких строках.

Поле 1: Тест

Поле 2: Тест 2

Поле 3: Это адрес

Что такое текстовая область

в форме

Поле 4: Поле 4

У меня все нормально, я могу получить данные где-нибудь, откуда Access может забрать их, только их анализ и вызывает у меня проблему.

Как всегда, ваша помощь очень ценится.

РЕДАКТИРОВАТЬ, как требуется:

Role Applied For: Door Supervisor
Title: Mr

Full Name: John Smith



SIA DL Badge Number: 01300114000000000







Home Address: Catford Road,Bellingham
London

Home Postcode: SE1 1SE

Nationality: Nigerian

I certify that I am entitled to work within the United Kingdom: Yes

Term Time Address: Sheep St, Bellingham
London

Term Time Postcode: se1 1se



Evening Phone Number: 07222284806

Mobile Number: 07922226206

Email Address: yxs@yahoo.co.uk

Most Recent or Current Employer: Employer.Blah

1 Ответ

1 голос
/ 13 февраля 2009

Рассматривали ли вы FileSystemObject и текстовый поток? Это займет немного кодирования, но не так много.

Access может импортировать таблицы HTML, если это возможно.

РЕДАКТИРОВАТЬ со ссылкой на комментарии.

Обратите внимание, что это грубая схема, и я не учел, что последнее поле содержит более одной строки.

Sub BuildTable()
'Reference Windows Scripting Host Object Model '
Dim fs As FileSystemObject
Dim f As TextStream
Dim strfile
Dim a, fld, fldlist, strSQL

Set fs = CreateObject("Scripting.FileSystemObject")

strfile = "C:\Docs\TestData.txt"
Set f = fs.OpenTextFile(strfile)

Do While AtEndOfStream <> True
    If f.AtEndOfStream Then Exit Do

    a = f.ReadLine

    'Assumes all lines with colons have a field '
    ' at the start '
    If InStr(a, ":") > 0 Then
        fld = Left(a, InStr(a, ":") - 1)
        fldlist = fldlist & ",[" & fld & "] Text(250)"
    End If
Loop

'Run once'
strSQL = "CREATE TABLE ImportData (" & Mid(fldlist, 2) & ")"

CurrentDb.Execute strSQL
End Sub

Sub FillTable()
'Reference Windows Scripting Host Object Model '
Dim fs As FileSystemObject
Dim f As TextStream
Dim rs As DAO.Recordset
Dim strfile
Dim a, fld, dat, lastfield 

Set rs = CurrentDb.OpenRecordset("ImportData")
lastfield = rs.Fields(rs.Fields.Count - 1).Name

Set fs = CreateObject("Scripting.FileSystemObject")

strfile = "C:\Docs\TestData.txt"
Set f = fs.OpenTextFile(strfile)

rs.AddNew
Do While AtEndOfStream <> True
    If f.AtEndOfStream Then Exit Sub

    a = f.ReadLine

    If InStr(a, ":") > 0 Then
        'field and data, assumes all lines with '
        'a colon have a field '
        'If you have tidied the table, now is a '
        'good time to check that this is a field '
        If fld <> "" Then
            rs(fld) = dat

            fld = ""
            dat = ""

        End If

        fld = Left(a, InStr(a, ":") - 1)
        dat = Mid(a, InStr(a, ":") + 1)
    Else
        If Trim(a) <> "" Then
            dat = dat & a
        End If
    End If

    If InStr(a, lastfield) > 0 Then
        rs(fld) = dat

        fld = ""
        dat = ""

        rs.Update
        rs.AddNew
    End If

Loop
End Sub
...