Frage

Ich habe in Microsoft Access ein Popup-Fenster mit Textfeldern, die vom Benutzer ausgefüllt werden müssen, zum Beispiel:

First Name:
Last Name:

Jetzt versuche ich, eine Schaltfläche zu erstellen, die beim Klicken in C: MyTextFile.txt schauen und diese Felder automatisch bevölkert.

in der Textdatei würde es so aussehen:

##$@#%#$543%#$%#$$#%LAST NAME:BOB#$#@$@#$@#$@#FIRST NAME:DERRICK$#%$#%$#%#$%$#%$#

Ich suche also im Wesentlichen nach drei Dingen:

  1. um auf die Textdatei zuzugreifen
  2. um die Daten zu analysieren
  3. um es in die Textfelder einzufügen.(Die Daten müssen erst in eine Tabelle eingefügt werden, wenn auf die Schaltfläche „SPEICHERN“ geklickt wird.)

Aktualisieren:Dies ist, was ich bisher geschrieben habe. Ich bin mir nicht sicher, warum es nicht funktioniert.

Private Sub LoadText_Click()

    Dim myFile As String myFile = "C:\myFile.txt"
    Me.NameofTextbox = Mid(myFile, 7, 3)

End Sub
War es hilfreich?

Lösung

Hier ein Beispiel für die von Ihnen bereitgestellte Datei und die benannten Steuerelemente im Formular txtboxLastName Und txtboxFirstName

Dim mFields() As String ' array with fields' names in file
Dim mControls() As String ' corresponding controls' names
Dim mStopChars() As String ' Characters that put after values

Dim tmpstr As String
Dim content As String

Dim i As Long
Dim fStart  As Long
Dim valStart As Long
Dim valEnd As Long
Dim FieldValue As String
Dim j As Long
Dim tmp As Long

' prepare maps

' here : included in field name for common case
mFields = Split("LAST NAME:,FIRST NAME:", ",") 
mControls = Split("txtboxLastName,txtboxFirstName", ",")
mStopChars = Split("#,$,@,%", ",")

' read file into string
Open "c:\mytextfile.txt" For Input As #1

Do While Not EOF(1)
    Input #1, tmpstr
    content = content & tmpstr
Loop

Close #1

' cycle through fields and put their values into controls
For i = LBound(mFields) To UBound(mFields)
    fStart = InStr(1, content, mFields(i))
    If fStart > 0 Then
        valStart = fStart + Len(mFields(i))  'value start at this pos
        'cycle through possible stop chars to locate end of current value
        valEnd = Len(content)
        For j = LBound(mStopChars) To UBound(mStopChars)
            tmp = InStr(valStart, content, mStopChars(j))
            If tmp > 0 Then
                If tmp <= valEnd Then
                    valEnd = tmp - 1
                End If
            End If
        Next j
        ' cut value
        FieldValue = Mid(content, valStart, valEnd - valStart + 1)
        ' assign to control
        Me.Controls(mControls(i)).Value = FieldValue
    End If
Next i
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top