2009-04-16 3 views
0

Innerhalb einer HTML-Seite erzeuge ich ein untergeordnetes Fenster, um einige Filterungen durchzuführen (Auswahl des Druckers und der zu druckenden Teile im Bericht). Um die Teileauswahl im untergeordneten Fenster anzuzeigen, muss ich eine GetParts-Funktion aus dem übergeordneten Fenster aufrufen und das Re-Cord-Set an das Kind zurückgeben. Hier einige Code zu helfen:Variable im untergeordneten Fenster erhält keinen Wert vom übergeordneten Element

Vom Kind window->

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 

Im selben Fenster ->

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 

schreibe ich Berichte für eine Software, die mich Filter erstellen erfordert und Bericht HTML-Seiten, die das Crystal Report-Objekt enthalten. Die Software, für die ich diese Berichte schreibe, begrenzt unter anderem, was ich unter db-Verbindungen machen kann. Also muss ich die Dinge so machen.

So vergewisserte ich mich, dass oParts im Elternfenster richtig gefüllt ist. Was es macht! Ich kann es einfach nicht in mein Kindfenster füllen. Die Frage ist also, wie bekomme ich einen Wert zurück in das Kind-Fenster?

+0

Was ist nach dem GetParts-Aufruf in oParts? – Tester101

+0

Der aktuelle Bericht, den ich gerade bearbeite, ist ein Etikett für die Kundenbestellung, um die Taschen für die Lieferung anzulegen, aber es läuft aus dem tatsächlichen Bericht der Packliste heraus, weshalb ich diese Informationen nicht in das Elternfenster legen kann. In diesem untergeordneten Fenster können Sie den Drucker und den Teil, also oParts, für das Etikett auswählen. –

Antwort

0

Tester101:

Der Versuch, was du gesagt hast einen Fehler in der übergeordneten Funktion haben: Objekt erforderlich 'oParts'

dieses Sehen definierte ich den Re-Cord oParts da drin:

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

Und jetzt alles funktioniert super.

Also die eigentliche Antwort auf diese Frage ist die Antwort von Tester101 und die Definition des Recordsets, das in der Elternfunktion zum untergeordneten Fenster zurückkehren soll.

Danke Tester101 !!!!

+0

Ich verstehe nicht, warum Ihr ursprünglicher Code nicht funktioniert hat, es sei denn, es gibt etwas, das verhindert, dass Objekte durch Referenz zwischen Fenstern übergeben werden? Froh, dass ich trotzdem helfen könnte. – Tester101

+0

Wenn Sie es versuchen möchten, würde ich gerne wissen, ob Sie Ihren ursprünglichen Code ausführen, aber die Funktionsdefinition in Function GetParts (ByRef oParts) zu ändern. – Tester101

+0

Ich werde es später versuchen und Sie wissen lassen, was passiert. –

1

Probieren Sie diese
Kind Fenster


Set oParts = window.opener.GetParts(oParts) 

Übergeordnetes Fenster


Set GetParts = oParts