|
|
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
вы тут все про какое-то ЧИСЛЕННОЕ ЗНАЧЕНИЕ толкуете я что-то не понял, это просто поля надо сравнивать (<>, =) или как-то еще? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 16:36:40 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
>>Однако, до сих пор не понятно, что тебе нужно: Что писать если оба поля 1 и два содержат Null. Если "Поле1" = Null, "Поле2" = Null, так и оставлять Null. >>и что значит значение в "Поле1" которого вообще нет в "Поле2"? Что одно из них нулевое или в поле 2 содержится часть текста (числа?) поля 1? "Поле1" содержит числ значение. "Поле2" нулевое. >>Может быть добавить еще одно поле-флаг, которое будет определять что с полем надо делать, допустим, если возвращается 0 - поля равны; 1 - "Поля1" отлично от численного значения "Поле2"; 2 - если есть значение в "Поле1" которого вообще нет в "Поле2". По значению этого поля изменять шрифт в ворде. Посоветуй как написать выражения для вышенаписанного блока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 16:40:08 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
СТОП!!! Пока мы тут все не запутались. Быстренько читаем правила форума, и верхний топик (там Гео что-то накатал умное) Потом даем на форум тестовые данные, и что должно получиться!!! ОК? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 16:42:20 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Например: Поле1 содержит: 15 Поле2 содержит: 15 Результат: 0 Поле1 содержит: 15 Поле2 содержит: 0 Результат: 1 Поле1 содержит: 15 Поле2 содержит: 123 Результат: 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 16:56:59 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Поле1 содержит: Null Поле2 содержит: 15 Результат: ? Поле1 содержит: 15 Поле2 содержит: Null Результат: ? Поле1 содержит: Null Поле2 содержит: Null Результат: ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 17:06:55 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
И Поле1 содержит: 15 Поле2 содержит: 15 3 Результат: 2 ? Поле1 содержит: 15 Поле2 содержит: 2 15 Результат: 2 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 17:08:54 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
авторПоле1 содержит: 15 Поле2 содержит: 0 Результат: 1 Мы вам про Null, а вы нам про ноль! Две большие разницы, между прочим! Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 17:21:21 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Поле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 Дмитрий огромное спасибо за помощь. Извини за кривую формулировку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 17:24:45 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
И еще вопрос: IIf(nz([Поле1],0)<>NZ([Поле2],0),[Поле1],[Поле2]) Это выражение на сравнение двух полей, на предмет отличия "Поля1" от "Поля2". Если отличные писать "Поле1", одинаковые "Поле2". А как дописать сюда, если "Поле1" = Null, "Поле2" = число, тогда Результат "Поле2". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 17:30:59 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Наводящий вопрос: могут ли поля Поле1 и Поле2 быть отрицательными? Каков вообще тип полей - если численный, то это double или целочисленный (int, long)? Или это текстовое поле? От ответов будет зависеть решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2004, 17:50:58 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
>> Наводящий вопрос: могут ли поля Поле1 и Поле2 быть отрицательными? Каков вообще тип полей - если численный, то это double или целочисленный (int, long)? Или это текстовое поле? От ответов будет зависеть решение. Отрицательными - нет, не могут. Тип полей - текстовый. Допускаются значения как численные: 12, 34 так и смешанные: F1, F2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 08:52:50 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Пишу следующее выражение: 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, как с числами) Подскажите в чем загвоздка. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 09:13:24 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Я составил такую таблицу: Поле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)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 09:45:54 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий спасибо тебе за помощь. Следующий вариант работает, но только вот это не работает (нужно какую-то коррекцию сделать здесь, и соответсвенно от этого выражения придумать выражения для флага): Поле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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 10:10:09 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Отличие твоей таблички от моей только в одном: N X X 0, что ведет к измкнкнию первой моей формулы IIF((IsNull(Поле1) And IsNull(Поле2), Null, IIF(IsNull(Поле1), Поле2, IIF(IsNull(Поле2), Поле1, Поле1)) Формула для флага - неизменна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 10:28:26 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Записал твое выражение: 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) Подскажи в чем ошибка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 10:49:16 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Ошибка в том - что не учтены все ситуации! Составь твблицу вновь и распиши в ней все возможные и невозможные ситуации! Проигай их на бумаге! И только после этого садись писать программу! Большинство варианотов написания у тебя есть! Дерзай! Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 11:00:09 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
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 условий, получается какая-то конитель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 11:42:40 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Написал выражение 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) Дмитрий, будь добр, подскажи как грамотно составить выражение. А то я что-то уже совсем не могу додумать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 11:56:49 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
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 сегодня! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 12:18:42 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий, огромное спасибо. Это то, что нужно. Ты мне очень помог. Еще вопросик. А как быть с флагами, исходя из этого выражения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 14:26:53 |
|
||
|
Сравненией записей из 2-х таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий, попробовал использовать твой пример формулы для флага: IIf(Not (IsNull([Поле1]) Or IsNull([Поле2])) And [Поле1]<>[Поле2];2;IIf(Not IsNull([Поле1]) And IsNull([Поле2]);1;0)) Получается какая-то ерунда. Очень много отображается полей с "Ошибкой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2004, 16:00:56 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32797385&tid=1670163]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 387ms |

| 0 / 0 |
