Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Составное имя переменных
 
 автор: Ivanko_011   (26.01.2010 в 12:47)   личное сообщение
 
 

Возможен ли синтаксис для составных переменных например: Dim frm.name & "_Add" as As Recordset

  Ответить  
 
 автор: Lukas   (26.01.2010 в 13:00)   личное сообщение
 
 


...составных переменных...


А это что такое?

  Ответить  
 
 автор: Ivanko_011   (26.01.2010 в 13:11)   личное сообщение
 
 

В этом то и дело. Есть процедура общая для загрузки всех форм. Для реализации транзакций использую
Set rst_L = dbs.OpenRecordset("SELECT " & strSQL_P & ".* FROM " & strSQL_P & " WHERE (((" & strSQL_P & ".CID)=" & OpenCid & "))", dbOpenDynaset)
Set frm.Recordset = rst_L
Для дальнейшей обработки нужно однозно ссылаться на конкретный рекордсет загрузки формы с учетом того что может быть открыто несколько форм, а процедура общая для всех

  Ответить  
 
 автор: АлексейЕ   (26.01.2010 в 13:23)   личное сообщение
 
 

Для дальнейшей обработки нужно однозно ссылаться на конкретный рекордсет загрузки формы с учетом того что может быть открыто несколько форм, а процедура общая для все


Ну так и ссылайтесь КонкретнаяФорма.Recordset и т.д.

  Ответить  
 
 автор: Ivanko_011   (26.01.2010 в 14:19)   личное сообщение
 
 


Ну так и ссылайтесь КонкретнаяФорма.Recordset и т.д.



Все бы хорошо, но не могу поставить блокировку на запись для других пользователей

  Ответить  
 
 автор: kot_k_k   (26.01.2010 в 14:26)   личное сообщение
 
 

что вообще происходит у тебя с формами
подробно что тебе нужно реализовать.

  Ответить  
 
 автор: Ivanko_011   (26.01.2010 в 14:48)   личное сообщение
 
 

Private Sub Form_Load()
Set frm = Me.Form
FormLoade
End Sub

Public Sub FormLoade()

Dim strSQL_P As String
strSQL_P = frm.Name

Dim rst_E As Recordset
'OpenCid присваивается в ленточной форме OpenCid = Me![CID]
Set rst_E = dbs.OpenRecordset("SELECT " & strSQL_P & ".* FROM " & strSQL_P & " WHERE (((" & strSQL_P & ".CID)=" & OpenCid & "))", dbOpenDynaset)
rst_E.Edit
Set frm.Recordset = rst_E

Exit Sub

rst_E.Edit запись для других пользователей не блокирует

  Ответить  
 
 автор: kot_k_k   (26.01.2010 в 15:06)   личное сообщение
 
 

Set наборЗаписей = объект.OpenRecordset (источник, тип, параметры, блокировки)

параметры :
dbDenyWrite - Запрет другим пользователям изменять или добавлять записи

блокировки:
dbPessimistic - Использование жесткой блокировки при определении возможности изменения объекта Recordset в многопользовательской среде. Страница, содержащая обрабатываемую запись, блокируется при вызове метода Edit

там их много посмотри все.

правда хэлп 97-го

  Ответить  
 
 автор: Lukas   (26.01.2010 в 13:33)   личное сообщение
 
 

1. Это не ответ на вопрос: что такое ...составных переменных...
2. Можно использовать коллекцию Forms, или доморощенную коллекцию.
3. Можно спросить Screen на предмет активной формы.
4. Можно спросить CurrentObjectName и CurrentObjectType

Поимев ссылку на форму, легко поиметь ссылку на ее рекордсет.

  Ответить  
 
 автор: kot_k_k   (26.01.2010 в 13:44)   личное сообщение
 
 

Lukas
может чуть в сторону.
как правильно сделать такую вещь:


Dim Name_Form as String
Name_Form="Форма_1"
Set Name_Form.Recordset = "Select ........"


или описание переменной должно быть по другому???

  Ответить  
 
 автор: Lukas   (26.01.2010 в 13:51)   личное сообщение
 
 

Если форма открыта, она есть в коллекции форм:
Для стандартно-открытой формы:

Dim FormName As String
FormName="frm1"
Forms(FormName).RecordSource="SELECT ...." 'Если строка, то не Recordset, а RecordSource 

  Ответить  
 
 автор: kot_k_k   (26.01.2010 в 14:02)   личное сообщение
 
 

ага, ясно.

  Ответить  
 
 автор: Explorer   (26.01.2010 в 13:47)   личное сообщение
 
 

он походу использует пространство имен объектов как данные (добавляет постфиксы к именам)

нормально

примерно как MSys к служебным таблицам

  Ответить  
 
 автор: Explorer   (26.01.2010 в 13:24)   личное сообщение
 
 

запросто - посторой мастером ГлавнуюФорму (Switchboard) и посмотри как там все устроено в модуле формы


Private Sub FillOptions()
' Fill in the options for this switchboard page.

    ' The number of buttons on the form.
    Const conNumButtons = 8
    
    Dim con As Object
    Dim rs As Object
    Dim stSql As String
    Dim intOption As Integer
    
    ' Set the focus to the first button on the form,
    ' and then hide all of the buttons on the form
    ' but the first.  You can't hide the field with the focus.
    Me![Option1].SetFocus
    For intOption = 2 To conNumButtons
        Me("Option" & intOption).Visible = False
        Me("OptionLabel" & intOption).Visible = False
    Next intOption
    
    ' Open the table of Switchboard Items, and find
    ' the first item for this Switchboard Page.
    Set con = Application.CurrentProject.Connection
    stSql = "SELECT * FROM [Switchboard Items]"
    stSql = stSql & " WHERE [ItemNumber] > 0 AND [SwitchboardID]=" & Me![SwitchboardID]
    stSql = stSql & " ORDER BY [ItemNumber];"
    Set rs = CreateObject("ADODB.Recordset")
    rs.Open stSql, con, 1   ' 1 = adOpenKeyset
    
    ' If there are no options for this Switchboard Page,
    ' display a message.  Otherwise, fill the page with the items.
    If (rs.EOF) Then
        Me![OptionLabel1].Caption = "There are no items for this switchboard page"
    Else
        While (Not (rs.EOF))
            Me("Option" & rs![ItemNumber]).Visible = True
            Me("OptionLabel" & rs![ItemNumber]).Visible = True
            Me("OptionLabel" & rs![ItemNumber]).Caption = rs![ItemText]
            rs.MoveNext
        Wend
    End If

    ' Close the recordset and the database.
    rs.Close
    Set rs = Nothing
    Set con = Nothing

End Sub

  Ответить  
 
 автор: Ivanko_011   (26.01.2010 в 14:28)   личное сообщение
 
 

Спасибо, но это не мой случай. С контролами все понятно.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList