Consulta paa hacer un select

58 views
Skip to first unread message

Elides Paredes

unread,
Dec 5, 2016, 2:05:42 PM12/5/16
to Comunidad de Visual Foxpro en Español
¡Estimados amigos.
Saludos a todos.

Recurro nuevamente a ustedes, solicitado ayuda.

Tengo una tabla 'Sub_Grupos' de la cual quiero presentar únicamente los registros en un cursor, que cumplan la condicion,

Sub_Grupos.Cod_Grupo = Grupos.Cod_Grupo 

En mas cristiano, los subGrupos que pertenecen a un grupo específico. 

y para hacerlo hice la siguiente instrucción (Que evidentemente tiene un error) Pretendo crear es un campo en ese cursor que contenga el número de registro de la tabla Sub_Grupos.

Porque, -a partir del cursor que contiene la tabla filtrada-,  al seleccionar un registro del cursor, quiero ubicar el registro en la tabla Sub_Grupos para editar o eliminar el registro seleccionado en esa tabla. (no puedo hacerla directo porque los nombres de los subgrupos se repiten para varios grupos, y solo quiero modificar el subgrupo seleccionado, que pertenece a un grupo.

Por eso necesito saber cual es el número de registro de la tabla sub_Grupo. (desde el cursor).

Hice lo siguiente, pero no funciona así; pero es la idea, La pregunta es como puedo hacerlo con una instrucción select directa. ¿Se puede?

* Crea un cursor con los Sub-Grupos pertenecientes 
* al Grupo seleccionado
* ----------------------

SELECT Sub_Grupos.Cod_Subgru,;
       Sub_Grupos.Des_Subgru,;
       Sub_Grupos.Des_Grupo,;
       Sub_Grupos.Cod_Grupo,;
        Sub_Grupos.foto,;
        RECNO('Sub_Grupos' as NumReg);
 FROM ; 
     C:\CONFIGURARGV\TABLAS\Sub_Grupos.DBF;
 WHERE ;
  Sub_Grupos.Cod_Grupo = Grupos.Cod_Grupo;
  INTO CURSOR Elides readwrite 

Claro si hay otra forma mas eficiente.. escucho ideas.. De antemano gracias por ser siempre excelentes colaboradores.

Saludos..

Elides Paredes
Barquisimeto Venezuela.

Saúl Piña

unread,
Dec 5, 2016, 4:40:12 PM12/5/16
to Comunidad de Visual Foxpro en Español
Buenas tardes Elides,

Lo que haría yo es utilizar ids (aunque no sean incrementables) para relacionar ambas tablas y ya de ese modo crear una consulta SQL incluyendo Inner, left o rigth Join segun sea el caso.

Buena suerte.

Elides Paredes

unread,
Dec 5, 2016, 5:52:36 PM12/5/16
to Comunidad de Visual Foxpro en Español


El lunes, 5 de diciembre de 2016, 14:35:42 (UTC-4:30), Elides Paredes escribió:
¡Estimados amigos.
Saludos a todos.
 
Gracias por responder amigo Saúl. 

Para  buscar un registro puedo hacerlo como en todos los casos con los que normalmente trabajo ese tema, con locate, en mi caso buscar el código de subgrupo y el código del grupo. (a partir del Cursor)-
Entonces procedo a modificar o eliminar el registro. Pero debe haber una forma mas sencilla de hacerlo con SQL, No he conseguido eso desde hace años. La instrucción recorre las tablas pero, ..  ¿no se puede ver el número de registro de la tabla durante el recorrido?

El problema es que los registros en la tabla se repiten. Por ejemplo  lo que busco son piezas en subgrupos y grupos.
/trabajo en un sistema para talleres.
El grupo del frente tiene un parachoques delantero, el grupo lateral izquierdo y  derecho también tienen la misma pieza un parachoques delantero.

Es decir el parachoques delantero está en 3 grupos, pero el código del subGrupo si es único. Es decir el parachoques delantero del frente es la misma pieza con otro código para los diferentes grupos.

Espero haberme sabido explicar. Por eso una solución mas simple es buscar la pieza en el subgrupo contenida en el grupo deseado, con el código que le pertenece al subgrupo en éste caso. (Y debo hacer eso con insumos y servicios.Estoy haciendo estructuras jerárquicas como la de los controles treeview)

De nuevo gracias..

Hugo C.

unread,
Dec 5, 2016, 6:17:48 PM12/5/16
to Comunidad de Visual Foxpro en Español
Intenta cambiando esto
     RECNO('Sub_Grupos' as NumReg);
por esto
   RECNO() as NumReg;

Saludos.

Elides Paredes

unread,
Dec 5, 2016, 6:48:29 PM12/5/16
to Comunidad de Visual Foxpro en Español
FUNCIONO... !  GRACIAS AMIGO HUGO...
Saludos..
Elides Paredes
No entiendo porque no funcionaba de la otra manera, pero lo hizo.. Mil gracias.

Hitiel Hernández

unread,
Dec 5, 2016, 6:50:53 PM12/5/16
to publice...@googlegroups.com
Elides,
podrías compartir; por favor.
Creo que yo también tengo ese problema
--
Sabiduría ante todo; adquiere sabiduría

Elides Paredes

unread,
Dec 5, 2016, 7:39:06 PM12/5/16
to Comunidad de Visual Foxpro en Español

Amigo Hitiel
Como dije antes, es un problema que he tenido desde hace años.
 
La idea es crear un cursor con los registros filtrados. Tengo 2 tablas, (en realidad son 3 pero para los efectos funciona con 2 de ejemplo)
 
Una tabla 'Sub_Grupos' de la cual quiero presentar únicamente los registros en un cursor, que cumplan la condicion,

Sub_Grupos.Cod_Grupo = Grupos.Cod_Grupo 

En mas cristiano, en el cursor se muestran solo los subGrupos que pertenecen a un grupo específico. 

Ejemplo quiero ver solo los subgrupos del grupo frente de un vehículo (parachoques, capot, parrilla o careta (no se como la llamas) ese cursor lo pongo en un cuadro de lista y luego al seleccionar una pieza del cuadro de lista, (filtrado) puedo acceder de nuevo a la tabla subgrupos y al registro en concreto. 

Antes lo hacía creando filtros, pero eso me daba algunos problemas al manipular la tabla, abrir el filtro quitarlo, etc. o también buscando de nuevo los campos con locate. if found() etc.

Si creo un cursor con el select, en el mismo cursor ya se la posición en la tabla fuente y puedo editarlo de la manera que deseo.

El problema era que cada vez que abría una tabla (Entre muchas), para saber por ejemplo el numero de registro usaba la función recno('mitabla'). Ahora me doy cuenta que select no acepta eso, y funcionó bien así como me lo corrigió el amigo Hugo.


* Crea un cursor con los Sub-Grupos pertenecientes 
* al Grupo seleccionado
* ----------------------

SELECT Sub_Grupos.Cod_Subgru,;
       Sub_Grupos.Des_Subgru,;
       Sub_Grupos.Des_Grupo,;
       Sub_Grupos.Cod_Grupo,;
        Sub_Grupos.foto,;
        RECNO() as NumReg;
 FROM ; 
     C:\CONFIGURARGV\TABLAS\Sub_Grupos.DBF;
 WHERE ;
  Sub_Grupos.Cod_Grupo = Grupos.Cod_Grupo;
  INTO CURSOR Elides readwrite 

Ahora al seleccionar un registro del cuadro de lista, - -lo muestro en un cuadro de texto, lo edito y luego abro la tabla y voy al registro con go al num_Reg y listo. Mas fácil.

Saludos..
Espero ayude a muchos...
 
Elides Paredes
Barquisimeto Venezuela.
Reply all
Reply to author
Forward
0 new messages