2014-01-29 4 views
0

У меня возникли трудности с созданием правильного оператора SELECT в Access 2010 VBA. Я пытаюсь вытащить 3 поля из таблицы с помощью ADODB.Recordset. Я делал это много раз до этого без проблем, но на этот раз я пытаюсь выполнить его на основе введенного пользователем числа, которое является частью одного из значений поля. Таким образом, если полное поле может быть T6825LZ, пользователь должен иметь возможность ввести 6825, а инструкция SELECT найти правильную запись.Access 2010 SELECT string

Мой код до сих пор является:

Dim rsTID As New ADODB.Recordset 
Dim searchTID As String 
Dim selectString As String 

searchTID = "T" & TID 
selectString = "SELECT * FROM Agents WHERE TID LIKE " & searchTID & "" 

rsTID.Open selectString, CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic 

If Not rsTID.EOF Then 
     TID = rsTID.Fields("TID") 
     LastName = rsTID.Fields("LastName") 
     FirstName = rsTID.Fields("FirstName") 
End If 

В приведенном выше коде, «TID» в строке searchTID = "T" & TID относится к TextBox на форме доступа, где пользователь вводит 4-значный номер. TID в selectString относится к полю в таблице Agents. Немного смущает, я знаю, но это то, что я дал, чтобы работать с :)

Что в конечном счете, происходит то, что я получаю сообщение об ошибке на rsTID.Open линии заявив Нет значение, заданное для одного или более требуемыми параметрами. Это не имеет никакого смысла, поскольку согласно MSDN все параметры оператора ADODB.RecordSet.Open являются необязательными, и даже если они не были, все они присутствуют.

Может кто-нибудь, пожалуйста, помогите определить проблему здесь, это становится довольно неприятным. :)

Заранее спасибо ...

+0

'" SELECT * FROM агентов WHERE TID LIKE '* "& searchTID &" *' "' –

+1

@TimWilliams. , , Вы должны сделать это в ответ, чтобы он мог принять его. –

ответ

2

Ваш поисковый термин должен быть в кавычках, и вам необходимо включить специальные символы для поиска в LIKE:

"SELECT * FROM Agents WHERE TID LIKE '*" & searchTID & "*'" 
+0

Спасибо, я только что нашел вариант, используя chr (34), но это работает так же легко. Очень признателен! –