Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Запрос с условиями.
 
 автор: час   (28.08.2008 в 10:14)   личное сообщение
 
 

Значения условий запроса беруться из полей на форме - всё работает,
а вот открыть DAO.recordset/
Abu вам - спрашивает не вижу параметров ......

Dim db As DAO.Database 'создаём dao. базу
Dim rs_zapros As DAO.Recordset 'создаём dao. набор записей

Set db = CurrentDb ' база текущая
Set rs_zapros = db.OpenRecordset("Perestchenie_Dat", dbOpenDynaset) 'открываем  фиг вам

  Ответить  
 
 автор: osmor   (28.08.2008 в 10:27)   личное сообщение
 
 

читаем FAQ
http://hiprog.com/index.php?option=com_content&task=blogcategory&id=119&Itemid=159

  Ответить  
 
 автор: час   (28.08.2008 в 21:05)   личное сообщение
 
 

Теперь понятно как узнать значения параметров.
Set qdf = db.QueryDefs("Perestchenie_Dat")
For Each param In qdf.Parameters
param = Eval(param.Name)
MsgBox param
'qdf.Execute  ошибка
Next
А как их эти значения передать в запрос в нужное место запроса?

  Ответить  
 
 автор: osmor   (29.08.2008 в 08:44)   личное сообщение
 
 

For Each param In qdf.Parameters
param = Eval(param.Name)

это и есть
передача значений в "нужное место запроса"

  Ответить  
 
 автор: час   (02.09.2008 в 16:46)   личное сообщение
 
 

Да действительно......
Тогда извините почему ошибка
на действие -------- >> qdf.Execute
и запрос не присваивается Recordset (у)

  Ответить  
 
 автор: osmor   (02.09.2008 в 17:04)   личное сообщение
 
 

Читаем help по DAO

The Execute method is valid only for action queries. If you use Execute with another type of query, an error occurs. Because an action query doesn't return any records, Execute doesn't return a Recordset. (Executing an SQL pass-through query in an ODBCDirect workspace will not return an error if a Recordset isn't returned.)

  Ответить  
 
 автор: час   (02.09.2008 в 19:32)   личное сообщение
 
 

Даааааа плохо быть тупым Русским.... к тому же не знать английского.........
Действие верно только при выполнении запроса.
Если вы выполняете с помощью другого типа запроса - ошибка обеспечена.
Поскольку действие запроса невозвращает любую запись.
А вот в рабочей области не будет ошибки......
Чесно говоря этот хелп не прояснил ситуяйцию, но со временем разберусь.

  Ответить  
 
 автор: Lipatov   (28.08.2008 в 21:09)   личное сообщение
 
 

Эта ошибка появляется когда вы пытаетесь открыть recordset присоединенной таблицы, в этом случае...

Dim Dbs As DAO.Database
Dim RstОстатки As DAO.Recordset
Dim StrSQL As String

Set Dbs = CurrentDb()
StrSQL = "SELECT [Остатки].* FROM [Остатки];"
Set RstОстатки = Dbs.OpenRecordset(StrSQL)

Если нужны дальнейшие пояснения, спрашивайте, постараюсь помочь

  Ответить  
 
 автор: час   (28.08.2008 в 21:17)   личное сообщение
 
 

Извините, таблицы родные.
Но в запросе условия отбора - значения из полей формы.
Сам по себе запрос открывается.
А вот при присвоении DAO.Recordset (у) этого запроса спрашивает нужны параметры 4 штуки.
То есть полей формы не видит, хотя форма открыта.

  Ответить  
 
 автор: час   (28.08.2008 в 21:26)   личное сообщение
 
 

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

Но вопрос как передать параметры ...........

  Ответить  
 
 автор: Lipatov   (28.08.2008 в 21:34)   личное сообщение
 
 

Для Вас главное понять как правильно обращаться к значению поля в форме:
Forms![Список ведомостей списания]![Ведомости на списание подчиненная форма].Form![Цена_Ед] - обращение к полю подчиненной формы

Forms![Список ведомостей списания]![Цена_Ед] - к полю простой формы

  Ответить  
 
 автор: Lipatov   (28.08.2008 в 21:26)   личное сообщение
 
 

Dim Dbs As DAO.Database
Dim RstОстатки As DAO.Recordset
Dim StrSQL As String
Dim Kol As Integer


Set Dbs = CurrentDb()
Set Kol = Forms![Список ведомостей списания]![Ведомости на списание подчиненная форма].Form![Кол]

StrSQL = "SELECT Остатки.* FROM Остатки " & _
"WHERE ((Остатки.Имя_Мат) = " & Kol & ");" ' Запрос для числового значения

StrSQL = "SELECT Остатки.* FROM Остатки " & _
"WHERE ((Остатки.Имя_Мат) = '" & Kol & "');" ' Запрос для текстового значения


Set RstОстатки = Dbs.OpenRecordset(StrSQL)

Данный код универсален и для встроенных таблиц

  Ответить  
 
 автор: час   (02.09.2008 в 16:54)   личное сообщение
 
 

Вот как всё выглядит:
Запрос создан для выборки данных из таблиц, по условиям выбираемым на полях формы.
Запрос создан конструктором и уже является объектом базы данных.
При запуске запроса на вкладке запросы при открытой форме и выбраных на ней параметрах отбора, запрос работает - работает!
А вот при присвоении объекта (Perestchenie_Dat) - DAO.Recordset
Set db = CurrentDb ' база текущая
Set rs_zapros = db.OpenRecordset("Perestchenie_Dat", dbOpenDynaset) 'открываем фиг вам

  Ответить  
 
 автор: П.Полиграфович   (30.08.2008 в 01:41)   личное сообщение
 
 

Было..то же по причине некорректного синтаксиса в тексте запроса рекордсета.. а, что там в Perestchenie_Dat ежли не секрет?

  Ответить  
 
 автор: час   (02.09.2008 в 16:45)   личное сообщение
 
 

Не секрет.
Там из трёх таблиц, которые связаны меж собой делается выборка данных.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList