In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Relaciones de Tablas

Foro público de Xailer en español
Responder
carlosijc
Mensajes: 66
Registrado: Lun Mar 07, 2005 8:07 am

Relaciones de Tablas

Mensaje por carlosijc »

Bueno,, Resulta que tengo tres Tablas: GRUPOS, USUARIOS, USR2GRP.
1.- En un TdbEdit, hago las actualizaciones de los Grupos pero quiero
mostrar en un TDBBrowser, a los usuarios correspondiente a ese Grupo.
2.- Quiero que cuando me mueva por la Barra de Navegacion, se vaya mostrando
en el Brow solo aquellos usuarios que pertenecen al Grupo en curso.
La Relaciones que tengo es la siguiente:
WITH OBJECT ::oDS1 := TDbfDataSet():New( Self )
:oDataSource := ::oCdxDS
:cProcess := "GENERAL"
:cName := "Grupos.dbf"
:lOpen := .T.
:Create()
:AddTag("BYIDGRP","IDGRUPO")
:AddTag("BYNAME","NOMBRE")
:OrdSetFocus("BYIDGRP")
:Reindex()
END
WITH OBJECT ::oDS2 := TDbfDataSet():New( Self )
:oDataSource := ::oCdxDS
:cProcess := "GENERAL"
:cName := "USUARIOS.Dbf"
:lOpen := .T.
:Create()
:AddTag("BYID","IDUSUARIO")
:AddTag("BYNAME","NOMBRE")
:OrdSetFocus("BYID")
:Reindex()
END
WITH OBJECT ::oDS3 := TDbfDataSet():New( Self )
:oDataSource := ::oCdxDS
:cProcess := "GENERAL"
:cName := "Usr2Grp.dbf"
:lOpen := .T.
:Create()
:AddTag("BYUSER","IDUSUARIO+IDGRUPO")
:AddTag("BYGRUPO","IDGRUPO+IDUSUARIO")
:AddTag("IDUSUARIO","IDUSUARIO")
:AddTag("IDGRUPO","IDGRUPO")
:Reindex()
END
::oDS2:Select(2)
::oDS2:OrdSetFocus("IDUSUARIO")
::oDS2:SetRelation("IDUSUARIO",::oDS3,.T.)
::oDS1:Select(1)
::oDS1:OrdSetFocus("IDGRUPO")
::oDS1:SetRelation("IDGRUPO",::oDS3,.T.)
Diganme por favor que hago mal, que me falta, que debo agregar al
Navigator,,
Gracias
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9442
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Relaciones de Tablas

Mensaje por ignacio »

