Форма в Сабформе

Александра-Александра
Дата: 21.02.2008 12:46:33
Здравствуйте...

Такой вопрос:

Имеется форма frmMain
Record Source:

SELECT tblBook.*, tblBook.IDRazd, tblBook.Nazv_Texta FROM tblBook 
WHERE (((tblBook.IDRazd)=[Forms]![frmMain]![IDRazd]) AND 
((tblBook.Nazv_Texta)=[Forms]![frmMain]![Nazv_Texta]));

Затем я решила сделать форму frmVer и в этой форме сделала СабФорму SubFormVer
и в эту Сабформу подключаю форму frmMain.

Соответственно меняю Record Source:

SELECT tblBook.*, tblBook.IDRazd, tblBook.Nazv_Texta FROM tblBook 
WHERE (((tblBook.IDRazd)=[Forms]![frmVer]![SubFormVer]![frmMain]![IDRazd]) AND 
((tblBook.Nazv_Texta)=[Forms]![frmVer]![SubFormVer]![frmMain]![Nazv_Texta]));


Такой вариант не хочет работать... Где тут ошибка?
Спасибо...

С Уважением,
Александра
Karfaqen
Дата: 21.02.2008 13:03:12
SELECT tblBook.*, tblBook.IDRazd, tblBook.Nazv_Texta FROM tblBook
WHERE (((tblBook.IDRazd)=[Forms]![frmVer]![SubFormVer].[Form]![IDRazd]) AND
((tblBook.Nazv_Texta)=[Forms]![frmVer]![SubFormVer].[Form]![Nazv_Texta]));
Александра-Александра
Дата: 21.02.2008 13:38:37
Karfaqen
SELECT tblBook.*, tblBook.IDRazd, tblBook.Nazv_Texta FROM tblBook
WHERE (((tblBook.IDRazd)=[Forms]![frmVer]![SubFormVer].[Form]![IDRazd]) AND
((tblBook.Nazv_Texta)=[Forms]![frmVer]![SubFormVer].[Form]![Nazv_Texta]));

Спасибо... Сейчас подключается...:)
Александра-Александра
Дата: 22.02.2008 01:01:47
В продолжение темы...

На форме frmMain имеется комбобокс IDRazd

Record Source:
SELECT tblRazdely.IDRazd, tblRazdely.NameRazd FROM tblRazdely ORDER BY tblRazdely.NPP;

Когда форма frmMain открывалась отдельно, то в комбобоксе была видна запись.

Когда установила форму frmMain в СабФорму SubFormVer формы frmVer, комбобокс IDRazd открывается пустым...
Но дальше при выборе из комбобокса вручную любого раздела все работает...

Где может быть ошибка?

Спасибо...
proposed amendment
Дата: 22.02.2008 01:09:32
Александра-Александра
комбобокс IDRazd открывается пустым...


может быть он не пустой? может быть просто в самой таблице значение поля, которое должно отображаться, равно либо стрингу нулевой длины или просто пробелы набиты?
а может поле со списком Unbound или для него значение по умолчанию установлено...

мало данных...

попробуй поменять порядок сортировки
Александра-Александра
Дата: 22.02.2008 01:25:46
proposed amendment
Александра-Александра
комбобокс IDRazd открывается пустым...


может быть он не пустой? может быть просто в самой таблице значение поля, которое должно отображаться, равно либо стрингу нулевой длины или просто пробелы набиты?
а может поле со списком Unbound или для него значение по умолчанию установлено...

мало данных...

попробуй поменять порядок сортировки

Да нет..
Если форму frmMain открывать отдельно, то в комбобоксе видна нужная запись. Запись существует...

Я хочу увидеть эту же запись, когда форма frmMain открывается в Сабформе другой формы...

Комбобокс со списком Unbound...

Изменение порядка сортировки не дало результатов...
Karfaqen
Дата: 22.02.2008 09:16:09
Александра-Александра
в комбобоксе видна нужная запись
А нужная - это какая? В комбобоксе виден текст того элемента списка, которому соответствует текущее значение комбобокса. Для кобобоксов, СВЯЗАННЫХ с полем источника формы - это текущее значение этого поля.

Однако, вы пишете, что у вас комбобокс НЕсвязанный:
Александра-Александра
Комбобокс со списком Unbound
В этом случае его исходное значение может определяться либо значением по умолчанию (заданным в макете формы), либо - задаваться программно, например при открытии формы.


