cancel
Showing results for 
Search instead for 
Did you mean: 

Navegación en las formas.

Former Member
0 Kudos

Buenas, tengo una preguntita.

Resulta que estoy haciendo unos mantenimientos a unas tablas en la base de datos. Ya funciona todo, pero tengo el problema que no he podido hacer que se utilice la navegación de sap para buscar los Items ingresados (como en los Datos Maestros de Artículo), es decir como ir al último ingresado, al primero, al siguiente, etc etc.

Las formas las cargo por medio de un xml. Ojala alguno pueda ayudarme con este tema, de antemano muchas gracias.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hola Rudy,

lo primero es agregar que EDITText será nuestra key con esta instruccion:

oForm.DataBrowser.BrowseBy:='cardcode';

previo:

FoEdittext:=(oForm.Items.Item('cardcode').Specific) as SAPbouiCOM.EditText;

FoEdittext.DataBind.SetBound(True, 'OCPR', 'cardcode');

Habilitar los menus:

oForm.EnableMenu('1281', true); //'find record

oForm.EnableMenu('1282', true); //'add new record

oForm.EnableMenu('1283',false); //Delete record

oForm.EnableMenu('1288', true); //'next record

oForm.EnableMenu('1289', true); //'previous record

oForm.EnableMenu('1290', true); //'first record

oForm.EnableMenu('1291', true); //'last record

y si mal no recuerdo, estando todos los edittext con DATABIND, deberias navegar sin problemas.

si quieres hacer algo mas complejo o gatillar otros procedimientos, tienes el manejador de MENU.

"MENUEVENT" similar al ItemEvent.

Suerte

Former Member
0 Kudos

Gracias por tus respuestas... pero fijate que no funciona según lo que me escribiste allí... es que fijate que tengo un problema, por lo menos para uno de los casos:

Resulta que el campo que me serviría para navegar, está como quien dice linkeado hacia los Datos Maestros del Socio de Negocio, es para obtener el id del cliente, entonces quisiera hacerlo con ese campo, pero obviamente quisiera que navegue sobre los registros de mi tabla, así que entonces no lo hace.

Las líneas del Bind son las siguientes:

frm.DataSources.UserDataSources.Add("Clientes", SAPbouiCOM.BoDataType.dt_LONG_TEXT)

txtCliente = CType(frm.Items.Item("txtCliente").Specific, SAPbouiCOM.EditText)

txtCliente.DataBind.SetBound(True, "", "Clientes")

Con esto me despliega los Clientes y puedo devolver el código, pero no me navega entre registros.

Ojalá pueda contar con tu valiosa respuesta, de antemano muchas gracias.

Otra cosa, resulta que si en el SETBOUN, coloco el nombre de mi tabla (@DESCENC) y le pongo el alias de mi campo (U_Cliente) me tira una excepción que dice "No existe la tabla". Son cosas bien extrañas, espero tu respuesta.

De antemano muchas gracias.

Edited by: Rudy Castaneda on Jun 23, 2008 11:13 PM

Edited by: Rui Pereira on Jun 24, 2008 7:01 PM

Former Member
0 Kudos

Hola Rudy, me demore un poco en contestar

no vas a poder navegar tan facilmente con un EditText que esta apuntando a un UserDataSource, tiene que apuntar a un DBDataSource.

si lo estas apuntando a un UserDataSource, tú tienes que programar la accion en el MENU_EVENT...

si hace click en el boton primer registro, realizar la accion de posicionarte en el primer registro y mostrar los datos en tu formulario.

procedure MenuEvent(var pVal: SAPbouiCOM.MenuEvent;

out BubbleEvent: Boolean);

begin

if not pVal.BeforeAction then begin

if (pVal.MenuUID = '1288') or

(pVal.MenuUID = '1289') or

(pVal.MenuUID = '1290') or

(pVal.MenuUID = '1291') Then begin

//Buscar Valores y mostrar dependiendo del boton

end;

end else begin

end;

end;

para la segunda parte SETBOUND, te da error por que tu aplicacion DESCONOCE la tabla de usuario que le indicas.

la tienes que declarar y agregar a tu lista de tablas de usuarios que utilizaras.

FoUsrTable: SAPbobsCOM.UserTable;

FoUsrTable := self.FoSboCompany.UserTables.Item(@TablaUsuario);

FsUT:= '@TablaUsuario';

FoEdittext:=(FoSboForm.Items.Item('code').Specific) as SAPbouiCOM.EditText;

FoEdittext.DataBind.SetBound(True, FsUT, 'code');

FoSboForm.DataBrowser.BrowseBy := 'code';

suerte.