Hola amigos como estan. Quisiera que me ayuden con un caso de programacion en version 9.B. Estoy haciendo porgramas con version 91B anteriormnte hice con las versiones anteriores osea 8 pero hace unos dias atras cambiamos de version. Estoy haciendo un maestro de pedidos que consta de dos tablas c-pedido (Cacebecera) y d-pedido (Detalle del pedido). eh construido los objetos que son un SDO, SDB y SDV. En en el SDV tengo todos los datos de la tabla C-PEDIDO y cuando quiero ingresar un nuevo registro al momento de grabar debo de grabar el numero del pedido que es este caso es un PK (llave). Mi pregunta es como hago para poder capturar el ultimo numero de la tabla de consecutivos y en donde es que debo de poner la codificacion, en el SDV o en el SDO pues que yo sepa creo que actualmente todo el codigo del porgrama se realiza en el SDO y ya no en el SDV como se hacia en la version 8. Por favor ayundeme a poder capturar el ultimo consecutivo de la tabla y poder grabar en la tabla de la cabecera del pedido y si tienen algun ejemplo de programacion en version 9 por favor cuelguenlo para poder revisarlo. Desde ya les agradesco por su ayuda. Carlos.
Caro amigo Carlos, Pelo que entendi precisa saber onde fazer as validações na SDO. Procedures "rowObjectValidate" e "commitTransaction" podem ser utilizadas. Para saber o último registro, utilize um buffer da tabela fazendo busca com o find last use-index xxx exclusive-lock, atribua o ultimo + 1 e libere a tabela apos o commit, atenção para o escopo da transação no seu código. Boa sorte. abraço. LimBh
Hola LimBh como estas. Lei tu respuesta pero tengo otra pregunta mas, al momento de buscar esos procedimientos y tratar de crearlos en el SDO no me aparecen en la lista de procedimeintos nuevos. Donde puedo encontrar todos los procedimientos que se usan con el SDO. Gracias. Carlos.
Caro Carlos, Crie uma nova SDO com qualquer tabela. Após criar, clique em "Edite Code"; no Section, selecione: Procedures; em seguida "New"; Tera as opções: Procedure e Override Procedure: customizações que voce pode fazer, criar suas proprias procedures que devem ser chamadas pelas override. override: subscrever as internal procedures do Progress. Aqui você pode completar com os seus códigos juntamente com as ações do progress já implementadas. Se na sua lista de override não aparecer a procedure "rowObjectValidate" pode criá-la como procedure que o Progress vai executá-la. Para saber o que cada override faz, basta colocar msg em cada uma e ver o momento em que são disparadas. Acho que "CommitTransaction" e rowObjectValidate são as mais utilizadas. Espero ter ajudado. LimBh
Hola LimBh . En primer lugar dejame agradecer por tu gran ayuda sobre el tema de los consecutivos, mira ahora tengo otro problema sudede que tengo dos SDO. Un SDO padre y otro SDO hijo mi problema es que como hago para poder capturar la llave del SDO padre. Llave SDO padre: nrodoc (Numero de documento) fchdoc (Fecha de Documento) Llave SDO hijo: nrodoc (Numero de documento) fchdoc (Fecha de Documento) nroitm (Numero de item) Cuando adiciono un item al SDO hijo tengo que incrementar el nroitm de la tabla hijo como hago para poder capturar la llave del SDO padre y poder filtrar todos los items del SDO hijo. Este es el porgrama que estoy aplicando: FIND SOLDESPROD WHERE SOLDESPROD.nrodoc = (numero llave padre) AND SOLDESPROD.fchdoc = (fecha llave padre) NO-LOCK NO-ERROR. IF AVAILABLE SOLDESPROD THEN DO: FIND LAST b-SOLDESREQPROD OF SOLDESPROD EXCLUSIVE-LOCK. IF AVAILABLE b-SOLDESREQPROD THEN DO: iCorre = b-SOLDESREQPROD.nroitm + 1. /* Numero de item */ END. ELSE DO: iCorre = 1. END. RELEASE b-SOLDESREQPROD. ASSIGN RowObjUpd.nroitm = iCorre. END. Espero haberme hecho entender. Gracias. Carlos.