Добрый день,
Начну с того, что я работаю в небольшой компании и не имею официального обучения
Записывает все, что я узнал, покупая методом проб и ошибок и используя коды других людей.
Применение: у нас есть база данных заказов на поставку, которая работает очень долго и бросает вызов людям, которые в разных словах вводят имена поставщиков. Теперь я нашел код, который переходит в выбранные формы и изменяет значения полей, и это именно то, что мне нужно, единственная проблема
это одна строка Поле, которое я хочу обновить, содержит около 5 строк текста (название компании, номер телефона и т. Д.), А первоначальный программист отложил всю информацию в одном поле.
Вопрос: есть ли способ, в сценарии, связанном ниже, как я могу сделать так, чтобы каждый ввод подсказки переходил в другую строку. Я попробовал несколько вещей, и я думаю, что я могу упустить что-то очевидное (если я пытаюсь выполнить chr (10) ; chLv все, что я получаю, это либо 2 значения рядом друг с другом, либо разделение их запятой)
`
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Тусклая подсказка как строка
Dim fieldName As String
Dim fieldValue As String
Dim dataTypes As Variant
Dim thisDataType As String
Dim fieldValues As Variant
Dim newFieldValues As Variant
Dim db As NotesDatabase
Dim coll As NotesDocumentCollection
Дим я как целое
Dim Doc As NotesDocument
Тусклый элемент As NotesItem
prompt = "Please enter the name of the field to be updated"
fieldName = ws.Prompt(3, "Enter Field Name", prompt, "")
If fieldName = "" Then Exit Sub
If Instr(fieldName, " ") <> 0 Then
prompt = "Error! Field Names can't have spaces!"
Msgbox prompt, 16, "Error"
Exit Sub
End If
prompt = "Please enter the new value. For multiple values, separate with a colon."
Value1 =ws.Prompt(3, "Enter Field Value", prompt, "")
Value2= ws.Prompt(3, "Enter Field Value", prompt, "")
Fieldvalue=value1 + Chr(10) +value2
Redim dataTypes(5) As String
dataTypes(0) = "Text"
dataTypes(1) = "Number"
dataTypes(2) = "Date"
dataTypes(3) = "Readers"
dataTypes(4) = "Authors"
dataTypes(5) = "DELETE THIS FIELD"
prompt = "Choose the data type of the value(s)"
thisDataType = ws.Prompt(4, "Choose Data Type", prompt, dataTypes(0), dataTypes)
If thisDataType = "" Then Exit Sub
Set db = session.CurrentDatabase
Set coll = db.UnprocessedDocuments
fieldValues = Evaluate({@Explode("} & fieldValue & {"; ":")})
Select Case thisDataType
Case dataTypes(0) : Redim newFieldValues(Ubound(fieldValues)) As String
Case dataTypes(1) : Redim newFieldValues(Ubound(fieldValues)) As Double
Case dataTypes(2) : Redim newFieldValues(Ubound(fieldValues)) As Variant
Case dataTypes(3) : Redim newFieldValues(Ubound(fieldValues)) As String
Case dataTypes(4) : Redim newFieldValues(Ubound(fieldValues)) As String
End Select
For i = Lbound(fieldValues) To Ubound(fieldValues)
Select Case thisDataType
Case dataTypes(0) : newFieldValues(i) = Trim(fieldValues(i))
Case dataTypes(1) : newFieldValues(i) = Val(fieldValues(i))
Case dataTypes(2) : newFieldValues(i) = Cdat(fieldValues(i))
Case dataTypes(3) : newFieldValues(i) = Trim(fieldValues(i))
Case dataTypes(4) : newFieldValues(i) = Trim(fieldValues(i))
End Select
Next
Set doc = coll.GetFirstDocument
While Not doc Is Nothing
If thisDataType = "DELETE THIS FIELD" Then
If doc.HasItem(fieldName) Then Call doc.RemoveItem(fieldName)
Else
Call doc.ReplaceItemValue(fieldName, newFieldValues)
If thisDataType = dataTypes(3) Or thisDataType = dataTypes(4) Then
Set item = doc.GetFirstItem(fieldName)
If thisDataType = dataTypes(3) Then item.IsReaders = True
If thisDataType = dataTypes(4) Then item.IsAuthors = True
End If
End If
Call doc.Save(True, False)
Set doc = coll.GetNextDocument(doc)
Wend
End Sub
«
Извините за длинный пост, но не был уверен, что нужно. Я впервые пишу о помощи, но мне страшно, что я упустил что-то противоположное.
Francois