2012-04-12 10 views
0
define variable hOrderQuery  as handle no-undo. 
define variable browseOrder-hdl as handle no-undo. 
define variable browse-hdl  as handle no-undo. 
define variable CNumber   as integer no-undo. 

CREATE QUERY hQuery. 
hQuery:SET-BUFFERS(BUFFER Customer:HANDLE). 
hQuery:QUERY-PREPARE("FOR EACH Customer"). 
hQuery:QUERY-OPEN(). 

CREATE BROWSE browse-hdl 
ASSIGN 
TITLE  = "Customer Browser" 
FRAME  = FRAME MyFrame:HANDLE 
QUERY  = hQuery 
X   = 2 
Y   = 2 
WIDTH  = 74 
DOWN  = 10 
VISIBLE = YES 
SENSITIVE = TRUE 
READ-ONLY = yes. 
browse-hdl:ADD-COLUMNS-FROM(BUFFER Customer:HANDLE,"SalesRep,email,fax,comments,address,City,State,PostalCode"). 


on value-changed of browse-hdl 
do: 

FIND CURRENT Customer. 
cNumber = Customer.CustNum. 

CREATE QUERY hOrderQuery. 
hOrderQuery:SET-BUFFERS(BUFFER Order:HANDLE). 
hOrderQuery:QUERY-PREPARE("FOR EACH Order where Order.CustNum = " + string(cNumber)) no- error. 
hOrderQuery:QUERY-OPEN(). 

CREATE BROWSE browseOrder-hdl 
ASSIGN 
TITLE  = "Order Browser" 
FRAME  = FRAME MyFrame:HANDLE 
QUERY  = hOrderQuery 
X   = 2 
Y   = 240 
WIDTH  = 74 
DOWN  = 10 
VISIBLE = YES 
SENSITIVE = TRUE 
READ-ONLY = yes. 
browseOrder-hdl:ADD-COLUMNS-FROM(BUFFER Order:HANDLE,"warehousenum,CustNum"). 

end. 


on value-changed of browseOrder-hdl 
do: 
message "hai" view-as alert-box. 
end. 

das ist mein Problem.Ich habe 3 Browser.Nun habe ich nur zwei erstellt. Wenn ich auf die erste Zeile des ersten Kundenbrowsers klicke, sollte er den aktuellen Kunden auswählen und seine Bestellung im zweiten Browser-Bestellbrowser anzeigen. Wenn ich auf Order-Browser-Wert klicke, sollte es die entsprechenden Orderline-Tabellenwerte im 3. Orderline-Browser anzeigen (was ich jetzt nicht erstellt habe).Wertänderungsereignis im Browser?

Also als ich versucht habe, das browseOrder-hdl zu verwenden, um ein zweites wertverändertes Ereignis zu erstellen, wird angezeigt, dass es bereits gelöscht ist. Wie überwinde ich dieses Problem? Bitte antworten Sie.

Antwort

0
DEFINE FRAME MyFrame 
    WITH 1 DOWN NO-BOX KEEP-TAB-ORDER OVERLAY 
    SIDE-LABELS NO-UNDERLINE THREE-D 
    AT COL 1 ROW 1 
    SIZE 80 BY 16. 

define variable hOrderQuery  as handle no-undo. 
define variable browseOrder-hdl as handle no-undo. 
define variable browse-hdl  as handle no-undo. 
define variable CNumber   as integer no-undo. 
DEFINE VARIABLE hQuery   AS HANDLE NO-UNDO. 

CREATE QUERY hQuery. 
hQuery:SET-BUFFERS(BUFFER Customer:HANDLE). 
hQuery:QUERY-PREPARE("FOR EACH Customer"). 
hQuery:QUERY-OPEN(). 

CREATE BROWSE browse-hdl 
    ASSIGN 
    TITLE  = "Customer Browser" 
    FRAME  = FRAME MyFrame:HANDLE 
    QUERY  = hQuery 
    X   = 2 
    Y   = 2 
    WIDTH  = 74 
    DOWN  = 10 
    VISIBLE = TRUE 
    SENSITIVE = TRUE 
    READ-ONLY = TRUE 
    TRIGGERS: 
    ON VALUE-CHANGED DO: 
     RUN ShowOrderBrowser. 
    END. 
    END. 

    browse-hdl:ADD-COLUMNS-FROM(BUFFER Customer:HANDLE,"SalesRep,email,fax,comments,address,City,State,PostalCode"). 



WAIT-FOR CLOSE OF THIS-PROCEDURE. 



/* ********************** Internal Procedures *********************** */ 

PROCEDURE ShowOrderBrowser: 
    /*------------------------------------------------------------------------------ 
     Purpose:                   
     Notes:                  
    ------------------------------------------------------------------------------*/ 
    FIND CURRENT Customer. 
    cNumber = Customer.CustNum. 

    CREATE QUERY hOrderQuery. 
    hOrderQuery:SET-BUFFERS(BUFFER Order:HANDLE). 
    hOrderQuery:QUERY-PREPARE("FOR EACH Order WHERE Order.CustNum = " + STRING(cNumber)). 
    hOrderQuery:QUERY-OPEN(). 

    CREATE BROWSE browseOrder-hdl 
    ASSIGN 
    TITLE  = "Order Browser" 
    FRAME  = FRAME MyFrame:HANDLE 
    QUERY  = hOrderQuery 
    X   = 2 
    Y   = 240 
    WIDTH  = 74 
    DOWN  = 10 
    VISIBLE = TRUE 
    SENSITIVE = TRUE 
    READ-ONLY = TRUE  
    TRIGGERS: 
     ON VALUE-CHANGED DO: 
     MESSAGE "hai" 
     VIEW-AS ALERT-BOX. 
     END. 
    END. 

    browseOrder-hdl:ADD-COLUMNS-FROM(BUFFER Order:HANDLE,"warehousenum,CustNum"). 

    WAIT-FOR VALUE-CHANGED OF browseOrder-hdl. 

END PROCEDURE. 
+0

Problem ist, dass Ihr ON VALUE-CHANGED Block für Browser browseOrder-hdl mit nicht initialisierter Variable arbeitet. In der Laufzeit ist hier Nullwert. Sie müssen zuerst Ihren Trigger definieren, wenn Ihr Order-Browser existiert. sieh dir die TRIGGERS an: block on definition vom Browser;) – firhang