powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравненией записей из 2-х таблиц
22 сообщений из 47, страница 2 из 2
Сравненией записей из 2-х таблиц
    #32796513
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы тут все про какое-то ЧИСЛЕННОЕ ЗНАЧЕНИЕ толкуете

я что-то не понял, это просто поля надо сравнивать (<>, =) или как-то еще?

Код: plaintext
iif(isnull(Поле2),  2 , iif(Поле1<>Поле2, 1 , 0 ))
Не то?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796531
>>Однако, до сих пор не понятно, что тебе нужно:
Что писать если оба поля 1 и два содержат Null.

Если "Поле1" = Null, "Поле2" = Null, так и оставлять Null.

>>и что значит значение в "Поле1" которого вообще нет в "Поле2"? Что одно из них нулевое или в поле 2 содержится часть текста (числа?) поля 1?

"Поле1" содержит числ значение. "Поле2" нулевое.

>>Может быть добавить еще одно поле-флаг, которое будет определять что с полем надо делать, допустим, если возвращается 0 - поля равны; 1 - "Поля1" отлично от численного значения "Поле2"; 2 - если есть значение в "Поле1" которого вообще нет в "Поле2". По значению этого поля изменять шрифт в ворде.

Посоветуй как написать выражения для вышенаписанного блока.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796538
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СТОП!!!

Пока мы тут все не запутались.

Быстренько читаем правила форума, и верхний топик (там Гео что-то накатал умное)
Потом даем на форум тестовые данные, и что должно получиться!!!



ОК?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796578
Например:

Поле1 содержит: 15
Поле2 содержит: 15
Результат: 0

Поле1 содержит: 15
Поле2 содержит: 0
Результат: 1

Поле1 содержит: 15
Поле2 содержит: 123
Результат: 2
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796616
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле1 содержит: Null
Поле2 содержит: 15
Результат: ?

Поле1 содержит: 15
Поле2 содержит: Null
Результат: ?

Поле1 содержит: Null
Поле2 содержит: Null
Результат: ?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796623
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И

Поле1 содержит: 15
Поле2 содержит: 15 3
Результат: 2 ?

Поле1 содержит: 15
Поле2 содержит: 2 15
Результат: 2 ?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796673
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПоле1 содержит: 15
Поле2 содержит: 0
Результат: 1
Мы вам про Null, а вы нам про ноль!
Две большие разницы, между прочим!

Код: plaintext
iif(поле2= 0 ,  2 , iif(поле1<>поле2,  1 ,  0 ))
или я это уже писал?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796681
Поле1 содержит: Null
Поле2 содержит: 15
Результат: 0

Поле1 содержит: Null
Поле2 содержит: Null
Результат: 0

Поле1 содержит: 15
Поле2 содержит: Null
Результат: 1

Поле1 содержит: 15
Поле2 содержит: 153
Результат: 2

Поле1 содержит: 15
Поле2 содержит: 215
Результат: 2

Дмитрий огромное спасибо за помощь. Извини за кривую формулировку.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796703
И еще вопрос:

IIf(nz([Поле1],0)<>NZ([Поле2],0),[Поле1],[Поле2])

Это выражение на сравнение двух полей, на предмет отличия "Поля1" от "Поля2". Если отличные писать "Поле1", одинаковые "Поле2".

А как дописать сюда, если "Поле1" = Null, "Поле2" = число, тогда Результат "Поле2".
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32796751
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наводящий вопрос: могут ли поля Поле1 и Поле2 быть отрицательными? Каков вообще тип полей - если численный, то это double или целочисленный (int, long)? Или это текстовое поле? От ответов будет зависеть решение.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797174
>> Наводящий вопрос: могут ли поля Поле1 и Поле2 быть отрицательными? Каков вообще тип полей - если численный, то это double или целочисленный (int, long)? Или это текстовое поле? От ответов будет зависеть решение.

Отрицательными - нет, не могут.
Тип полей - текстовый.
Допускаются значения как численные: 12, 34 так и смешанные: F1, F2.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797199
Пишу следующее выражение:

IIf(Val(nz([Поле1];0))=0 And Val(nz([Поле2];0))<>0;[Поле2];IIf(nz([Поле1];0)<>nz([Поле2];0);[Поле1];[Поле2]))

Для численных значений получается нормально:

Поле1: 20
Поле2: 20
Рез.: 20

Поле1: 0
Поле2: 20
Рез.: 20

Поле1: 20
Поле2: 52
Рез.: 20

