【问题标题】:Variable in child window does not receive value from parent子窗口中的变量未从父窗口接收值
【发布时间】:2009-04-16 16:04:59
【问题描述】:

在一个 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 页面。我编写这些报告的软件限制了我在数据库连接等方面的能力。所以我不得不这样做。

因此,我验证了父窗口中的 oPart 已正确填充。它做了什么!我只是无法将它填充到我的子窗口中。所以问题是,如何在子窗口中取回一个值?

【问题讨论】:

  • GetParts 调用后 oParts 中有什么?
  • 我现在正在工作的实际报告是客户 PO 放置在袋子上以进行交付的标签,但它用完了实际的 Packlist 报告,这就是为什么我不能将此信息放在父窗口上的原因.我的那个子窗口允许您为标签选择打印机和部件,因此选择 oParts。

标签: html vbscript parent-child


【解决方案1】:

试试这个
子窗口


Set oParts = window.opener.GetParts(oParts)

父窗口


Set GetParts = oParts

【讨论】:

    【解决方案2】:

    Tester101:

    尝试您所说的在父函数中出现错误: 对象需要'oParts'

    看到这一点,我在其中定义了 oParts 记录集:

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

    现在一切都很棒。

    所以这个问题的真正答案是 Tester101 的答案加上在父函数中返回子窗口的记录集的定义。

    感谢Tester101!!!!

    【讨论】:

    • 我不明白为什么你的原始代码不起作用,除非有什么东西可以阻止对象在窗口之间通过引用传递?很高兴我能帮上忙。
    • 如果您愿意尝试,我很想知道是否运行您的原始代码,但将函数定义更改为 Function GetParts(ByRef oParts) 是否有效。
    • 我稍后会尝试并告诉你会发生什么。
    猜你喜欢
    • 2014-03-03
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多