Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Выражение2: Mid([MAIN]![MARKA];Len([MAIN]![MARKA])-2;1)
В запросе есть такое выражение. Исправно работает - выдает результат.
Задача - отобрать все строки, где оно не является точкой "."
Никак не могу сообразить - как условие написать, как не извращаюсь - Несоответствие типов данных......
Как правильно написать здесь условие?
19 дек 18, 13:11    [21768282]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Swa111
Member

Откуда:
Сообщений: 104
Serg197311,


MARKA <> '.'

если нужно что бы не оканчивалось на "." используем функцию right


right(MARKA,1) <> '.'
19 дек 18, 13:27    [21768296]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 281
Serg197311
Задача - отобрать все строки, где оно не является точкой "."

WHERE Mid([MAIN]![MARKA];Len([MAIN]![MARKA])-2;1) <>"."

или так:
WHERE [MAIN]![MARKA] Like "*[!.]??"

А что вы указываете, если получаете "Несоответствие типов данных"?
19 дек 18, 14:17    [21768352]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Если бы все было так просто.... Я таки не совсем идиот, кавычки конечно пробовал.... Фигвам короче

SELECT DISTINCT MAIN.*, Mid([MAIN]![MARKA],Len([MAIN]![MARKA])-2,1) AS Выражение2
FROM MAIN INNER JOIN MAIN1 ON MAIN.CODE = MAIN1.coded
WHERE (((Mid([MAIN]![MARKA],Len([MAIN]![MARKA])-2,1))='.') AND ((MAIN.MARKA) Like 'АБВК.83*') AND ((MAIN.FOLD)=False) AND ((MAIN1.sernn)=12) AND ((MAIN.DOC) Is Null Or (MAIN.DOC)='') AND ((InStr(1,[MAIN]![MARKA],'-'))=0))
ORDER BY MAIN.CODE, MAIN.CODE;

Вот полный текст запроса...
19 дек 18, 14:19    [21768353]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Кривцов Анатолий
WHERE Mid([MAIN]![MARKA];Len([MAIN]![MARKA])-2;1) <>"."
- пробовал, посылает по тому же адресу

Кривцов Анатолий
или так:
WHERE [MAIN]![MARKA] Like "*[!.]??"

А что вы указываете, если получаете "Несоответствие типов данных"?
и так посылает.......
19 дек 18, 14:21    [21768358]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Кривцов Анатолий

А что вы указываете, если получаете "Несоответствие типов данных"?

Ну до сих пор я пытался привести типы данных в соответствие И до сих пор у меня это получалось.....
19 дек 18, 14:22    [21768361]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
__Michelle
Member

Откуда:
Сообщений: 3062
Serg197311,

Еще:
Left(Right(MARKA,3),1) <> "."
19 дек 18, 14:33    [21768379]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 67864
Serg197311
Len([MAIN]![MARKA])-2,1))='.') 


Вот полный текст запроса...
жжоте не по-деЦЦки...
Функция значение какого типа возвращает?
И с чем вы сравниваете тип Long, товарищ?
19 дек 18, 14:34    [21768381]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 67864
а, пардон... Сам сижЮ и туплЮ...
19 дек 18, 14:36    [21768389]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
__Michelle
Serg197311,

Еще:
Left(Right(MARKA,3),1) <> "."

Я прям в шоке..... Работает..... Спасибо огромное!!!!
Но вопрос остался..... почему же Mid(), который тоже стринг возвращает, не прокатывал?????
19 дек 18, 15:08    [21768441]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 281
Serg197311
Но вопрос остался..... почему же Mid(), который тоже стринг возвращает, не прокатывал?????
У вас есть пустые поля "MARKA" или с текстом менее 3-х символов?
19 дек 18, 15:19    [21768453]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Кривцов Анатолий
Serg197311
Но вопрос остался..... почему же Mid(), который тоже стринг возвращает, не прокатывал?????
У вас есть пустые поля "MARKA" или с текстом менее 3-х символов?

В таблице вообще есть. В записях отобранных запросом без этого условия - нет. Ключевая непонятка для меня - если убрать это условие и оставить просто выражение Mid(....), то запрос отрабатывает, и выводится то что надо.... А вот как на него условие ставишь - несоответствие типов..... Да какое там блин несоответствие то быть может? стринг и стринг... или я чего то не догоняю....
19 дек 18, 15:28    [21768469]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
Посмотрите этот скрин и ответьте на вопрос: каково значение 2 аргумента функции при длине строки 0-2 и будет ли функция работать,если аргумент <=0 (Рекомендую применять тривиальный LIKE)

К сообщению приложен файл. Размер - 14Kb
19 дек 18, 15:41    [21768493]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
sdku
Посмотрите этот скрин и ответьте на вопрос: каково значение 2 аргумента функции при длине строки 0-2 и будет ли функция работать,если аргумент <=0 (Рекомендую применять тривиальный LIKE)

Like в той конструкции тоже не работал - пробовал
19 дек 18, 15:46    [21768500]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Лапух
Member

Откуда: Стойбище № 7
Сообщений: 861
Прогер_самоучка
...а, пардон... Сам сижЮ и туплЮ....

Да ладно.
С таким то количеством полезных сообщений?
Наверное как и я частенько просто прикалываешься прикалываетесь.Картинка с другого сайта.
19 дек 18, 15:47    [21768505]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
sdku
Посмотрите этот скрин и ответьте на вопрос: каково значение 2 аргумента функции при длине строки 0-2 и будет ли функция работать,если аргумент <=0

Почитайте все вышеописанное и пожалуйста ответьте на вопрос - почему конструкция с left-right работает, а конструкция с mid - нет
19 дек 18, 15:51    [21768512]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Кривцов Анатолий
Member

Откуда:
Сообщений: 281
Serg197311
В таблице вообще Null есть. В записях отобранных запросом без этого условия - нет.
У вас в WHERE это условие указано первым. Попробуйте указать его последним. Или вместо Len([MAIN]![MARKA]) просто указать любое положительное число.
Я это все к чему - Len(Null) вернет Null и он попадает в числовой аргумент Mid. Это может быть причиной несоответствия. В варианте с Left(Right(...)) такой ситуации нет.
Serg197311
Ключевая непонятка для меня - если убрать это условие и оставить просто выражение Mid(....), то запрос отрабатывает, и выводится то что надо....
Не понял. Какой "просто Mid(....)" вместо какого усовия? Не просто просто Mid-а?
Serg197311
А вот как на него условие ставишь - несоответствие типов..... Да какое там блин несоответствие то быть может? стринг и стринг... или я чего то не догоняю....
Вообще-то Mid, Left, Right принимают и возвращают Null, а вот Mid$, Left$, Right$ - только строку.

ЗЫ.
ORDER BY MAIN.CODE, MAIN.CODE; - одно и то же поле дважды, это описка?
19 дек 18, 16:32    [21768572]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6005
Пользовательская функция:
Function my(myStr As String)
Dim dlina
my = False
dlina = Len(myStr)
If dlina > 2 Then
    If Mid(myStr, dlina - 2, 1) = "." Then my = True
End If
End Function
и её применение
Выражение1: IIf(Not IsNull([marka]);my([marka]))
19 дек 18, 16:56    [21768612]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Кривцов Анатолий
Serg197311
В таблице вообще Null есть. В записях отобранных запросом без этого условия - нет.
У вас в WHERE это условие указано первым. Попробуйте указать его последним. Или вместо Len([MAIN]![MARKA]) просто указать любое положительное число.
Я это все к чему - Len(Null) вернет Null и он попадает в числовой аргумент Mid. Это может быть причиной несоответствия. В варианте с Left(Right(...)) такой ситуации нет.
воооот.... Скорее всего, завтра проверю

Кривцов Анатолий
Serg197311
Ключевая непонятка для меня - если убрать это условие и оставить просто выражение Mid(....), то запрос отрабатывает, и выводится то что надо....
Не понял. Какой "просто Mid(....)" вместо какого усовия? Не просто просто Mid-а?
Если просто вывести выражение Mid([MAIN]![MARKA];Len([MAIN]![MARKA])-2;1) без условия, то запрос отрабатывает. Завтра посмотрю, не было ли там пустых значений в эотм столбце


Кривцов Анатолий
ЗЫ.
ORDER BY MAIN.CODE, MAIN.CODE; - одно и то же поле дважды, это описка?
Ошибка конечно - уже исправил
19 дек 18, 17:45    [21768672]     Ответить | Цитировать Сообщить модератору
 Re: Несоответствие типов данных  [new]
Serg197311
Member

Откуда: Жуковский
Сообщений: 437
Пустых строк или ошибок в столбце Выражение2: Mid([MAIN]![MARKA];Len([MAIN]![MARKA])-2;1) нет.
Ну что ж, примем как данность и будем иметь ввиду на будущее. Спасибо всем за помощь!
20 дек 18, 07:04    [21769086]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить