Relacionar tablas en Visual Foxpro

Me puedes ayudar por favor:
Ocupo un Caso práctico, del comando SET RELATION TO...
Donde:
- Primero se haga la creación de un formulario contenedor.
- Segundo se le agregue a este formulario un ListBox o ComboBox con los
campos de una tabla primaria.
- Tercero que cuando se seleccione alguno de los registros de la lista, me
pase el control inmediatamente a una cuadrícula (Grid) pero que contenga
una tabla secundaria relacionada con el registro que tomé de la tabla
primaria.
Me falla la técnica que estoy usando, porque exactamente no se cual evento
de mi procedimiento debo desencadenar dentro mi objeto GRID.
Yo estoy usando el evento WHEN. Pero me activa la tabla secundaria hasta
que hago click dentro del cuadro GRID.
Ojalá me haya explicado adecuadamente para obtener tu ayuda.
De antemano te agradezco mucho la atención al presente, si fueras tan
gentil de enviarme algún ejemplo a:
[email protected]

1 Respuesta

Respuesta
2
Disculpa la demora, entiendo tu pregunta, pero si me puedes enviar tu form y tus tablas a mi correo a [email protected] te agradecería para ayudarte más eficazmente.
Estimado experto:
Por favor puedes checarme este código...
Me está funcionando con un ComboBox y una Grid. Mi pregunta es la siguiente
Como le puedo agregar Otra Relación para una segunda Grid y que esta me
responda como "Nieta" del ComboBox, e "Hija" de mi primer Grid... Saludos.
clear
store 0 to strike
public nombredelgrupo as string
public registrodelgrupo as integer 
Insertsub = CREATEOBJECT('Form')  && Crea un Form.
WITH insertsub
 .Closable = .f.  && Desactiva el cuadro de menú Control.
 .Caption = 'Definición de Categorias para los Productos y Servicios'
 .Activate
 .Unload
 .Move(50,100,600,500)  && Mueve el formulario.
 .WindowState = 2
 .ShowTips = .T.
 .SHOW  && Muestra el formulario.
ENDWITH
Insertsub.AddObject('Lecturagrup','Listadogrupos')  && Agrega un control ComboBox.
WITH Insertsub.Lecturagrup
 .Visible =.T.  && Cuadro de lista visible.
 .ToolTipText = 'Seleccione Un Grupo para Editar Sus categorias'
 .ReadOnly=.F.
    .ColumnCount=2
    .ColumnWidths = "200,20"
 .RowSourceType = 2  && Especifica una TABLA
 .ControlSource = CTOBIN(GRUPOS.GRU_CODE)
 .RowSource = 'GRUPOS.GRU_NOMBRE,GRU_CODE'  && tabla grupos de productos
 .BoundColumn = 2
 .ListIndex = 1
ENDWITH   
Insertsub.AddObject('cmbCommand1','cmdMiBtnCmnd')  && Agrega un botón de comando "Salir".
WITH Insertsub.cmbCommand1
 .Visible =.T.  && Botón de comando "Salir" visible.
 .ToolTipText = 'Abandona el Formulario y regresa al Inicio'
ENDWITH
Insertsub.AddObject('LecturaSubgrup','UnaGrid')   && Agregar Una Cuadrícula para Categorias
WITH Insertsub.LecturaSubgrup
 .Visible = .T.
 .RecordSource = 'SUBPROD' && ESPECIFICA LA TABLA SECUNDARIA
 .RecordSourceType = 1  && Especifica 0=TABLA, 1=ALIAS, 2=PETICION, 4=SQLuna instruccion SQL
* .RelationalExpr = 'FOR CTOBIN(GRUPOS.GRU_CODE) = CTOBIN(SUBPROD.SUB_GRUPO)'
 .TooltipText='Cuadrícula de subgrupos Relacionados'
* .ChildOrder = 'CTOBIN(GRUPOS.GRU_CODE)'
 .ReadOnly=.F.
 .Enabled=.T.
    .ColumnCount=3
 .LinkMaster = 'GRUPOS'  && ESPECIFICA LA TABLA PRIMARIA
 .Move(10,50,400,300)
* .SetFocus
* .SetAll("DynamicBackColor", "IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255), RGB(125,125,125))", "Column")
 .Columns(3).BackColor = RGB(0,0,255) && azul brillante
*   .Columns(1).BackColor = RGB(0,125,0) && verde
 .Columns(2).BackColor = RGB(255,255,255) && blanco
* .Columns(3).BackColor = RGB(125,125,0) && verde
 .Columns(1).BackColor = RGB(255,0,0) && rojo brillante
 .Columns(1).Header1.Caption = 'INDEX'
 .Columns(2).Header1.Caption = 'Subgrupos del Menú'
 .Columns(3).Header1.Caption = 'Relation'
ENDWITH 
READ EVENTS  && Inicia el procesamiento de eventos.
DEFINE CLASS cmdMiBtnCmnd AS CommandButton  && Crea un botón de comando.
   Caption = '\<Salir'  && Título del botón de comando.
   Cancel = .T.  && Botón de comando Cancelar predeterminado (Esc).
   Left = 10  && Columna del botón de comando.
   Top = 500  && Fila del botón de comando.
   Height = 30  && Alto del botón de comando.
   PROCEDURE Click
      CLEAR EVENTS  && Detiene el procesamiento de eventos, cierra Form.
      CLEAR  && Borra la ventana principal de Visual FoxPro.
ENDDEFINE
DEFINE CLASS Listadogrupos AS COMBOBOX && Crea un control ListBox.
   Left = 10  && Columna de ListBox.
   Top = 10  && Fila de ListBox.
   Height = 20
   Width = 300
   MultiSelect = .F.  && Permite seleccionar dos o más elementos.
 PROCEDURE Click
  STORE CTOBIN(GRUPOS.GRU_CODE) TO STRIKE
  Thisform.LecturaSubgrup.Refresh
  PROCEDURE GotFocus
  Thisform.LecturaSubgrup.Refresh
ENDDEFINE
DEFINE CLASS UnaGrid AS Grid
 Procedure CLICK
  setfocus = .t.
  select subprod
  SET INDEX TO SUBPROD1
  SELECT GRUPOS
   SET INDEX TO GRUPOS2
    SET RELATION TO CTOBIN(GRUPOS.GRU_CODE) INTO SUBPROD
 Thisform.LecturaSubgrup.Refresh
 procedure when
  setfocus = .t.
  select subprod
  SET INDEX TO SUBPROD1
  SELECT GRUPOS
   SET INDEX TO GRUPOS2
    SET RELATION TO CTOBIN(GRUPOS.GRU_CODE) INTO SUBPROD
 Thisform.LecturaSubgrup.Refresh
enddefine
Tengo muchas pregunta on line, te doy respuesta dentro de 24hs si me puedes aguantar
Seguro que sí...
Que al fin y al cabo, voy bastante despacio en mi proyecto.
Lo bueno es que con este formulario mientras le salgo al paso...
Saludos.
Hola estimado experto...
Permíteme cerrar este seguimiento, me imagino lo ocupado que estás.
Probablemente otro experto pueda asesorarme... Te ruego y me disculpes
y espero contar con tu apoyo para consultas posteriores... Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas