Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access+VB - как сделать запрос? / 13 сообщений из 13, страница 1 из 1
07.01.2005, 15:30:48
    #32856038
nimand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
Вправьте руки, плиз.
Есть некоторые данные, которые передает форма. Нужно выполнить поиск по одому из полей в таблице Data. Если есть запись, удовлетворяющая условию, то открыть новую форму, куда вывести данные из таблицы. Если данных нет, то показать сообщение.
Интересует вот что. Как можно определить, что запрос вернул какие-то данные? Я привык к php-mysql, там это делается очень просто с помощью функции mysql_num_rows. А как это делается в Access? Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
07.01.2005, 15:47:50
    #32856051
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
DCount - например
...
Рейтинг: 0 / 0
07.01.2005, 15:53:39
    #32856055
nimand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
А немного подробнее можно? Я с Access столкнулся три дня назад =(
...
Рейтинг: 0 / 0
07.01.2005, 18:37:22
    #32856124
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
например
DCount("имя_поля", "имя_таблицы", "условие_отбора")
вернет количество записей в поле из таблицы по условию.
Хотя, вобщето возможностей гораздо бльше.
Еще подробнее - поставь курсор на DCount и жмакни F1
...
Рейтинг: 0 / 0
10.01.2005, 10:55:06
    #32857243
nimand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
ОК, с DCount я разобрался. А как быть с запросами? QueryDef, QueryDefs... Я совсем в этом запутался =((( В примерах вроде как все через рекордсеты делается, а у меня постоянно вылетает ошибка =( Пример можно привести или ссылку дать, где пример есть разобраный.
...
Рейтинг: 0 / 0
10.01.2005, 12:19:54
    #32857352
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
поиск по конфе на слово recordset даст избыток примеров
...
Рейтинг: 0 / 0
10.01.2005, 13:47:43
    #32857466
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
Одинаковые задачи в коде можно решить разными способами.

Можно открывать Recordset'ы и через них манипулировать данными. RecordCount, Find'ы, Edit, AddNew...

Можно дергать функции DCount, Dlookup, Dmin, Dmax ... и использовать вызовы CurrentProject.Connection.Execute ("INSERT .... или UPDATE или еще что-нибудь).

Каждый способ имеет свои преимущества и недостатки. Иногда применим только первый или второй. Мне больше нравится второй метод - он ближе к SQL кодированию на сервере.
...
Рейтинг: 0 / 0
10.01.2005, 14:02:43
    #32857493
nimand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
strSQL = "SELECT [Properties].* FROM [Properties] WHERE [Properties]![icc_part]=Forms!Search!sfield"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) ***
DoCmd.OpenForm ("Search_Results")
Forms.Search_Results.iccfull.Value = rs![icc_full].Value
rs.Close

Это кусок кода из функции, описанной для формы поиска. Когда я запускаю поиск, у меня вылетает ошибка "Слишком мало параметров. Требуется 1". После нажатия на кнопку Debug подсвечивается строчка с ***. Я вот чего не могу понять: если мне нужно выбрать все поля для записи, удовлетворяющей условию, мне нужно отдельно каждое поле указывать?
...
Рейтинг: 0 / 0
10.01.2005, 14:12:51
    #32857509
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
nimandstrSQL = "SELECT [Properties].* FROM [Properties] WHERE [Properties]![icc_part]=Forms!Search!sfield"

синтаксис не верен
Код: plaintext
1.
 "SELECT [Properties].* FROM [Properties] WHERE [Properties]![icc_part]=" & Me![sfield]
+ debug.print strSQL расскажет много интересного
...
Рейтинг: 0 / 0
10.01.2005, 14:21:01
    #32857524
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
strSQL = "SELECT [Properties].* FROM [Properties] WHERE [Properties]![icc_part]=Forms!Search!sfield"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) ***
DoCmd.OpenForm ("Search_Results")
Forms.Search_Results.iccfull.Value = rs![icc_full].Value
rs.Close

Зачем же кавычки не там ставить ?

Можно короче, я бы сделал именно так:

Dim icc_full
icc_full = DLookup("icc_full", "Properties", "icc_part=" & Cstr(Me!sfield)
if IsNull(icc_full) Then
    MsgBox "Нету"
Else
    DoCmd.OpenForm ("Search_Results")
    Forms.Search_Results.iccfull = icc_full 
End if
...
Рейтинг: 0 / 0
10.01.2005, 14:21:47
    #32857527
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
Скобку в лукапе не закрыл. :(
...
Рейтинг: 0 / 0
10.01.2005, 15:10:03
    #32857615
nimand
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
Ну на самом деле, у меня там в выборке должно быть около двадцати полей, поэтому "короткий" метод автоматически станет длинным =)
Тут теперь в другом дело. Я сделал так
strSQL = "SELECT [Properties].* FROM [Properties] WHERE [Properties]![icc_part]=" & Me!sfield
Теперь проблема в несоответствии типов =( Дело в том, что icc_part это текстовое поле, в котором хранятся цифры. Текстовое оно по одной простой причине: очень часто первой цифрой идет ноль, который отрезается аксессом =( В форме поиска поле имеет тип "Общий", т.е. числовой. Может можно как-то заставить не отрзать первый ноль в числе? Тогда, я думаю, проблема будет решена.
...
Рейтинг: 0 / 0
10.01.2005, 16:50:13
    #32857764
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access+VB - как сделать запрос?
Если во всех записях число цифр одинаково, то просто наложите формат.

Например "000" дает 001, 010, 111
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Access+VB - как сделать запрос? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]