Re: Pasar Matriz a una Tabla

48 views
Skip to first unread message
Message has been deleted

Fernando D. Bozzo

unread,
Jul 24, 2014, 1:18:09 PM7/24/14
to publice...@googlegroups.com
Integral, si es un solo registro, ¿no sería más fácil un Insert-SQL?

Insert into <tutabla> ;
   
(campo1, campo2, campo3 ... ) ;
   VALUES
;
   
(matTemp(1), matTemp(2), matTemp(3) ... )




Saludos.-


El jueves, 24 de julio de 2014 02:32:59 UTC+2, integral escribió:
Estimados Amigos :
 
Nuevamente recurriendo a ustedes para que me orienten a la solucion correcta...
 
Tengo una tabla principal con 100 campos y he creado 6 campos adicional para grabar los 6 items de la Matriz bidimensional que he creado desde otra tabla secundaria.
 
Como puedo hacer para grabar los 6 campos de la matriz (matTemp) a los 6 nuevos campos de la Tabla principal
 
Aqui lo avanzado :
 
LOCAL ARRAY matTemp(3,2)
*** Carga el Grid con los datos del Cursor
SELECT marca, doc_name FROM Documen WHERE NOT EMPTY(doc_name) INTO CURSOR Cur_Docum READWRITE
 
*** Carga a una Matriz los 6 registros que contien el Cursor enlazado al GRID****
SELECT marca, doc_name FROM Cur_Docum WHERE NOT EMPTY(doc_name) INTO ARRAY matTemp
Muestra la Matriz Creada
DISPLAY MEMORY LIKE matTemp 
 
Añade a la tabla principal la Matriz pero en forma Vertical...(AQUI CAMBIAR CODIGO....)
APPEND FROM ARRAY matTemp && aNewRec 
BROWSE
 
La Idea es grabar los 6 campos de la matriz en un registro especifico de manera Horizontal y no como lo esta haciendo en forma vertical ...
 
Agradezco sus comentarios y sugerencias...
 
atte.
 
INTEGRAL

integral

unread,
Jul 24, 2014, 4:34:10 PM7/24/14
to publice...@googlegroups.com
Amigo Fernando :
 
A continuacion muestro el codigo de lo avanzado, me esta faltando obtener el contenido de 2 campos existentes dentro de la Matriz, estoy utilizando el comando AELEMENT pero me devuelve la ubicacion de los campos requeridos ( 3 y 5 ) correspondes a 2 campos de tipo logico... 
 
*****************************************************************************************************************
* CREA UNA MATRIZ BIDIMENSIONAL CON LOS DATOS DEL CURSOR ENLAZADO AL GRID *
*****************************************************************************************************************
SELECT marca, doc_name FROM Cur_Docum WHERE NOT EMPTY(doc_name) INTO ARRAY matrizTemp
*DISPLAY MEMORY LIKE matrizTemp 
  
* Crea las 04(Cuatro) nuevas Columnas al nuevo Cursor *!*     
ALTER TABLE Cur_TempBak ADD COLUMN "g_check2"   n(01)    && L(01)
ALTER TABLE Cur_TempBak ADD COLUMN "g_obser2"   C(45)
ALTER TABLE Cur_TempBak ADD COLUMN "g_check3"   n(01)    && L(01)
ALTER TABLE Cur_TempBak ADD COLUMN "g_obser3"   C(45)  
 
SELECT Cur_TempBak
SCAN
  REPLACE g_check2   WITH AELEMENT(matrizTemp, 2, 1)                        && 3
  REPLACE g_obser2   WITH "Documents issued more than 2 times"            && 4
  REPLACE g_check3   WITH AELEMENT(matrizTemp, 3, 1)                        && 5
  REPLACE g_obser3   WITH "Documents issued without signature and seal" && 6
ENDSCAN
 
Agradezco sus comentarios y sugerencias...
 
Saludos
 
INTEGRAL

Fernando D. Bozzo

unread,
Jul 24, 2014, 5:10:46 PM7/24/14
to publice...@googlegroups.com
No sé por qué borraste la consulta original ¿?

Respecto de esto:


SELECT Cur_TempBak
SCAN
  REPLACE g_check2   WITH AELEMENT(matrizTemp, 2, 1)                        && 3
  REPLACE g_obser2   WITH "Documents issued more than 2 times"            && 4
  REPLACE g_check3   WITH AELEMENT(matrizTemp, 3, 1)                        && 5
  REPLACE g_obser3   WITH "Documents issued without signature and seal" && 6
ENDSCAN


Por ahí te conviene hacer esto:

SELECT Cur_TempBak
nCnt = 0
SCAN
  REPLACE g_check1   WITH matrizTemp(nCtn+1, 1)                         && 1
  REPLACE g_obser1   WITH "(lo que sea)"                                && 2
  REPLACE g_check2   WITH matrizTemp(
nCtn+2, 1)                         && 3

  REPLACE g_obser2   WITH "Documents issued more than 2 times"          && 4
  REPLACE g_check3   WITH matrizTemp(nCtn+3, 1)                         && 5
  REPLACE g_obser3   WITH "Documents issued without signature and seal" && 6
  nCnt = nCtn + 3
ENDSCAN

Pero cuidado, porque si tu cursor tiene más registros que los que levantás en el array, te va a fallar.


Saludos.-
Reply all
Reply to author
Forward
0 new messages