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.

これが私の問題です。ブラウザは3つありますが、作成したブラウザは2つだけです。最初の顧客ブラウザの1行をクリックすると、現在の顧客が選択され、2番目のブラウザ注文ブラウザに注文が表示されます。注文ブラウザの値をクリックすると、3番目の注文ラインブラウザ(今は作成していません)に対応する注文ラインテーブルの値が表示されます。

したがって、browseOrder-hdlを使用して2番目の値が変更されたイベントを作成しようとすると、すでに削除されていることが示されています。この問題を解決するには??返信してください。

4

1 に答える 1

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.
于 2012-04-13T21:36:49.700 に答える