Verwenden Sie eine Textdatei, um den Standardwert für ein Feld im Access-Formular bereitzustellen
-
02-01-2020 - |
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:
- um auf die Textdatei zuzugreifen
- um die Daten zu analysieren
- 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
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