Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2011, 11:50   #1
Творд
 
Регистрация: 05.09.2011
Сообщений: 9
По умолчанию C# и Access

Здравствуйте.
Заранее извиняюсь за глупый вопрос,поиск не помог,перепробовал ~5 вариантов.
Пишу программу соседнему отделу для связи с БД по работе(БД локальная),таблицы выводит нормально,а вот с запросами затык.
По сути,пробую сделать чтобы при изменении TextBox'a осуществлялся неточный запрос к БД чтобы найти записи,содержащие введенные символы.
код:
Код:
OleDbConnection dbCon = new OleDbConnection(
                               "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|Эконом.accdb");
string dbQueryString = "SELECT [№ счета],[Дата счета],Поставщик,[Общая сумма],Аванс,"+
                               "[Дата платежного поручения],[№ платежного поручения]"+
                               " FROM Договора WHERE ([Поставщик] Like '*" + queryText.Text + "*')";
OleDbDataAdapter dbAdapter1 = new OleDbDataAdapter(dbQueryString, dbCon);
ЭкономDataSet dbDS = new ЭкономDataSet();
dbAdapter.Fill(dbDS,"Договора");
собственно при первом изменении queryText выводимая таблица очищается
хотелось бы узнать,что я делаю не так?

Последний раз редактировалось alexBlack; 05.09.2011 в 12:54.
Творд вне форума Ответить с цитированием
Старый 05.09.2011, 13:06   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Творд Посмотреть сообщение
string dbQueryString = "SELECT [№ счета],[Дата счета],Поставщик,[Общая сумма],Аванс,"+"[Дата платежного поручения],[№ платежного поручения]"+" FROM Договора WHERE ([Поставщик] Like '*" + queryText.Text + "*')";
а почему не сделать параметр
Код:
WHERE LEFT(Договора.[Поставщик]=\"" + queryText.Text + "\"";
в моем случае работает безотказно, думаю и Вам поможет.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.09.2011, 13:21   #3
Творд
 
Регистрация: 05.09.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
а почему не сделать параметр
Код:
WHERE LEFT(Договора.[Поставщик]=\"" + queryText.Text + "\"";
в моем случае работает безотказно, думаю и Вам поможет.
попробовал
Код:
string dbQueryString = "SELECT [№ счета],[Дата счета],Поставщик,[Общая сумма],Аванс,[Дата платежного поручения],[№ платежного поручения] FROM Договора WHERE LEFT([Поставщик]=\"" + queryText.Text + "\", " + queryText.TextLength + ")";
итог тот же самый,таблица очищается
З.Ы. ощущение что я неправильно использую DataSet/Adapter,т.к. методом исключения - если в поле поиска ввести символ а потом стереть,оставив поле пустым,по идее таблица должна все записи вывести,а такого не происходит
Творд вне форума Ответить с цитированием
Старый 05.09.2011, 14:07   #4
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

попробуйте перед заполнением очистить dbDS.
а потом заного привязать к datagrid. или куда вы там выводите.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 05.09.2011, 16:09   #5
Творд
 
Регистрация: 05.09.2011
Сообщений: 9
По умолчанию

итого
Код:
dbDS.Clear();
            dbQuery.Connection = dbCon;
            dbQuery.CommandText = "SELECT [№ счета],[Дата счета],Поставщик,[Общая сумма],Аванс,[Дата платежного поручения],[№ платежного поручения] FROM Договора WHERE LEFT([Поставщик]=\"" + queryText.Text + "\", " + queryText.TextLength + ")";
            dbAdapter.SelectCommand = dbQuery;
            
            dbAdapter.Fill(dbDS,"Договора");
            dataGridView1.DataSource = dbDS;
плюс переместил создание dbDS вне процедуры
итог тот же самый(
кстати,попробовал сделать запросы в самом Access'e,и с LIKE и с Left работают как надо

Последний раз редактировалось Творд; 05.09.2011 в 16:21.
Творд вне форума Ответить с цитированием
Старый 05.09.2011, 16:27   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

А если так проверить
Код:
dbDS = new DataSet();
dbQuery.Connection = dbCon;
dbQuery.CommandText = ("SELECT [№ счета],[Дата счета],Поставщик,[Общая сумма],Аванс,[Дата платежного поручения],[№ платежного поручения] FROM Договора WHERE LEFT([Поставщик]=\"" + queryText.Text + "\", ") + queryText.TextLength + ")";
dbAdapter.SelectCommand = dbQuery;
dbAdapter.Fill(dbDS, "Договора");
dataGridView1.DataSource = dbDS;
dataGridView1.DataMember = "Договора";
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.09.2011, 16:38   #7
Творд
 
Регистрация: 05.09.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
А если так проверить
Код:
dbDS = new DataSet();
dbQuery.Connection = dbCon;
dbQuery.CommandText = ("SELECT [№ счета],[Дата счета],Поставщик,[Общая сумма],Аванс,[Дата платежного поручения],[№ платежного поручения] FROM Договора WHERE LEFT([Поставщик]=\"" + queryText.Text + "\", ") + queryText.TextLength + ")";
dbAdapter.SelectCommand = dbQuery;
dbAdapter.Fill(dbDS, "Договора");
dataGridView1.DataSource = dbDS;
dataGridView1.DataMember = "Договора";
частичные признаки жизни появились,но смотрю и не пойму что со скобками %)
пока что искать не ищет,даже если символ верный,но хотя бы таблицу возвращает к исходному состоянию при стирании введенных символов
upd:начал совсем ничего не понимать,что такого магического в этих скобочках в запросе,что при любом изменении текста запроса работа программы возвращается в начальное состояние? о_О то есть,вообще не реагирует,даже если оставить поле поиска пустым
можно поподробнее этот момент со скобками раскрыть?

Последний раз редактировалось Творд; 05.09.2011 в 16:54. Причина: upd
Творд вне форума Ответить с цитированием
Старый 05.09.2011, 22:22   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Пример файла Access помог бы быстрее решить проблему.Облом самому создавать и наполнять данными
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.09.2011, 23:38   #9
Творд
 
Регистрация: 05.09.2011
Сообщений: 9
По умолчанию

Прошу прощения,завтра выложу,база ток на работе
Творд вне форума Ответить с цитированием
Старый 06.09.2011, 11:42   #10
Творд
 
Регистрация: 05.09.2011
Сообщений: 9
По умолчанию

прикрепил базу
к сожалению,распространять инфу рабочую нехочу,да и врядли это будет правильно,поэтому наполнил рандомными
Вложения
Тип файла: zip Эконом.zip (26.9 Кб, 22 просмотров)
Творд вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access+word и access+pdf xanderg Microsoft Office Access 2 07.11.2010 13:51
Запрос с датами и временем к Access [D7, Access] alexandr2010 БД в Delphi 3 26.07.2010 22:19
Есть БД на Access 2.0, нужно открыть в Access 2003 Spirit_33 Microsoft Office Access 1 23.07.2009 07:59
Access 97, открыть базу данных Access alexhol Microsoft Office Access 0 27.04.2009 12:10
Delphy и Access.вводя инфу во вторичный файл Access, она отражалась в первом ADOTable Lev БД в Delphi 0 11.11.2007 12:14