استخدم ملف نصي لتوفير القيمة الافتراضية لحقل في نموذج الوصول

StackOverflow https://stackoverflow.com//questions/23065910

سؤال

لدي نافذة منبثقة في ميكروسوفت أسيس تحتوي على حقول مربع النص المطلوبة لملء من قبل المستخدم ، على سبيل المثال:

First Name:
Last Name:

الآن أحاول إنشاء زر عند النقر عليه سينظر فيه C:\mytextfile.النص والسيارات ملء تلك الحقول.

داخل الملف النصي سيبدو مثل هذا:

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

لذلك أساسا أنا أبحث عن 3 أشياء:

  1. للوصول إلى الملف النصي
  2. لتحليل البيانات
  3. لملء ذلك في مربعات النص.(البيانات لا تحتاج للذهاب إلى جدول حتى يتم النقر على زر" حفظ"")

تحديث:هذا ما كتبته حتى الآن ، لست متأكدا من سبب عدم نجاحه.

Private Sub LoadText_Click()

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

End Sub
هل كانت مفيدة؟

المحلول

هنا مثال للملف الذي قدمته وعناصر التحكم في النموذج المسمى txtboxLastName و 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top