Переменная в дочернем окне не получает значение от родителя - PullRequest
0 голосов
/ 16 апреля 2009

На html-странице я создаю дочернее окно для выполнения некоторой фильтрации (выбор принтера и какие части для печати в отчете). Чтобы показать выбор детали в дочернем окне, мне нужно вызвать функцию GetParts из родительского окна и вернуть набор записей дочернему. Вот некоторый код, чтобы помочь:

Из дочернего окна ->

Sub LoadParts(frmRptFilter)
Dim sql
Dim oParts
Set oParts = CreateObject("ADODB.Recordset")
oParts.Fields.Append "Part", adBSTR , 30
oParts.Open
oParts = window.opener.GetParts(oParts) 'Since oParts was passed as a parameter I did not believe this to be necessary, but when it didn't work as expected I tried returning it this way....didn't work either
'more code follows

В родительском окне ->

Function GetParts(oParts)
Dim sql

sql = "SELECT Job.Part_Number FROM Job RIGHT JOIN Packlist_Detail ON Packlist_Detail.Job = Job.Job "_
    & "WHERE Packlist_Detail.Packlist LIKE '" & sPL & "'"

CloseRS(oRS)
oRS.Open sql, oConn, adOpenStatic, adLockReadOnly

oRS.MoveFirst

If Not (oRS.BOF AND oRS.EOF) Then
    Do while not oRS.EOF
        oParts.AddNew
        oParts("Part").Value = oRS(0)
        oParts.Update
        oRS.MoveNext
    Loop 
End If

'GetParts = oParts 'Since oParts was passed as a parameter I did not believe this to be necessary, but when it didn't work as expected I tried returning it this way....didn't work either
End Function

Я пишу отчеты для программного обеспечения, которое требует от меня создания фильтра и создания отчетов HTML-страниц, которые содержат объект отчета Crystal. Программное обеспечение, для которого я пишу эти отчеты, ограничивает то, что я могу сделать с точки зрения соединений с БД, помимо прочего. Так что я так поступаю.

Итак, я проверил, что oParts в родительском окне заполняется правильно. Что это делает! Я просто не могу заполнить его в окне моего ребенка. Итак, вопрос в том, как мне вернуть значение в дочернее окно?

Ответы [ 2 ]

1 голос
/ 16 апреля 2009

Попробуйте
Детское окно


Set oParts = window.opener.GetParts(oParts)

Родительское окно


Set GetParts = oParts
0 голосов
/ 16 апреля 2009

Tester101:

Попытка того, что вы сказали, вызвала ошибку в родительской функции: Требуется объект 'oParts'

Видя это, я определил там набор записей oParts:

Set oParts = CreateObject("ADODB.Recordset")
oParts.Fields.Append "Part", adBSTR , 30
oParts.Open

А теперь все работает потрясающе.

Таким образом, реальный ответ на этот вопрос - это ответ Tester101 плюс определение набора записей, который должен вернуться в дочернее окно в функции родителя.

Спасибо Tester101 !!!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...