Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Функция as field / 21 сообщений из 21, страница 1 из 1
18.01.2005, 13:25:42
    #32869993
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
ДИНАМИЧЕСКИЙ ЗАПРОС НЕ ПРЕДЛАГАТЬ!!!!
В конструкторе 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
18.01.2005, 13:38:34
    #32870037
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 13:38:36
    #32870038
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
а ошибку-то почему не привели?
...
Рейтинг: 0 / 0
18.01.2005, 13:49:57
    #32870082
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 13:50:55
    #32870084
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
А DLookUp - медленно работает
...
Рейтинг: 0 / 0
18.01.2005, 13:53:00
    #32870092
Kelme
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
set rs = Currentdb.Openrecordset(......)

--------------
crazy about...
...
Рейтинг: 0 / 0
18.01.2005, 13:55:31
    #32870100
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
в 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
18.01.2005, 13:56:42
    #32870104
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 13:58:43
    #32870108
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 14:00:51
    #32870119
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
Shuhardв Acc97 - работает


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

В вашем примере не проверяется значение, возвращенное функцией
...
Рейтинг: 0 / 0
18.01.2005, 14:02:09
    #32870124
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 14:04:04
    #32870130
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 14:05:02
    #32870134
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 14:10:37
    #32870153
Артист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
Shuhardв Acc97 - работает
+ писать DAO.Field
чтобы не перепутать ADODB.Field и DAO.Field

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


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

В вашем примере не проверяется значение, возвращенное функцией
работает приведенный мной кусок кода - возврат функции не проверял
...
Рейтинг: 0 / 0
18.01.2005, 14:12:54
    #32870159
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
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
18.01.2005, 14:14:22
    #32870162
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
Shuhard
работает приведенный мной кусок кода - возврат функции не проверял

про это я и сказал
...
Рейтинг: 0 / 0
18.01.2005, 14:18:14
    #32870174
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
отматывая к началу - хотелось бы более полное описание задачи,т.е. что предполагается делать с полем,если удастся вернуть его из функции ,
для SELECT DAO.FIELD не очень нужен
...
Рейтинг: 0 / 0
18.01.2005, 15:16:17
    #32870352
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
автор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
18.01.2005, 15:36:00
    #32870417
Rurk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
Все! Отбой!
Спасибо за посты.
Объявил рекордсет глобальным и функция вернула Field
Задача то собственно и сводилась к тому чтобы проверить возврат из ф-ии Field
Ну а если кому похохотать хочется - хотел проверить что будет если я в конструкторе запросов вставлю ф-ю возвращающую поле
...
Рейтинг: 0 / 0
18.01.2005, 15:39:14
    #32870430
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция as field
paparome... авторSet qqq = rs(FN)Обнозначно приведет к ошибке, ибо значение поля c именем FN однозначно не является объектом типа Field.

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


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