Consulta Grid

Hola.
Tengo inconveniente con una doble consulta. Parto de una consulta base o inicial y dependiendo del resultado hago una nueva a partir del dato arrojado. Ésta me funciona pero solo para un registro, si la consulta base arroja más registros la segunda no me muestra datos correctos, lo que hace es repetirme el dato de la primera.
Me hace esto: Bebería mostrarme esto:
consulta1 - consulta2 consulta1 - consulta2
       A 5 A 5
       B 5 B 8
       C 5 C 16
Estoy haciendo lo siguiente:
This.Parent.grid1.recordsource=" "
This.Parent.grid1.Visible=.F.
Select campo1, campo2 ;
From TABLA1 Where TABLA1.campo3 = This.Parent.combo1.value ;
Into Cursor cTemp
**************************************************
SELECT TABLA2.campo1, TABLA3.campo1 ;
FROM (TABLA2 INNER JOIN TABLA3;
           ON TABLA2.campo2 = TABLA3.campo2) ;
WHERE TABLA3.campo1 = This.Parent.combo1.value ;
            .AND. (TABLA2.campo5 = cTemp.campo1 ;
            .OR. TABLA2.campo6 = cTemp.campo1);
INTO CURSOR TMP
mTotal= Reccount("TMP")
***************************************************
SELECT campo1 , campo2, mTotal ;
FROM cTemp INTO CURSOR tDatos
This.Parent.grid1.recordsource="tDatos"
This.Parent.grid1.Visible=.T.
This.Parent.refresh
No encuentro el error.
Gracias de antemano por tu ayuda.

1 respuesta

Respuesta
1
Me parece que el error esta en la segunda consulta, tal vez no cumpla las condiciones requeridas, por ejemplo el inner join no encuentra la información en la tabla3 o son campos no iguales, revisa las características del campo (que tengan la misma longitud y tipo de campo)
Revisa el and y el OR
SELECT TABLA2.campo1, TABLA3.campo1 ; 
FROM (TABLA2 INNER JOIN TABLA3; 
           ON TABLA2.campo2 = TABLA3.campo2) ; 
WHERE (TABLA3.campo1 = This.Parent.combo1.value ; 
            .AND. (TABLA2.campo5 = cTemp.campo1)

            .OR. TABLA2.campo6 = cTemp.campo1)); 
INTO CURSOR TMP
SELECT TABLA2.campo1, TABLA3.campo1 ; 
FROM (TABLA2 INNER JOIN TABLA3; 
           ON TABLA2.campo2 = TABLA3.campo2) ; 
WHERE (TABLA3.campo1 = This.Parent.combo1.value ; 
            .AND. (TABLA2.campo5 = cTemp.campo1) .OR.; 
(TABLA3.campo1 = This.Parent.combo1.value;
           .AND. TABLA2.campo6 = cTemp.campo1)); 
INTO CURSOR TMP
OK, Muchas Gracias por tu pronta repuesta, Voy a aplicar tus correcciones.
Tengo dos preguntas más:
1. Como agrego los datos de un cursor a una tabla. Lo que sucede es que adicional a los campos del cursor necesito almacenar en la tabla los datos de unos combos que se encuentran en el formulario. Lo que hago es lo siguiente:
Select campo1, campo2 ;
From TABLA1 Where TABLA1.campo3 = This.Parent.combo1.value ;
Into CURSOR cTemp
Select TABLADESTINO
Insert Into TABLADESTINO (campo1, campo2, campo3, campo4) ;
VALUES (This.Parent.combo1.value, This.Parent.combo2.value, cTemp.campo1, cTemp.campo2)
Pero esto solo me agrega a la tabla el primer registro. ¿Cómo hago el recorrido del cursor para que me agregue todos los registros del cursor sin importar cuantos sean?
2. Si la consulta anterior esta asociada a un grid, ¿cómo hago el recorrido para almacenar los datos de la consulta mostrada en el grid en la tabla destino? ¿Los valores de los combos también deben agregarse para cada uno de los registros?
De antemano te agradezco mucho por toda la ayuda que me vienes prestado.
1. Para agregrar los datos de un cursor a una tabla usa APPEND FROM DBF(nombrecursor)
2, utiliza la misma insruccion
En ambos casos debes revisar los nombres de campos de tus archivos, ya que append from ingresa los nombres similares en ambas tablas, no interesa si están en un grid o en un combox, ya que simplemente los mencionas y los adicionas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas