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

gorobets dima
Дата: 04.06.2004 17:39:30
Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля
Владимир Саныч
Дата: 04.06.2004 18:29:08
dim c as control
...
c.defaultvalue="""" & c.controlsource & """"
Владимир Саныч
Дата: 04.06.2004 18:41:21
Даже так:

private sub Form_Open()
dim v as variant
for each v in array("textbox1","textbox2","textbox3")
with me(v)
.defaultvalue="""" & .controlsource & """"
end with
next
end sub

Или:

private sub Form_Open()
dim c as control
for each c in me.controls
if typename(c)="textbox"then c.defaultvalue="""" & c.controlsource & """"
next
end sub
gorobets dima
Дата: 04.06.2004 18:41:21
defaultvalue не в vba, а стандартным аксесовским способом: форма - свойство - значение по умолчанию.
Владимир Саныч
Дата: 04.06.2004 18:41:53
Стандартным нету. :^)
gorobets dima
Дата: 04.06.2004 18:44:37
поскольку функция которая сейчас выводит в поле имя этого поля лежит во внешнем модуле, не в модуле формы
Владимир Саныч
Дата: 04.06.2004 18:48:03
1. А какая разница, в каком модуле она лежит?
2. Так она все-таки существует? Тогда в чем вопрос?
Roma R
Дата: 04.06.2004 18:52:56
А просто имя поля в окне свойств записать нельзя?
аха
Дата: 04.06.2004 19:21:24
Public Function testAc() As String
On Error Resume Next
Dim frm As Access.Form
Dim ctl As Access.Control
Dim s As String
    For Each frm In Forms
        For Each ctl In frm.Controls
            s = ctl.Properties("defaultvalue")
            If err <> 0 Then
                s = ""
                err.Clear
            End If
            If s = "=TestAc()" Then
               testAc = ctl.Properties("Name") 'controlsource и т.п.
               err.Clear
            End If
        Next ctl
    Next frm
End Function
как - то так
или даже:
Public Function testAc() As String
On Error Resume Next
Dim frm As Access.Form
Dim ctl As Access.Control
Dim s As String
    For Each frm In Forms
        For Each ctl In frm.Controls
            s = ctl.Properties("defaultvalue")
            If err <> 0 Then
                s = ""
                err.Clear
            End If
            If s = "=TestAc()" Then 's = "TestAc()" и т.п.
               testAc = ctl.Properties("Name") 'выставляем 1-е
               ctl.Properties("defaultvalue") = ctl.Properties("Name")
               'снимаем с обработки в циклах
               err.Clear
            End If
        Next ctl
    Next frm
End Function
может с помощью API как-то попроще можно.
опять же не все понятно по сабформам и т.п.