2013-02-27 3 views
0

мне нужно фильтровать доступные варианты выпадающего списка, в соответствии с IdKey текущей записи [AllocID]SQL ошибки синтаксиса в VBA для фильтрации выпадающей

После unsuccessfullly пробовать различные варианты ИНЕК непосредственно в RowSource из выпадающий список, я наткнулся на решение предлагая мне установить RowSource в On Текущие события формы:

Private Sub Form_Current() 
MSMgeID.RowSource = "SELECT[MSMge].[PrjID] ... FROM MSMge WHERE [PrjID] ='" & Me.AllocID & " '" 
End Sub 

Оба [PrjID] и [AllocID] числовые поля типа Long Integer, но я получаю «Несоответствие данных в выражении критериев».

Есть ли что-то, что я делаю в синтаксисе SQL, который вводит в заблуждение одно из полей в виде текста?

+0

Какое сообщение об ошибке вы получаете? –

+0

Сообщение об ошибке, которое я получаю, это «Несоответствие данных в выражении критериев» – KDJ

ответ

1

попробовать это:

MSMgeID.RowSource = "SELECT [MSMge].[PrjID] ... FROM MSMge WHERE [PrjID] =" & CStr(Me.AllocID) 

Вот объяснение:.

Оба [MSMge] [PrjID] и Me.AllocID числовые значения, как сказал ОП. Таким образом, вместо использования Where [PrjID] = '<some value>' (который вызовет ошибку несоответствия типа в Access), нам нужно вместо этого ввести Me.AllocID в код VB в строку, используя функцию CStr(). Вышеприведенное заявление будет переведено на Where [PrjID] = <some numeric value> (обратите внимание, что я опустил одиночные апострофы)

+0

Это работает! Я понятия не имею, почему, это последнее, что я подумал бы попробовать, но он работает! Я думаю, [PrjID] читается как текст по какой-либо причине (например, моя ошибка кода), но в любом случае, большое вам спасибо. – KDJ

+0

Хорошо, вот объяснение. См. Отредактированный ответ за секунду – cha

Смежные вопросы