Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Несоответствие типов данных?


Автор: Woodlin 14.11.2009, 14:43
Помогите разобраться что не так.
кусок кода:
Код

Private Sub Номер_по_чертежу_BeforeUpdate(Cancel As Integer)
'On Error GoTo Номер_по_чертежу_Err

Dim X As Integer
'Dim I As Integer
'Dim Nom As String

Nom = Me!Номер_по_чертежу.Value
I = 1

X = DCount("[Номер_по_чертежу]", "Втулки", _
    "[Индекс] ='" & CInt(I) & "' and [Номер_по_чертежу]='" & Nom & "'")



последние две строки ругаются, что Несоответствие типов данных в выражении условия отбора.
Причём упирается всё в в переменную I, ставлю вместо её просто 1 всё работает, пробовал различный тип данных не помогло. В таблице поле Индекс имеет тип данных числовой целое

Автор: ТоляМБА 14.11.2009, 14:47
Вместо CInt(I) ставил просто I ?

Автор: Woodlin 14.11.2009, 14:50
ТоляМБА, если имеете в виду вот так:
X = DCount("[Номер_по_чертежу]", "Втулки", _
"[Индекс] ='" & I & "' and [Номер_по_чертежу]='" & Nom & "'")
,   то картина та же

Автор: ТоляМБА 14.11.2009, 15:09
Woodlin, MsgBox(I) что показывает?

Вообще для отлова таких ошибок делаю:

Код
Dim S as String;

S="[Индекс] ='" & I & "' and [Номер_по_чертежу]='" & Nom & "'"
MsgBox(S)

и сразу видно что передаётся.

Автор: Woodlin 14.11.2009, 15:23
ТоляМБА, 
вот что пишет:

Автор: Akina 14.11.2009, 22:26
Woodlin, Вы хотя бы думайте, что хотите заставить сделать программу... 
Вы собираете СТРОКУ. Используете КОНКАТЕНАЦИЮ. И в качестве операнда лепите ЦЕЛОЕ! Не, ну должен же быть где-то предел...
CStr(I), CStr(Nom).

Автор: Woodlin 16.11.2009, 06:48
Akina, 
Цитата(Akina @  14.11.2009,  22:26 Найти цитируемый пост)
Вы собираете СТРОКУ. Используете КОНКАТЕНАЦИЮ. И в качестве операнда лепите ЦЕЛОЕ! Не, ну должен же быть где-то предел...
CStr(I), CStr(Nom). 

Почему то всё упирается в I. Я уже пробовал и CStr(I), и CInt(I), и просто I, ответ один: несоответствие типов данных в выражении условия отбора.

Автор: Akina 16.11.2009, 08:44
Так. Читаем закреплённую тему раздела и выполняем инструкции.

Автор: Woodlin 16.11.2009, 09:30
Akina,   если Вы имеете в виду сбросить базу, то вот...

только почему то при экспорте форм нарушилась связь с субформой в форме "Заказ новой оснастки",.. в общем редактируйте поле "Номер_по_чертежу", ошибка возникает при событии до обновления

Автор: Akina 16.11.2009, 09:37
Цитата(Woodlin @  16.11.2009,  10:30 Найти цитируемый пост)
при экспорте форм 

Какой экспорт форм??? в инструкциях про это нет ни полслова.

Добавлено @ 09:44
Вот строка с ЛЯПОМ.
Код

X = DCount("[Номер_по_чертежу]", "[Втулки]", _
"[Индекс]='" & CStr(I) & "'")
Перечитай ВСЁ, что тебе написано выше. И включи мозги.
Как только я убрал твой ляпсус - всё начало работать.

Автор: Woodlin 16.11.2009, 13:03
Akina, я всю голову поломал... а оказалось дело в одинарных кавычках. Спасибо за помощь!!!

Получается, если собирать строку и тип данных переменной-целое одинарные кавычки не ставятся?

Автор: Akina 16.11.2009, 13:10
Кавычки в строке запроса или выражения обозначают, что содержимое подстроки между ними имеет тип СТРОКА.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)