powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пересечение содержимого двух полей
13 сообщений из 13, страница 1 из 1
Пересечение содержимого двух полей
    #39266737
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

В таблице есть два текстовых поля.
В каждом может быть текст длиной до 7 символов, состоящих из тире и семи цифр от 1 до 7.

Надо в третьем поле "Результат" получить пересечение первых двух полей.
Т.е. в третьем поле должны быть символы, имеющиеся в этих двух полях одновременно.

Пример.

Поле1Поле2Результат1234567-23--6--23--6-1234-----34567--34---123-------456--------1-3---7-2-4--7------7
Очевидное решение - проверять одновременное присутствие в двух полях
каждого из семи символов с помощью like и iif (семь вложений).
Может можно поизящней и попроще?
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266755
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,

возможно я не понял постановки.

об этом идет речь?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Function fsand(ByVal lparam As String, rparam As String, Optional ByVal pspad As String = "-") As String

  Dim lmin&, lmax&, ltemp&
  
  lmin = Len(lparam)
  lmax = Len(rparam)
  If lmin > lmax Then
    ltemp = lmin
    lmin = lmax
    lmax = ltemp
  End If
  
  fsand = String$(lmax, pspad)
  
  Dim ichar As Integer
  
  For ltemp = 1 To lmin
    ichar = AscW(Mid$(lparam, ltemp, 1))
    If ichar = AscW(Mid$(rparam, ltemp, 1)) Then
      Mid$(fsand, ltemp, 1) = ChrW(ichar)
    End If
  Next
  
End Function

...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266780
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,
Попробуйте:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function my(perv, vtoroi) 'сравниваемые поля
Dim i, a, b, rez
For i = 1 To 7
a = Mid(perv, i, 1) 'символ в первом поле
b = Mid(vtoroi, i, 1)  'символ во втором поле
If a = b Then rez = rez & a Else rez = rez & "-"
Next
my = rez 
End Function
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266781
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПыСы:сейчас сравниваются символы в одной и той же позиции. Если надо в любой-еще один цикл по второму полю,вложенный в первый
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266788
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо! Думал, что можно как-нибудь обойтись без циклов.
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266794
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,
чем же это циклы Вам не угодили-а может вообще без VBA(вот только получится ли?)
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266795
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,
чем же это циклы Вам не угодили-а может вообще без VBA(вот только получится ли?)
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266805
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не против циклов. Думал, что может есть какая-либо функция ))))))
А без VBA обойтись можно.
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266841
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так это и есть пользовательская функция, которая даже появится в построителе (в функциях папочка с именем БД.Написать ее надо в общем модуле) и используется так же как и встроенная
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266849
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdkuтак это и есть пользовательская функция, которая даже появится в построителе (в функциях папочка с именем БД.Написать ее надо в общем модуле) и используется так же как и встроенная
Все это понятно. Я имел ввиду встроенную ))))))
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266861
Фотография Tigrist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
левое и правое выражения можно превратить в двоичное число. это же наверно дни недели?
потом сделать встроенную функцию and
и потом результат обратно разложить на цифры и тире.

решение sdku самое простое
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266862
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИВП,
Стесняюсь спросить:а в чем разница? (ведь не могли создатели ACCESS предусмотреть ВСЕ "хотелки" пользователя)
Чем использование этой функции отличается от использования встроенной:
Код: vbnet
1.
2.
SELECT ctl1, ctl2, my(ctl1,ctl2) AS сравнение
FROM tbl1;
...
Рейтинг: 0 / 0
Пересечение содержимого двух полей
    #39266863
ИВП
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да согласен я давно )))))
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Пересечение содержимого двух полей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]