Página 1 de 1

Relaciones de Tablas

Publicado: Mar Mar 15, 2005 8:13 pm
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

Relaciones de Tablas

Publicado: Mié Mar 16, 2005 11:23 am
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
>
>
>
>

Relaciones de Tablas

Publicado: Mié Mar 16, 2005 5:45 pm
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
> >
> >
> >
> >
>
>

Relaciones de Tablas

Publicado: Mié Mar 16, 2005 6:32 pm
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
>>>