Внимание вопрос: где и как именно вы задаете текущее значение комбобокса?
Александра-Александра
Дата: 22.02.2008 10:03:06
Karfaqen
Александра-Александра
в комбобоксе видна нужная запись
А нужная - это какая? В комбобоксе виден текст того элемента списка, которому соответствует текущее значение комбобокса. Для кобобоксов, СВЯЗАННЫХ с полем источника формы - это текущее значение этого поля.

Однако, вы пишете, что у вас комбобокс НЕсвязанный:
Александра-Александра
Комбобокс со списком Unbound
В этом случае его исходное значение может определяться либо значением по умолчанию (заданным в макете формы), либо - задаваться программно, например при открытии формы.


Внимание вопрос: где и как именно вы задаете текущее значение комбобокса?

Доброе утро...

Да, программно... Вот часть кода:

Private Sub Form_Activate()
        
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    
    On Error GoTo Obr_Err
    
    With Me
        !IDRazd.Requery
    End With
    
    Set Db = CurrentDb
    Set Rs = Db.OpenRecordset("SELECT * From tblRazdely")
    If Rs.RecordCount = 0 Then
        Call Pokaz
        Set Rs = Nothing
        Set Db = Nothing
        Exit Sub
    End If
    
    Set Rs = Db.OpenRecordset("SELECT * From tblBook Order By TimeEdit Desc")
    If Rs.RecordCount = 0 Then
        Call Pokaz
        Set Rs = Nothing
        Set Db = Nothing
        Exit Sub
    End If
    
    Rs.MoveFirst
    With Me!IDRazd
        .Requery
        .Value = Rs!IDRazd
    End With
    
    With Me!Nazv_Texta
        .Requery
        .Value = Rs!Nazv_Texta
    End With
    
    With Me
        .Requery
        Set Rs = .RecordsetClone
        Rs.FindFirst ("Format(TimeEdit,'mm/dd/yy hh:nn:ss') = #" & Format(LastEditDat, "mm/dd/yy hh:nn:ss") & "#")
        .Bookmark = Rs.Bookmark
    End With
    
    
    Set Rs = Nothing
    Set Db = Nothing
    
    
    Call Pokaz
    
End Sub

Private Sub IDRazd_AfterUpdate()
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    
    On Error GoTo Obr_Err
    
    Set Db = CurrentDb
    Set Rs = Db.OpenRecordset("SELECT * FROM tblBook Where IDRazd = " & Me!IDRazd & " Order by NPP")
    
    If Rs.RecordCount = 0 Then
        Me!Nazv_Texta = Null
    Else
        Rs.MoveFirst
        Me!Nazv_Texta.Requery
        Me!Nazv_Texta = Rs!Nazv_Texta
    End If
    
    Set Rs = Nothing
    Set Db = Nothing
    Me.Requery
    Call Pokaz

End Sub

Private Sub Pokaz()
    
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    
    On Error GoTo Obr_Err
    
    Set Db = CurrentDb
   
        Set Rs = Nothing
        Set Db = Nothing
        With Me

            !knQuit.SetFocus
            !Text.Visible = False
            !nThisLastRec.Visible = False
            !IDRazd.Visible = False
            !Nazv_Texta.Visible = False
        End With
        Exit Sub
    End If

        Set Rs = Nothing
        Set Db = Nothing
        With Me
            !Text.Visible = False
            !nThisLastRec.Visible = False
            !IDRazd.Visible = False
            !Nazv_Texta.Visible = False
        End With
        Exit Sub
    End If
    
        Set Rs = Nothing
        Set Db = Nothing
        With Me
            !Text.Visible = False
            !nThisLastRec.Visible = False
            !Nazv_Texta.Visible = False
        End With
        Exit Sub
    End If
    
    
    With Me
        !Text.Visible = True
        '!Text.SetFocus
        !nThisLastRec.Visible = (!TimeEdit = LastEditDat)
        !IDRazd.Visible = True
        !Nazv_Texta.Visible = True
    End With
    
 
End Sub
Karfaqen
Дата: 22.02.2008 10:10:59
Ну вот оно это место:
With Me!IDRazd
.Requery
.Value = Rs!IDRazd
End With
А срабатывает оно у вас в форме и НЕ срабатывает в субформе, потому что оно написано внутри обработки события Form_Activate, которое для субформ не происходит.
Александра-Александра
Дата: 22.02.2008 10:22:07
Karfaqen
Ну вот оно это место:
With Me!IDRazd
.Requery
.Value = Rs!IDRazd
End With
А срабатывает оно у вас в форме и НЕ срабатывает в субформе, потому что оно написано внутри обработки события Form_Activate, которое для субформ не происходит.

Ах вот оно что...

Так как тогда лучше сделать, чтобы это получилось в Сабформе?