Помогите с БД access

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
REraVe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 27.04.2005 (Ср) 11:20

Помогите с БД access

Сообщение REraVe » 27.04.2005 (Ср) 11:31

У меня есть база данных в access и прожка на VB для работы с ней.
Прога конектитса к базе и считывает некоторые данные в таблицу (DataGrid), а также раскидывает их по TextBox'ам для редактирования таким образом:

Код: Выделить всё
 
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open "SELECT fio,number,sponsor,sk,summa FROM DBSK1 ", db, adOpenStatic, adLockOptimistic
  Dim oText As TextBox
  For Each oText In Me.txtFields
    Set oText.DataSource = adoPrimaryRS
  Next
  Set grdDataGrid.DataSource = adoPrimaryRS


Помогите как написать запрос, чтобы при вводе нового номера программа сразу же сверяла его с существующими и если такой есть выделяла строку в таблице.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 28.04.2005 (Чт) 6:40

Как вариант: в textbox по событию KeyPress проверяешь запросом
на существование похожей записи select требуемые_поля,... from таблица like что_проверяем
что_проверяем="'"+textbox.text+"*'" или % - не помню как в ADO
если есть записи (recordscount >0) то выделяешь данные записи в DataGrid

REraVe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 27.04.2005 (Ср) 11:20

Сообщение REraVe » 05.05.2005 (Чт) 12:35

Спасибо, с поиском я разобрался. Правда несколько другим образом. Еще вопросик, подскажите как должен выглядеть запрос, который будет проверять есть ли строка со значением в первом столбце "xxxx", и если такой строки нет уведомлять об этом.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 05.05.2005 (Чт) 13:36

Код: Выделить всё
SELECT * WHERE number = xxxx

Если вернёт 0 строк или произойдёт ошибка (какая не знаю) - ничего не найдено, иначе - вернёт нужную строку.
Я знаю верный путь

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 12.05.2005 (Чт) 11:34

Q2W писал(а):
Код: Выделить всё
SELECT * WHERE number = xxxx

Если вернёт 0 строк или произойдёт ошибка (какая не знаю) - ничего не найдено, иначе - вернёт нужную строку.
Ошибка не вылетит - будет EOF And BOF, если пусто
2 REraVe
Проверять через EOF And BOF.

Andrev
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 19.01.2005 (Ср) 9:22
Откуда: Kursk

Сообщение Andrev » 12.05.2005 (Чт) 12:23

А по-моему, проще проверять так: select count(*) from чего-то там where number=xxx. Тут уж никаких ошибок не будет - если записей нет, то результатом запроса будет ноль, если есть - число, большее нуля.
В этой жизни нет ничего невозможного. Если у вас что-то не получается, значит, вы что-то делаете не так.

REraVe
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 9
Зарегистрирован: 27.04.2005 (Ср) 11:20

Сообщение REraVe » 12.05.2005 (Чт) 16:29

Я в итоге оставил простой запрос select и т.д. Если ничего нет он ничего не возвращает в таблицу и текстбоксы и они становятся пустыми (не нули), а потом я сравниваю текс в текстбоксе и если он = "" включаю функцию ADO .addNew


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList  
cron