Crear relacion entre 2 cursores

137 views
Skip to first unread message

integral

unread,
Apr 27, 2025, 12:32:45 AM4/27/25
to Comunidad de Visual Foxpro en Español

Que tal Amigos

Muy Buenas Noches

Deseo crear una relación entre dos cursores que obtengo desde una Base de Datos en Sql Server 2019

Para efecto de pruebas pase los registros a dos tablas dbf

Aquí les muestro 2 códigos de ejemplos para crear la relacion entre las dos tablas

Ejemplo.- 1 

CLOSE DATABASES
SELECT 0
USE Prestamos
INDEX ON Cod_Pres + Id_Pres TAG cPrestados

SELECT 0
USE Detalle
INDEX ON Cod_Pres + Id_Pres TAG cDeta1les

SELECT Prestamos
SET ORDER TO cPrestados

SELECT Detalle
SET RELATION TO Cod_Pres + Id_Pres INTO Prestamos                      
BROWSE FIELDS Cod_Pres, Id_Pres

SELECT Prestamos
BROWSE FIELDS Cod_Pres, Id_Pres

Ejemplo.-2

CLOSE DATABASES
USE Prestamos
INDEX ON Cod_Pres + Id_Pres TAG cPrestados
CLOSE DATABASES

SELECT 0
USE Detalle

SELECT 0
USE Prestamos ORDER 1

SELECT Detalle
SET RELATION TO Cod_Pres + Id_Pres INTO Prestamos                      
BROWSE FIELDS Cod_Pres, Id_Pres

SELECT Prestamos
BROWSE FIELDS Cod_Pres, Id_Pres

Ambos códigos tienen pequeñas diferencias.

Cual es el código que me sugieren utilizar...

PD : En ambos códigos primero visualiza la tabla secundaria (Detalles) y luego la tabla principal (prestamos).

Mi duda es que tabla se debe relacionar

Agradezco sus comentarios y sugerencias

Saludos,

Integral

Esteban Herrero

unread,
Apr 27, 2025, 11:13:03 AM4/27/25
to publice...@googlegroups.com

Hola... Si ambas tablas están dentro del Sql Server, no tiene sentido hacer la relación luego de la consulta al motor, directamente armá un sql q haga la relación y el motor responda.

Cuando uno trabaja con motores Sql no se usa mas hacer relaciones en VFP, no tiene sentido alguno, p q tenes las vistas y las miles de utilidades q tiene el motor p darte todo servido y a velocidades extraordinarias.

Saludos

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver este debate, visita https://groups.google.com/d/msgid/publicesvfoxpro/c81d85cb-1e92-43e4-8cb2-e7f0558a3311n%40googlegroups.com.

Edwin Duran

unread,
Apr 28, 2025, 9:39:47 AM4/28/25
to Comunidad de Visual Foxpro en Español
Saludos, te recomiendo que hagas las pruebas en el Manager de SQL y Utilizas los join

Edwin Duran

unread,
Apr 28, 2025, 9:45:19 AM4/28/25
to Comunidad de Visual Foxpro en Español

Gerardo Cagnola

unread,
Apr 28, 2025, 10:10:24 AM4/28/25
to publice...@googlegroups.com
por favor, estudiá sql !!!

--
Blog de la Comunidad Visual FoxPro en Español http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

integral

unread,
Apr 28, 2025, 12:09:05 PM4/28/25
to Comunidad de Visual Foxpro en Español
Amigos

Buenos Días

Aquí el código que estoy utilizando.

SELECT Cursor_Wiew_Prestamos

SET RELATION TO Cod_Pres + Id_Pres INTO Cur_Genera_Cuotas                       
SET SKIP TO Cur_Genera_Cuotas  

Pero luego de grabar un nuevo registro se pierde la relación con los registros del Detalle(secundaria), mas no con los registros de la tabla principal ( Prestamos), que están contenidos en un Grid.

El código que establece la relación esta definida en el LOAD

Agradezco sus comentarios y sugerencias.

Atte.,

Integral

RS “Ricardo”

unread,
Apr 28, 2025, 3:04:26 PM4/28/25
to Comunidad de Visual Foxpro en Español
como te indica Esteban, trae desde sqlserver las información ya anidada mediante Joins y en fox solo utiliza los datos extaidos
algo asi como
text to eje_selec textmerge pretext 7 noshow
  Select tabla1.campo_relacion, tabla1.campo2, tabl13campor3,... tabla1.campon, tabla2.campo1,tabla2.campo2...tabla2.campon  from  tabla1 
  inner/left join tabla2 on tabla1.campo_relacion = tabla2.campo_relacion   &&inner trse solo las coincodencias left  traera todo lo de tabla 1 y si no hay                                                                                                                                                      &&   coincidencias  llenara con null 
  where condicion
endtext
aca ejecutas la consulta (sqlexec())

o si usas foxydb como yo 
if odb.query(eje_select, 'tabla1','tabla1')
  idb.cursoredit('tabla1')
endif
Reply all
Reply to author
Forward
0 new messages