Carlos,
Supongamos dos browses, uno con clientes, y otro con facturas de dichos
clientes. Parar hace que el segundo browse de facturas se actualice cuando
modificacmos de cliente en el primer browse haremos lo siguiente:
En el browse de clientes:
METHOD BrwClientesChange( oSender, lBookMarkChanged )
if lBookMarkChanged
::oDataSetFactura:SetScope( ::oDataSetCliente:Codigo )
::oBrwFactura:Refresh( .t. )
endif
RETURN nil
Logicamente la tabla de facturas debé estar indexada por código de cliente.
Un saludo,
"Carlos Cedeño Vera" <carlosijc@gmail.com> escribió en el mensaje
news:[email=423733d3@ozsrv2.ozlan.local...]423733d3@ozsrv2.ozlan.local...[/email]
> Bueno,, Resulta que tengo tres Tablas: GRUPOS, USUARIOS, USR2GRP.
>
> 1.- En un TdbEdit, hago las actualizaciones de los Grupos pero quiero
> mostrar en un TDBBrowser, a los usuarios correspondiente a ese Grupo.
>
> 2.- Quiero que cuando me mueva por la Barra de Navegacion, se vaya
> mostrando
> en el Brow solo aquellos usuarios que pertenecen al Grupo en curso.
>
> La Relaciones que tengo es la siguiente:
>
> WITH OBJECT ::oDS1 := TDbfDataSet():New( Self )
> :oDataSource := ::oCdxDS
> :cProcess := "GENERAL"
> :cName := "Grupos.dbf"
> :lOpen := .T.
> :Create()
> :AddTag("BYIDGRP","IDGRUPO")
> :AddTag("BYNAME","NOMBRE")
> :OrdSetFocus("BYIDGRP")
> :Reindex()
> END
> WITH OBJECT ::oDS2 := TDbfDataSet():New( Self )
> :oDataSource := ::oCdxDS
> :cProcess := "GENERAL"
> :cName := "USUARIOS.Dbf"
> :lOpen := .T.
> :Create()
> :AddTag("BYID","IDUSUARIO")
> :AddTag("BYNAME","NOMBRE")
> :OrdSetFocus("BYID")
> :Reindex()
> END
>
> WITH OBJECT ::oDS3 := TDbfDataSet():New( Self )
> :oDataSource := ::oCdxDS
> :cProcess := "GENERAL"
> :cName := "Usr2Grp.dbf"
> :lOpen := .T.
> :Create()
> :AddTag("BYUSER","IDUSUARIO+IDGRUPO")
> :AddTag("BYGRUPO","IDGRUPO+IDUSUARIO")
> :AddTag("IDUSUARIO","IDUSUARIO")
> :AddTag("IDGRUPO","IDGRUPO")
> :Reindex()
> END
>
> ::oDS2:Select(2)
> ::oDS2:OrdSetFocus("IDUSUARIO")
> ::oDS2:SetRelation("IDUSUARIO",::oDS3,.T.)
> ::oDS1:Select(1)
> ::oDS1:OrdSetFocus("IDGRUPO")
> ::oDS1:SetRelation("IDGRUPO",::oDS3,.T.)
>
> Diganme por favor que hago mal, que me falta, que debo agregar al
> Navigator,,
>
> Gracias
>
>
>
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
carlosijc
Mensajes: 66
Registrado: Lun Mar 07, 2005 8:07 am

Relaciones de Tablas

Mensaje por carlosijc »

