powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция as field
21 сообщений из 21, страница 1 из 1
Функция as field
    #32869993
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДИНАМИЧЕСКИЙ ЗАПРОС НЕ ПРЕДЛАГАТЬ!!!!
В конструкторе query, например простой (select) сформировать название поя, которое нужно вывести. Например, есть поля Qty1, Qty2, Qty3. Нужно вывести поле "Qty" + CStr(номер)
Я пробую через :

Public Function qqq(PN As Integer) As Field
Dim MyDb As Database
Dim FN As String
Set MyDb = CurrentDb
FN = "Qty" + CStr(PN)
Set qqq = MyDb.TableDefs("Table").Fields(FN)
End Function

Выдается ошибка.
Че не так? Или какие еще есть предложения?
...
Рейтинг: 0 / 0
Функция as field
    #32870037
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RurkДИНАМИЧЕСКИЙ ЗАПРОС НЕ ПРЕДЛАГАТЬ!!!!
В конструкторе query, например простой (select) сформировать название поя, которое нужно вывести. Например, есть поля Qty1, Qty2, Qty3. Нужно вывести поле "Qty" + CStr(номер)
Я пробую через :

Public Function qqq(PN As Integer) As Field
Dim MyDb As Database
Dim FN As String
Set MyDb = CurrentDb
FN = "Qty" + CStr(PN)
Set qqq = MyDb.TableDefs("Table").Fields(FN)
End Function

Выдается ошибка.
Че не так? Или какие еще есть предложения?

Машу вать!!!
А кто набор данных открывать будет? Дядя Степа?
Через коллекцию TableDefs Вы получили объект типа таблица, а не ее данные!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function qqq(PN As Integer) As Variant
Dim rs As RecordSet
Dim FN As String
  FN = "Qty" + CStr(PN)
  Set rs = CurrentDB.OpenRecordSet("Table")
  qqq = rs(FN)
  rs.Close
  Set rs = Noting
End Function

+ И ваще есть функция DLookUp() - очень полезная в таких случаях
(Подробности в хелпе)
...
Рейтинг: 0 / 0
Функция as field
    #32870038
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ошибку-то почему не привели?
...
Рейтинг: 0 / 0
Функция as field
    #32870082
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome RurkДИНАМИЧЕСКИЙ ЗАПРОС НЕ ПРЕДЛАГАТЬ!!!!
В конструкторе query, например простой (select) сформировать название поя, которое нужно вывести. Например, есть поля Qty1, Qty2, Qty3. Нужно вывести поле "Qty" + CStr(номер)
Я пробую через :

Public Function qqq(PN As Integer) As Field
Dim MyDb As Database
Dim FN As String
Set MyDb = CurrentDb
FN = "Qty" + CStr(PN)
Set qqq = MyDb.TableDefs("Table").Fields(FN)
End Function

Выдается ошибка.
Че не так? Или какие еще есть предложения?

Машу вать!!!
А кто набор данных открывать будет? Дядя Степа?
Через коллекцию TableDefs Вы получили объект типа таблица, а не ее данные!!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Public Function qqq(PN As Integer) As Variant
Dim rs As RecordSet
Dim FN As String
  FN = "Qty" + CStr(PN)
  Set rs = CurrentDB.OpenRecordSet("Table")
  qqq = rs(FN)
  rs.Close
  Set rs = Noting
End Function

+ И ваще есть функция DLookUp() - очень полезная в таких случаях
(Подробности в хелпе)

В общем написал так:
Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.TableDefs("Table").OpenRecordset
Set qqq = rs(FN)
rs.Close
Set rs = Nothing
End Function

Пишет - Object invalid or no longer set
...
Рейтинг: 0 / 0
Функция as field
    #32870084
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А DLookUp - медленно работает
...
Рейтинг: 0 / 0
Функция as field
    #32870092
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
set rs = Currentdb.Openrecordset(......)

--------------
crazy about...
...
Рейтинг: 0 / 0
Функция as field
    #32870100
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в Acc97 - работает
вероятно речь идет о 2000/XP/2003 - тогда надо подключить DAO + писать DAO.Field
чтобы не перепутать ADODB.Field и DAO.Field
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim MyDb As Database
Dim FN As String
Dim PN As Long
Dim qqq As DAO.Field
PN =  1 
Set MyDb = CurrentDb
FN = "Qty" + CStr(PN)
Set qqq = MyDb.TableDefs("t1").Fields(FN)
Debug.Print qqq.Name
...
Рейтинг: 0 / 0
Функция as field
    #32870104
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rurk ...В общем написал так:
Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.TableDefs("Table").OpenRecordset
Set qqq = rs(FN)
rs.Close
Set rs = Nothing
End Function

Пишет - Object invalid or no longer set

Т.е. Recordset (или Database) закрыли, а поле хотите чтоб осталось?
...
Рейтинг: 0 / 0
Функция as field
    #32870108
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.OpenRecordset("Table")
Set qqq = rs(FN)
rs.Close
Set rs = Nothing
End Function



Public Sub www()
Dim f As Field
Set f = qqq(2)
End Sub


Так вот в www - f - object invalid or no longer set
...
Рейтинг: 0 / 0
Функция as field
    #32870119
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardв Acc97 - работает


работает то, что привел Rurk?
Т.е. функция возвращает поле?
Не верю....

В вашем примере не проверяется значение, возвращенное функцией
...
Рейтинг: 0 / 0
Функция as field
    #32870124
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Gavrilov Rurk ...В общем написал так:
Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.TableDefs("Table").OpenRecordset
Set qqq = rs(FN)
rs.Close
Set rs = Nothing
End Function

Пишет - Object invalid or no longer set

Т.е. Recordset (или Database) закрыли, а поле хотите чтоб осталось?

Ага, посоветовали, ща попробую
...
Рейтинг: 0 / 0
Функция as field
    #32870130
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardв Acc97 - работает
вероятно речь идет о 2000/XP/2003 - тогда надо подключить DAO + писать DAO.Field
чтобы не перепутать ADODB.Field и DAO.Field
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim MyDb As Database
Dim FN As String
Dim PN As Long
Dim qqq As DAO.Field
PN =  1 
Set MyDb = CurrentDb
FN = "Qty" + CStr(PN)
Set qqq = MyDb.TableDefs("t1").Fields(FN)
Debug.Print qqq.Name


Да я вообще тока Dao и подключил
...
Рейтинг: 0 / 0
Функция as field
    #32870134
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Gavrilov Rurk ...В общем написал так:
Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.TableDefs("Table").OpenRecordset
Set qqq = rs(FN)
rs.Close
Set rs = Nothing
End Function

Пишет - Object invalid or no longer set

Т.е. Recordset (или Database) закрыли, а поле хотите чтоб осталось?

Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.OpenRecordset("Òîâàð")
Set qqq = rs(FN)
End Function



Public Sub www()
Dim f As Field
Set f = qqq(2)
End Sub

все равно Field не вернул
...
Рейтинг: 0 / 0
Функция as field
    #32870153
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardв Acc97 - работает
+ писать DAO.Field
чтобы не перепутать ADODB.Field и DAO.Field

работает и в XP
DAO. Field
...
Рейтинг: 0 / 0
Функция as field
    #32870157
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serge Gavrilov Shuhardв Acc97 - работает


работает то, что привел Rurk?
Т.е. функция возвращает поле?
Не верю....

В вашем примере не проверяется значение, возвращенное функцией
работает приведенный мной кусок кода - возврат функции не проверял
...
Рейтинг: 0 / 0
Функция as field
    #32870159
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rurk

Public Function qqq(PN As Integer) As Field
Dim rs As DAO.Recordset
Dim FN As String
FN = "Qty" + CStr(PN)
Set rs = CurrentDb.OpenRecordset("Òîâàð")
Set qqq = rs(FN)
End Function



Public Sub www()
Dim f As Field
Set f = qqq(2)
End Sub

все равно Field не вернул

Дык, это не поможет, rs-то уже нет, хоть вы его явно и не закрыли
...
Рейтинг: 0 / 0
Функция as field
    #32870162
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard
работает приведенный мной кусок кода - возврат функции не проверял

про это я и сказал
...
Рейтинг: 0 / 0
Функция as field
    #32870174
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отматывая к началу - хотелось бы более полное описание задачи,т.е. что предполагается делать с полем,если удастся вернуть его из функции ,
для SELECT DAO.FIELD не очень нужен
...
Рейтинг: 0 / 0
Функция as field
    #32870352
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторPublic Function qqq(PN As Integer) As Field
Щас ругаться матерно начну!!!

Вам, господин хороший, значение поля нужно или объект типа Field?
Ну получите вы свой объект, и что вы с ним делать будете?
Галочку в нем менять, типа, разрешено или не разрешено в него Null писать?

1. DLookUp работает нормально - индексы надо правильные строить, тогда и проблем не будет!
2. Я в своем примере писал функцию типа AS VARIANT и присваивал значение без ключевого SET

авторSet qqq = rs(FN)Обнозначно приведет к ошибке, ибо значение поля c именем FN однозначно не является объектом типа Field.
...
Рейтинг: 0 / 0
Функция as field
    #32870417
Rurk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все! Отбой!
Спасибо за посты.
Объявил рекордсет глобальным и функция вернула Field
Задача то собственно и сводилась к тому чтобы проверить возврат из ф-ии Field
Ну а если кому похохотать хочется - хотел проверить что будет если я в конструкторе запросов вставлю ф-ю возвращающую поле
...
Рейтинг: 0 / 0
Функция as field
    #32870430
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome... авторSet qqq = rs(FN)Обнозначно приведет к ошибке, ибо значение поля c именем FN однозначно не является объектом типа Field.

Это к ошибке не приведет, так как rs(FN) и есть Field
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция as field
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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