Поле1: 57
Поле2: 0
Рез.: 57

Поле1: F2
Поле2: 0
Рез.: F2

Только здесь не то, что нужно:

Поле1: 0
Поле2: F7
Рез.: 0 (должно быть по идее F7, как с числами)

Подскажите в чем загвоздка. Спасибо.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797259
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я составил такую таблицу:
Поле1 Поле2 Результат Флаг
Null Null Null 0
Null X Null 0
X Null Поле1 1
X X Поле1 0
X Y Поле2 2

(Если я не прав - поправь меня)

Отсюда видим, что Поле2 является результатом если Поле2 и Поле1 не рулевые и не равны между собой, если же Поле1 нулевое, то результат тоже нулевой, в остальных случаях результат - Поле1

IIF(Not (IsNull(Поле1) Or IsNull(Поле2)) And Поле1 <> Поле2, Поле2,
IIF(IsNull(Поле1), Null, Поле1))

Для флага рассуждения немного иные
IIF(Not (IsNull(Поле1) Or IsNull(Поле2)) And Поле1 <> Поле2, 2,
IIF(Not IsNull(Поле1) And IsNull(Поле2), 1, 0))
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797308
Дмитрий спасибо тебе за помощь.

Следующий вариант работает, но только вот это не работает (нужно какую-то коррекцию сделать здесь, и соответсвенно от этого выражения придумать выражения для флага):

Поле1: 0
Поле2: F7
Рез.: 0 (должно быть по идее F7, как с числами, а в результате все равно 0)

IIf(Val(nz([Поле1];0))=0 And Val(nz([Поле2];0))<>0;[Поле2];IIf(nz([Поле1];0)<>nz([Поле2];0);[Поле1];[Поле2]))

Таблица следующая должна быть:

N - Null
Р - результат
Ф - флаг

1 2 Р Ф
-------
N N N 0
N X X 0
X N X 1
X X X 0
X Y X 2
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797355
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отличие твоей таблички от моей только в одном: N X X 0, что ведет к измкнкнию первой моей формулы

IIF((IsNull(Поле1) And IsNull(Поле2), Null,
IIF(IsNull(Поле1), Поле2, IIF(IsNull(Поле2), Поле1, Поле1))

Формула для флага - неизменна
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797385
Записал твое выражение:

IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];[Поле1])))

Здесь почти все идеально, только

П1:0
П2:20
Р:0 (должно быть 20)

П1:0
П2:F7
Р:0 (должно быть F7)

Подскажи в чем ошибка?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797411
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка в том - что не учтены все ситуации! Составь твблицу вновь и распиши в ней все возможные и невозможные ситуации! Проигай их на бумаге! И только после этого садись писать программу! Большинство варианотов написания у тебя есть!
Дерзай! Удачи!
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797542
IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];[Поле1])))

Это фактическая реализация

N N N 0
N X X 0
X N X 1

Должно быть по идее еще 2 условия. Пытаюсь сделать 4,5 условий, получается какая-то конитель.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797569
Написал выражение

IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];IIf([Поле1]=[Поле2];[Поле2];IIf([Поле1]<>[Поле2];[Поле1];[Поле2])))))

Получается

П1:0
П2:20
Р:0 (должно быть 20)

П1:0
П2:F7
Р:0 (должно быть F7)

Дмитрий, будь добр, подскажи как грамотно составить выражение. А то я что-то уже совсем не могу додумать.
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32797648
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IIf(IsNull([Поле1]) And IsNull([Поле2]);Null;IIf(IsNull([Поле1]);[Поле2];IIf(IsNull([Поле2]);[Поле1];IIF([Поле1] = "0", [Поле2], [Поле1]))))

Еще раз внимательно прочти топики от 16:42 paparome и мой от 11:00 сегодня!
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32798048
Дмитрий, огромное спасибо. Это то, что нужно. Ты мне очень помог.

Еще вопросик. А как быть с флагами, исходя из этого выражения?
...
Рейтинг: 0 / 0
Сравненией записей из 2-х таблиц
    #32798361
Дмитрий, попробовал использовать твой пример формулы для флага:

IIf(Not (IsNull([Поле1]) Or IsNull([Поле2])) And [Поле1]<>[Поле2];2;IIf(Not IsNull([Поле1]) And IsNull([Поле2]);1;0))

Получается какая-то ерунда. Очень много отображается полей с "Ошибкой".
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сравненией записей из 2-х таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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