Форум программистов, компьютерный форум, киберфорум
Наши страницы

MS Access

Войти
Регистрация
Восстановить пароль
 
boby104
864 / 335 / 83
Регистрация: 21.03.2013
Сообщений: 833
#1

Как узнать sql значение из Recordset формы - MS Access

07.04.2016, 16:30. Просмотров 322. Ответов 5
Метки нет (Все метки)

Для экспорта в Ексель определенных данных я использую свойство текущей формы Recordset
SQL
1
SET rst = me.Recordset
но на форме могу стоять фильтры и они могут быть активными.
из отфильтрованной выборке мне нужно повторно отфильтровать отдельные уникальные значения.
Как узнать текст sql данного рекордсета, чтоб внести в него нужные изменения?

И второй вопрос. Когда я формирую первый рекордсет - через нажатие кнопки на форме- первый раз - я получаю набор данных.
Но если я повторно нажимаю на кнопку то рекордсет получаю пустым. Для получения данных нужно сначала - кликнуть на поле в области данных формы - после этого получаю набор данных. Как это устранить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2016, 16:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как узнать sql значение из Recordset формы (MS Access):

Как в SQL (row source) вставить значение из формы - MS Access
Имеется список для которого нужно составить Row Source так чтобы список формировался на основании условия по значению из формы Например ...

как узнать что recordset открыт (v ADO) - Базы данных
Kak mozhno usnat shto recordset otkrit ili sakrit (v ADO). Inogda bivaet shto v bolshom proekte sabivaesh gdeto sakrit recordset i potom...

Как передать значение поля элемента формы в SQL-запрос? - MS Access
Т.е., скажем есть форма с двумя элементами. Поле со списком (Поле1) и поле MEMO (Поле2). При выборе в поле со списком какого либо значения,...

ADO.Recordset - Как узнать, что запись уже редактируется - Базы данных
Если многопользовательский вариант при доступе ADO.Recordset как узнать что запись кем то модифицируется

Как вставить значение поля формы типа double из access 97 в таблицу, которая находится на ms sql сервере - MS Access
Как вставить значение поля формы типа double из access 97 в таблицу, которая находится на ms sql сервере. Есть старая программа в access...

Заполнение записей ленточной формы из recordset - MS Access
Доброго времени суток. Помогите решить задачку - надо заполнить ленточную форму значениями из recordset. При этом в форме не делать...

5
mobile
22225 / 12541 / 2519
Регистрация: 28.04.2012
Сообщений: 13,754
07.04.2016, 16:43 #2
Попробуйте так. В переменной s будет sql формы с текущими фильтрами
Visual Basic
1
2
3
4
5
Dim s
s="select * from (" & Replace(Me.RecordSource, ";", "") & ")"
If Me.FilterOn Then
  s=s & " where " & Me.Filter
End If
Добавлено через 2 минуты
Цитата Сообщение от boby104 Посмотреть сообщение
И второй вопрос. Когда я формирую первый рекордсет - через нажатие кнопки на форме- первый раз - я получаю набор данных.
Но если я повторно нажимаю на кнопку то рекордсет получаю пустым. Для получения данных нужно сначала - кликнуть на поле в области данных формы - после этого получаю набор данных. Как это устранить?
Для адекватного ответа нужен хотя бы код на кнопке. Или выложенная БД.
0
boby104
864 / 335 / 83
Регистрация: 21.03.2013
Сообщений: 833
07.04.2016, 17:43  [ТС] #3
Цитата Сообщение от mobile Посмотреть сообщение
Попробуйте так. В переменной s будет sql формы с текущими фильтрами
Спасибо за быстрый ответ!

попробовал пока не получилось
дело в том что RecordSource сложный с использованием пользовательских функций, отбором и сортировкой - если на форме не ставить фильтры то получается, но при фильтрах уже не идет.
Я поэтому и хотел уйти от RecordSource.

Попробую переформулировать вопрос - имеется ли возможность из полученного рекордсета открыть (создать) новый рекордсет уникальных значений определенного поля первого рекордсета?

или из полученого рекордсета отфильтровать другой по значению поля первого?
0
mobile
22225 / 12541 / 2519
Регистрация: 28.04.2012
Сообщений: 13,754
07.04.2016, 22:25 #4
Цитата Сообщение от boby104 Посмотреть сообщение
имеется ли возможность из полученного рекордсета открыть (создать) новый рекордсет уникальных значений определенного поля первого рекордсета?
или из полученого рекордсета отфильтровать другой по значению поля первого?
Можно создать другой рекордсет и присвоить ему набор данных из первого
Visual Basic
1
2
Dim OtherRst as DAO.Recordset
Set OtherRst=Me.Recordset
Можно отфильтровать рекордсет
Visual Basic
1
2
OtherRst.Filter="id=" & <выражение фильтра>
Set OtherRst=OtherRst.OpenRecordset
1
boby104
864 / 335 / 83
Регистрация: 21.03.2013
Сообщений: 833
08.04.2016, 00:16  [ТС] #5
Цитата Сообщение от mobile Посмотреть сообщение
Можно создать другой рекордсет и присвоить ему набор данных из первого
чуток подробнее
как это должно выглядеть?

SQL
1
2
3
4
5
Dim FirstRst AS DAO.Recordset
Dim OtherRst AS DAO.Recordset
SET FirstRst=Me.Recordset
FirstRst.Filter="id=" & <выражение фильтра>
SET OtherRst=FirstRst.OpenRecordset
так правильно?

а то я уже запарился Recordsource преобразовывать
мне кажется, работать с целыми наборами записей легче должно быть
0
mobile
22225 / 12541 / 2519
Регистрация: 28.04.2012
Сообщений: 13,754
08.04.2016, 00:42 #6
Не нужны 2 дополнительных рекордсета. Достаточно одного
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim OtherRst AS DAO.Recordset
Set OtherRst=Me.Recordset
OtherRst.Filter="id=" & <выражение фильтра>
Set OtherRst=OtherRst.OpenRecordset
 
'Если надо добавить фильтр к уже имеющемуся
OtherRst.Filter="другоеполе=" & <выражение фильтра>
Set OtherRst=OtherRst.OpenRecordset
 
'Если надо совсем другой фильтр, возвращаемся к исходному
Set OtherRst=Me.Recordset
OtherRst.Filter="Поле=" & <выражение фильтра>
Set OtherRst=OtherRst.OpenRecordset
0
08.04.2016, 00:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2016, 00:42
Привет! Вот еще темы с ответами:

Как узнать координаты формы? - MS Access
Сабж. Средствами аксесса? Как это сделать через WinAPI я знаю, интересно как сделать средствами аксесса.... Вопрос в продолжение...

Открыть RECORDSET запроса с сылками на контролы формы - MS Access
Уважаемые форумчане помогите открыть рекордсет запроса, у которого нижележащие запросы содержат обращения к контролам формы. Поиск...

ГЛЮКИ. Set Табл.Form.Recordset = ДЛИННЫЙ sql-запрос. Возникают проблемы при фильтрации. - MS Access
Есть подчиненная форма ЗаказыТабл. Для неё ставлю: Set ЗаказыТабл.Form.Recordset = CurrentDb.OpenRecordset('SELECT ... ... ORDER BY...

Как узнать значение поля по умолчанию? - Базы данных
Например, RS.Fields(I).Name возвращает имя поля, RS.Fields(I).Type - тип поля. А как можно узнать значение поля по умолчанию? (очень нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.