Mira Ignacio,, El caso es el siguiente,Ñ
Tengo un TdbEdit, con el Codigo de Grupo, otro con el Nombre de GRUPO, otros
con las Notas, y un DBNavigator asociado al mismo DaTaSet, o sea a la Tabla
GRUPOS, ahora bien, tengo un DBBrow, que muestras los usuarios,, pero quiero
que solo se muestren los usuarios asignados a cada uno de los grupos, que
cada vez que yo adelante con la flecha para adelante, para atras, para donde
sea,, que el brow me muestre los usuarios que pertenecen a este Grupo.
Las Tablas que tengo son:
GRUPOS USUARIOS
USR2GRP
idgrupo C(4) idx, UNICO IdUsuario C(4) UNICO
idUsuario
Nombre C(25) Nombre C(25)
idGrupo
Nota M() Clave C(8)
etc. .....
Las relaciones ya te la envie, de todas las maneras te digo que
WITH OBJECT ::oCdxDS := TCdxDataSource():New( Self )
:cConnect := "C:SeguridadDatos"
:lConnected := .T.
END
WITH OBJECT ::oDS1 := TDbfDataSet():New( Self )
:oDataSource := ::oCdxDS
:cProcess := "GENERAL"
:cName := "Grupos.dbf"
:lOpen := .T.
:Create()
:AddTag("BYIDGRP","IDGRUPO")
:AddTag("BYNAME","NOMBRE")
:OrdSetFocus("BYIDGRP")
:Reindex()
END
WITH OBJECT ::oDS2 := TDbfDataSet():New( Self )
:oDataSource := ::oCdxDS
:cProcess := "GENERAL"
:cName := "USUARIOS.Dbf"
:lOpen := .T.
:Create()
:AddTag("BYID","IDUSUARIO")
:AddTag("BYNAME","NOMBRE")
:OrdSetFocus("BYID")
:Reindex()
END
WITH OBJECT ::oDS3 := TDbfDataSet():New( Self )
:oDataSource := ::oCdxDS
:cProcess := "GENERAL"
:cName := "Usr2Grp.dbf"
:lOpen := .T.
:Create()
:AddTag("BYUSER","IDUSUARIO+IDGRUPO")
:AddTag("BYGRUPO","IDGRUPO+IDUSUARIO")
:AddTag("IDUSUARIO","IDUSUARIO")
:AddTag("IDGRUPO","IDGRUPO")
:Reindex()
END
::oDS3:Select(3)
::oDS3:OrdSetFocus("IDGRUPO")
::oDS3:SetRelation("IDGRUPO",::oDS1,.T.)
::oDS2:Select(2)
::oDS2:OrdSetFocus("BYID")
::oDS2:SetRelation("IDUSUARIO",::oDS3,.T.)
Bueno, de todas las maneras,, si no me explico te hice llegar a tu correo,
el ejemplo, seguridad.rar
GRacias
"Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el mensaje
news:4238091d$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Carlos,
>
> Supongamos dos browses, uno con clientes, y otro con facturas de dichos
> clientes. Parar hace que el segundo browse de facturas se actualice cuando
> modificacmos de cliente en el primer browse haremos lo siguiente:
>
> En el browse de clientes:
>
> METHOD BrwClientesChange( oSender, lBookMarkChanged )
>
> if lBookMarkChanged
> ::oDataSetFactura:SetScope( ::oDataSetCliente:Codigo )
> ::oBrwFactura:Refresh( .t. )
> endif
>
> RETURN nil
>
> Logicamente la tabla de facturas debé estar indexada por código de
cliente.
>
> Un saludo,
>
> "Carlos Cedeño Vera" <carlosijc@gmail.com> escribió en el mensaje
> news:[email=423733d3@ozsrv2.ozlan.local...]423733d3@ozsrv2.ozlan.local...[/email]
> > Bueno,, Resulta que tengo tres Tablas: GRUPOS, USUARIOS, USR2GRP.
> >
> > 1.- En un TdbEdit, hago las actualizaciones de los Grupos pero quiero
> > mostrar en un TDBBrowser, a los usuarios correspondiente a ese Grupo.
> >
> > 2.- Quiero que cuando me mueva por la Barra de Navegacion, se vaya
> > mostrando
> > en el Brow solo aquellos usuarios que pertenecen al Grupo en curso.
> >
> > La Relaciones que tengo es la siguiente:
> >
> > WITH OBJECT ::oDS1 := TDbfDataSet():New( Self )
> > :oDataSource := ::oCdxDS
> > :cProcess := "GENERAL"
> > :cName := "Grupos.dbf"
> > :lOpen := .T.
> > :Create()
> > :AddTag("BYIDGRP","IDGRUPO")
> > :AddTag("BYNAME","NOMBRE")
> > :OrdSetFocus("BYIDGRP")
> > :Reindex()
> > END
> > WITH OBJECT ::oDS2 := TDbfDataSet():New( Self )
> > :oDataSource := ::oCdxDS
> > :cProcess := "GENERAL"
> > :cName := "USUARIOS.Dbf"
> > :lOpen := .T.
> > :Create()
> > :AddTag("BYID","IDUSUARIO")
> > :AddTag("BYNAME","NOMBRE")
> > :OrdSetFocus("BYID")
> > :Reindex()
> > END
> >
> > WITH OBJECT ::oDS3 := TDbfDataSet():New( Self )
> > :oDataSource := ::oCdxDS
> > :cProcess := "GENERAL"
> > :cName := "Usr2Grp.dbf"
> > :lOpen := .T.
> > :Create()
> > :AddTag("BYUSER","IDUSUARIO+IDGRUPO")
> > :AddTag("BYGRUPO","IDGRUPO+IDUSUARIO")
> > :AddTag("IDUSUARIO","IDUSUARIO")
> > :AddTag("IDGRUPO","IDGRUPO")
> > :Reindex()
> > END
> >
> > ::oDS2:Select(2)
> > ::oDS2:OrdSetFocus("IDUSUARIO")
> > ::oDS2:SetRelation("IDUSUARIO",::oDS3,.T.)
> > ::oDS1:Select(1)
> > ::oDS1:OrdSetFocus("IDGRUPO")
> > ::oDS1:SetRelation("IDGRUPO",::oDS3,.T.)
> >
> > Diganme por favor que hago mal, que me falta, que debo agregar al
> > Navigator,,
> >
> > Gracias
> >
> >
> >
> >
>
>
Guest

Relaciones de Tablas

Mensaje por Guest »

Carlos,
Creo que lo mejor es que te haga yo un proyecto donde puedas ver como se
hace. Dame tiempo, espero tenerlo lo antes posible.
Un saludo,
Ignacio Ortiz de Zúñiga
http://www.xailer.com
> Mira Ignacio,, El caso es el siguiente,í‘
>
> Tengo un TdbEdit, con el Codigo de Grupo, otro con el Nombre de GRUPO,
> otros con las Notas, y un DBNavigator asociado al mismo DaTaSet, o
> sea a la Tabla GRUPOS, ahora bien, tengo un DBBrow, que muestras los
> usuarios,, pero quiero que solo se muestren los usuarios asignados a
> cada uno de los grupos, que cada vez que yo adelante con la flecha
> para adelante, para atras, para donde sea,, que el brow me muestre los
> usuarios que pertenecen a este Grupo.
>
> Las Tablas que tengo son:
>
> GRUPOS USUARIOS
> USR2GRP
> idgrupo C(4) idx, UNICO IdUsuario C(4) UNICO
> idUsuario
> Nombre C(25) Nombre C(25)
> idGrupo
> Nota M() Clave C(8)
> etc.
> .....
> Las relaciones ya te la envie, de todas las maneras te digo que
> WITH OBJECT ::oCdxDS := TCdxDataSource():New( Self )
> :cConnect := "C:SeguridadDatos"
> :lConnected := .T.
> END
> WITH OBJECT ::oDS1 := TDbfDataSet():New( Self )
> :oDataSource := ::oCdxDS
> :cProcess := "GENERAL"
> :cName := "Grupos.dbf"
> :lOpen := .T.
> :Create()
> :AddTag("BYIDGRP","IDGRUPO")
> :AddTag("BYNAME","NOMBRE")
> :OrdSetFocus("BYIDGRP")
> :Reindex()
> END
> WITH OBJECT ::oDS2 := TDbfDataSet():New( Self )
> :oDataSource := ::oCdxDS
> :cProcess := "GENERAL"
> :cName := "USUARIOS.Dbf"
> :lOpen := .T.
> :Create()
> :AddTag("BYID","IDUSUARIO")
> :AddTag("BYNAME","NOMBRE")
> :OrdSetFocus("BYID")
> :Reindex()
> END
> WITH OBJECT ::oDS3 := TDbfDataSet():New( Self )
> :oDataSource := ::oCdxDS
> :cProcess := "GENERAL"
> :cName := "Usr2Grp.dbf"
> :lOpen := .T.
> :Create()
> :AddTag("BYUSER","IDUSUARIO+IDGRUPO")
> :AddTag("BYGRUPO","IDGRUPO+IDUSUARIO")
> :AddTag("IDUSUARIO","IDUSUARIO")
> :AddTag("IDGRUPO","IDGRUPO")
> :Reindex()
> END
> ::oDS3:Select(3)
> ::oDS3:OrdSetFocus("IDGRUPO")
> ::oDS3:SetRelation("IDGRUPO",::oDS1,.T.)
> ::oDS2:Select(2)
> ::oDS2:OrdSetFocus("BYID")
> ::oDS2:SetRelation("IDUSUARIO",::oDS3,.T.)
> Bueno, de todas las maneras,, si no me explico te hice llegar a tu
> correo, el ejemplo, seguridad.rar
>
> GRacias
>
> "Ignacio Ortiz de Zúñiga" <InvalidAccount@ozs.com> escribió en el
> mensaje news:4238091d$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
>> Carlos,
>>
>> Supongamos dos browses, uno con clientes, y otro con facturas de
>> dichos clientes. Parar hace que el segundo browse de facturas se
>> actualice cuando modificacmos de cliente en el primer browse haremos
>> lo siguiente:
>>
>> En el browse de clientes:
>>
>> METHOD BrwClientesChange( oSender, lBookMarkChanged )
>>
>> if lBookMarkChanged
>> ::oDataSetFactura:SetScope( ::oDataSetCliente:Codigo )
>> ::oBrwFactura:Refresh( .t. )
>> endif
>> RETURN nil
>>
>> Logicamente la tabla de facturas debé estar indexada por código de
>>
> cliente.
>
>> Un saludo,
>>
>> "Carlos Cedeño Vera" <carlosijc@gmail.com> escribió en el mensaje
>> news:[email=423733d3@ozsrv2.ozlan.local...]423733d3@ozsrv2.ozlan.local...[/email]
>>
>>> Bueno,, Resulta que tengo tres Tablas: GRUPOS, USUARIOS, USR2GRP.
>>>
>>> 1.- En un TdbEdit, hago las actualizaciones de los Grupos pero
>>> quiero mostrar en un TDBBrowser, a los usuarios correspondiente a
>>> ese Grupo.
>>>
>>> 2.- Quiero que cuando me mueva por la Barra de Navegacion, se vaya
>>> mostrando
>>> en el Brow solo aquellos usuarios que pertenecen al Grupo en curso.
>>> La Relaciones que tengo es la siguiente:
>>>
>>> WITH OBJECT ::oDS1 := TDbfDataSet():New( Self )
>>> :oDataSource := ::oCdxDS
>>> :cProcess := "GENERAL"
>>> :cName := "Grupos.dbf"
>>> :lOpen := .T.
>>> :Create()
>>> :AddTag("BYIDGRP","IDGRUPO")
>>> :AddTag("BYNAME","NOMBRE")
>>> :OrdSetFocus("BYIDGRP")
>>> :Reindex()
>>> END
>>> WITH OBJECT ::oDS2 := TDbfDataSet():New( Self )
>>> :oDataSource := ::oCdxDS
>>> :cProcess := "GENERAL"
>>> :cName := "USUARIOS.Dbf"
>>> :lOpen := .T.
>>> :Create()
>>> :AddTag("BYID","IDUSUARIO")
>>> :AddTag("BYNAME","NOMBRE")
>>> :OrdSetFocus("BYID")
>>> :Reindex()
>>> END
>>> WITH OBJECT ::oDS3 := TDbfDataSet():New( Self )
>>> :oDataSource := ::oCdxDS
>>> :cProcess := "GENERAL"
>>> :cName := "Usr2Grp.dbf"
>>> :lOpen := .T.
>>> :Create()
>>> :AddTag("BYUSER","IDUSUARIO+IDGRUPO")
>>> :AddTag("BYGRUPO","IDGRUPO+IDUSUARIO")
>>> :AddTag("IDUSUARIO","IDUSUARIO")
>>> :AddTag("IDGRUPO","IDGRUPO")
>>> :Reindex()
>>> END
>>> ::oDS2:Select(2)
>>> ::oDS2:OrdSetFocus("IDUSUARIO")
>>> ::oDS2:SetRelation("IDUSUARIO",::oDS3,.T.)
>>> ::oDS1:Select(1)
>>> ::oDS1:OrdSetFocus("IDGRUPO")
>>> ::oDS1:SetRelation("IDGRUPO",::oDS3,.T.)
>>> Diganme por favor que hago mal, que me falta, que debo agregar al
>>> Navigator,,
>>>
>>> Gracias
>>>
Responder