0 / 0 / 0
Регистрация: 17.06.2022
Сообщений: 1
1

Как изменить конкретный элемент в поле?

17.06.2022, 16:44. Показов 120. Ответов 1
Метки нет (Все метки)

В БД имеется поле fld, которое состоит из набора строк:
"aa"
"bb"
"cc"
Как изменить только вторую строку, не трогая остальные?

doc.replaceitemvalye("fld", "dd") изменяет весь набор строк
результат будет
"dd"
а нужно
"aa"
"dd"
"cc"


doc.replaceitemvalye("fld(1)", "dd") ругается на синтаксис

doc.fld(1) = "dd" в процессе выполнения дает ошибку Illegal use of PROPERTY

Заранее благодарен.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2022, 16:44
Ответы с готовыми решениями:

Как изменить конкретный символ в консоли на другой?
Как изменить конкретный символ в консоли на другой(зная строку и номер)?

Как вывести конкретный элемент из List?
sell.product.Add(new Seller("Iphone 13", 1500)); sell.product.Add(new Seller("Iphone...

Как получить конкретный элемент цикла?
Короче говоря, я сейчас пытаюсь работать с jstl, у меня есть цикл foreach, который создаёт карточки...

Как удалить конкретный элемент из ListBox’а
удалить конкретный элемент из ListBox’а

1
292 / 77 / 37
Регистрация: 02.02.2013
Сообщений: 301
18.06.2022, 11:01 2
Здравствуйте

Для значений в поле с ними нужно работать как с массивом т.е. как у вас и было но это самое легкое.

PureBasic
1
 item.Values(Index) = Value
Самое сложное это не замена значения а предварительное получение этого массива и проведение предварительных проверок что массив существует (есть значения,) что идет обращение к нужному значение (не за пределами массива) и т.д. программисткая рутина.

Я в свое время чисто для себя написал небольшой класс для работы со значениями поля. Привожу его ниже . Там есть метод ReplaceExistValue которое можно использовать для замены нужного значения

PureBasic
1
2
3
4
5
6
7
8
    Public Sub ReplaceExistValue(Index As Integer, Value As String)
%REM Замена текущего значения по индексу Index,  другим указанным значением Value
%END REM
    ... (пропуск проверок)...
            If (Index => Lbound(item.Values)) And (index <= Ubound(item.Values))  Then
                Let  item.Values(Index) = Value
            End If          
    end sub
В классе я заменил тело поля объектом Body т.к. это класс то ображение к поля идет всегда через me.body
Для примера можете посмотреть различные операции работы со значениями поля.

PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Public Class notesclassitem 'поле документа
    
    Private body As Variant 'любое поле
    
    Public Sub new(item As Variant)
        Set Me.body = item
    End Sub
    
    Public Property Get isexist As Variant
          'проверка наличия поля
        isexist = Not (Me.body Is Nothing)
    End Property
    
    Public Property Get text As String
          'текстовое значение поля
        If Me.isexist Then text = Me.body.text
    End Property
    
    Public Property Get values As Variant
     'все значения поля
        If Me.isexist Then 
            If Isarray(Me.body.values) Then
                If Me.text<>"" Then values = Me.body.values 'поле не пустое
            End If
        End If
    End Property
 
    Public Property Set values As Variant
        'все значения поля
        If Me.isexist Then 
            If IsArray(Me.body.values) Then
                Let Me.body.values = values
            End If
        End If
    End Property
        
    Public Function value(index As Integer) As String
     'функция возвращает указанное значение по индексу
     'значению с индексом 0 - соответствует 1-ое значение и т.д.     
        If Me.isexist Then               
            Dim v As Variant               
            v = Me.values               
            If Isarray(v) Then 'значения в поле обнаружены
                If (index>=Lbound(v)) And (index<=Ubound(v)) Then
                          'значение с указанным индексом существует
                    value = v(index) 'получение значения по индексу
                End If
            End If
        End If          
    End Function
    
    Public Property Get isin(value As String) As Boolean
          'возвращет true, если в поле есть указанное значение
        If Me.isexist Then
            If (value="") And (UBound(me.body.values)=0) Then stop
            Let isin=Me.body.contains( value )
        End If 
    End Property
    
    Public Sub setin( value, addition As Variant)
          'записывает в поле указанное значение в указанном режиме         
        If Me.isexist Then 
            value = Trim(value) 'убираем концевые пробелы
            Select Case addition=True
            Case True: 'добавляем значение к существующим
                Call Me.body.appendtotextlist( value) 'поля обязательно должно существовать
            Case False: 'заменяем существующее значение новым
                Dim parent As notesdocument
                Set parent = Me.body.parent 'получаем родитель для доступа к методу replace
                Call parent.replaceitemvalue( Me.body.name, value )
                Me.body.issummary = True
            End Select
        End If
    End Sub
    
    Public Property Get ismanyvalues As Variant
          'свойство возвращает true если в поле указано более одного значения
        If Me.isexist Then
            Dim v As Variant
            v = Me.values
            If Isarray(v) Then ismanyvalues = Not ( Ubound(v) = 0) 'если значение одно
        End If
    End Property
    
    Public Property Get isexistvalues As Boolean
          'возвращает true если в поле есть хотя бы одно значение
        
        If Me.isexist Then
            If Not Me.ismanyvalues Then 'в поле только одно значение
                    'далее определяется является ли единственое значение пустым
                Dim v As Variant
                Let v = Me.values
                Let isexistvalues = v(Lbound(v))<>""
            Else
                Let isexistvalues = True
            End If
        End If
    End Property
    
    Public Sub ReplaceExistValue(Index As Integer, Value As String)
%REM Замена текущего значения по индексу,    другим указанным значением
%END REM
        If Me.isexistvalues Then
            If (Index => Lbound(Me.Body.Values)) And (index <= Ubound(Me.body.Values))  Then
                Let Me.Body.Values(Index) = Value
            End If          
        End If
    End Sub
        
    Public Function Appendtext(Text As String)
%REM Добавление в поле RICHTEXT указанного комментария      
%END REM
        If Me.IsExist Then
            If ( Me.Body.Type = RICHTEXT ) Then
                Call Me.Body.AddNewLine(1)
                Call Me.Body.AppendText(Text)
            Else
                Call me.body.Appendtotextlist(Text)
                Let me.values = ArrayUnique(me.values)
            End if
        End If
    End Function
    
End Class
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2022, 11:01
Помогаю со студенческими работами здесь

Как поменять конкретный элемент двумерного массива
Когда я пытаюсь обратиться к элементу массива, таким же образом, как и в сишных языках, заменяется...

Как обратиться в ресурсах на конкретный элемент массива string-array?
Подскажите пожалуйста начинающему как вывести в ListView или TextView один элемент из массива...

Iterator в списке - как вывести на экран конкретный элемент списка?
Доброго времени суток! Недавно начал работу со списком в c++ и у меня возник вопрос:...

Как с JS или jQuery изменить цвет одного символа в поле формы(в поле находится некоторый текст)
Как с JS или jQuery изменить цвет одного символа в поле формы(в поле находится некоторый текст)

С++ Нужно выбрать конкретный элемент и удалить предыдущий в односвязном списке. Как такое реализовать?
Нужно выбрать один элемент в Линкед Листе и удалить стоящий перед ним. Насколько я понимаю, нужно...

Как программно изменить цвет текста в поле ввода и как выделить весь текст в поле ввода по умолчанию
Как программно изменить цвет текста в поле ввода и как выделить весь текст в поле ввода по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru