Question

J'ai une fenêtre contextuelle dans Microsoft Access contenant des champs de zone de texte qui doivent être remplis par l'utilisateur, par exemple:

First Name:
Last Name:

Maintenant, j'essaie de créer un bouton lorsque vous avez cliqué sur C: \ myTextFile.txt et peupler automatiquement ces champs.

Dans le fichier texte, cela ressemblerait à ceci:

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

Si essentiellement, je cherche 3 choses:

  1. Pour accéder au fichier texte
  2. Pour analyser les données
  3. Pour le peupler dans les zones de texte.(Les données n'ont pas besoin d'entrer dans une table avant que le bouton "Enregistrer" est cliqué sur ")
  4. mise à jour: C'est ce que j'ai écrit jusqu'à présent, je ne suis pas sûr de savoir pourquoi ça ne marche pas.

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

Était-ce utile?

La solution

Ici, par exemple pour le fichier que vous avez fourni et contrôles sur le formulaire nommé txtboxLastName et 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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top