2013-04-02 1 views
1

Я застреваю с очень своеобразной проблемой. Я работаю в ASP .NET VB с доступом мс 2007Почему oledb dataadapter не извлекает данные из базы данных доступа в vb.net?

заказовМои для извлечения данных Я использую следующий фрагмент кода

 connection = utility.GetConnection() 
     Dim command As New OleDbCommand(sQuery, connection) 
     Dim adapter As New OleDbDataAdapter(sQuery, connection) 
     Dim dt As New DataTable() 
     adapter.SelectCommand = command 
     adapter.Fill(dt) 

Когда я использую запрос без ИНЕКЕ он работает. то есть IT извлекает все строки и заполняет таблицу данных. Но когда у sQuery есть предложение where с ним, dt.Rows.Count всегда дает 0. i.e. Данные не извлекаются из базы данных. Я говорю, что это более сложная проблема, потому что во время debigging я скопировал sQuery с предложением where и работал в доступе ms, и там он возвращает данные. Я не понимаю, что мне не хватает. Я показываю queires, создаваемому для sQuery

SELECT * FROM ORDER_VIEW WHERE 1 = 1 (I don have any problem with that) 

Но когда sQuery имеет

SELECT * FROM ORDER_VIEW WHERE 1 = 1 AND ITEM_ID_NO LIKE '011*' 

Он извлекает строки в доступе мс, но, (дт) линия adapter.Fill не заполняет DataTable с любой ряд

Я застрял с этой проблемой, за любое предложение и решение заблаговременно.

+2

Вместо этого используйте '' 011%''. – LarsTech

+0

Это сработало! Теперь он поднял еще одну очередь, имеет ли шаблон подстановки в asp .net и ms access? потому что теперь я попробовал этот запрос в ms-доступе и не возвращал никаких данных. – Pankouri

ответ

3

При использовании поставщика OleDB попробуйте использовать '011%' вместо '011*'.

Я считаю, что двигатель OleDB использует % для символа дикой карты, где механизм доступа использует символ *. Это относится к провайдеру.