Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
gorobets dima
Member

Откуда:
Сообщений: 140
Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля
4 июн 04, 17:39    [723416]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
dim c as control
...
c.defaultvalue="""" & c.controlsource & """"
4 июн 04, 18:29    [723563]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Даже так:

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
4 июн 04, 18:41    [723597]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
gorobets dima
Member

Откуда:
Сообщений: 140
defaultvalue не в vba, а стандартным аксесовским способом: форма - свойство - значение по умолчанию.
4 июн 04, 18:41    [723598]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Стандартным нету. :^)
4 июн 04, 18:41    [723601]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
gorobets dima
Member

Откуда:
Сообщений: 140
поскольку функция которая сейчас выводит в поле имя этого поля лежит во внешнем модуле, не в модуле формы
4 июн 04, 18:44    [723609]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
1. А какая разница, в каком модуле она лежит?
2. Так она все-таки существует? Тогда в чем вопрос?
4 июн 04, 18:48    [723621]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
Roma R
Member

Откуда:
Сообщений: 457
А просто имя поля в окне свойств записать нельзя?
4 июн 04, 18:52    [723640]     Ответить | Цитировать Сообщить модератору
 Re: Есть табличная форма. В defaultvalue некоторого поля надо запихнуть функцию которая бы возвращала название этого поля  [new]
аха
Guest
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 как-то попроще можно.
опять же не все понятно по сабформам и т.п.
4 июн 04, 19:21    [723717]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить