2009-04-16 11 views
0

A partir d'une page html, je crée une fenêtre enfant pour effectuer un filtrage (choix de l'imprimante et des parties à imprimer sur le rapport). Pour afficher la sélection de partie dans la fenêtre enfant, j'ai besoin d'appeler une fonction GetParts à partir de la fenêtre parent et renvoyer le jeu d'enregistrements à l'enfant. Voici un code pour aider:La variable dans la fenêtre enfant ne reçoit pas de valeur du parent

De l'enfant Fenêtre->

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 

Dans la fenêtre Parent ->

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 

J'écris des rapports pour un logiciel qui me demande de créer le filtre et le rapport pages html contenant l'objet de rapport crystal. Le logiciel pour lequel j'écris ces rapports limite ce que je peux faire en termes de connexions db entre autres choses. Donc je dois faire les choses de cette façon.

J'ai donc vérifié que oParts dans la fenêtre parente est rempli correctement. Ce qu'il fait! Je ne peux tout simplement pas le remplir dans la fenêtre de mon enfant. La question est donc, comment puis-je récupérer une valeur dans la fenêtre enfant?

+0

Que se trouve-t-il dans oParts après l'appel de GetParts? – Tester101

+0

Le rapport actuel que je travaille actuellement est une étiquette pour le client PO à mettre sur les sacs pour la livraison, mais il n'existe plus dans le rapport Packlist réel, c'est pourquoi je ne peux pas mettre cette information sur la fenêtre parent. Cette fenêtre enfant permet de choisir l'imprimante et la pièce, donc oParts, pour l'étiquette. –

Répondre

0

Tester101:

Essayer ce que vous avez dit a une erreur dans la fonction parent: objet requis 'oParts'

En voyant cela, je définis le oParts y recordset:

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

Et maintenant tout fonctionne génial. Donc, la véritable réponse à cette question est la réponse de Tester101 plus la définition du jeu d'enregistrements qui doit retourner à la fenêtre enfant dans la fonction parent.

Merci Tester101 !!!!

+0

Je ne comprends pas pourquoi votre code original n'a pas fonctionné, à moins qu'il y ait quelque chose qui empêche les objets d'être transmis par référence entre les fenêtres? Content que je puisse aider de toute façon. – Tester101

+0

Si vous voulez l'essayer, je serais intéressé de savoir si vous exécutez votre code original, mais en changeant la définition de la fonction à Fonction GetParts (ByRef oParts) fonctionne. – Tester101

+0

Je vais essayer plus tard et vous laisser savoir ce qui se passe. –

1

Essayez cette
fenêtre enfant


Set oParts = window.opener.GetParts(oParts) 

Parent fenêtre


Set GetParts = oParts 
Questions connexes