Copy to array y Append from array

1,106 views
Skip to first unread message

Francisco Cepeda

unread,
Feb 13, 2015, 12:50:28 PM2/13/15
to publice...@googlegroups.com
Espero puedan ayudarme el detalle es este ultimamente estuve trabajando con datos en tablas por lo que me dedique a buscar comandos para duplicar datos en las tablas "pero" el detalle es que me duplican algunos campos que debo de cambiar de valor o informacion quisiera saber bn si puedo cambiar estos campos al tiempo k se ejecuta el comando. este es el ejemplo:

SELECT COTIZA    <-----------selecciono la tabla
COPY TO ARRAY x FOR SMARCA=ALLTRIM(thisform.container6.combo1.Value)  <----copio en un array "x" siempre y cuando la condicion siguiente
APPEND FROM ARRAY x  <--------------------- pego el array en la misma tabla

El detalle es que mi array queda asi

donde es x[1,2] y x[2,2] se encuentra una a dicha cambiarla por una "C" o x valor el detalle es que no controlo el tamaño ya k copio y pego segun lo que necesito sean 3, 5, 20 u x registros y los pega tal cual todo iva bien asta que me tope con ese percanse de ese campo que necesito cambiar bien lo que trate de hacer fue:

SELECT COTIZA
COPY TO ARRAY x FOR SMARCA=ALLTRIM(thisform.container6.combo1.Value)
x[2]="C"
APPEND FROM ARRAY x

supuse que me cambiaria todas las A copiadas por C pero solo me cambio 1 la primera como muestro en la imagen


espero alguien pueda decirme que puede faltar o como afectar todos los arrays ya intete dando cordenadas al array si funciona pero como dije antes no defino con numeros cuantos copio o cuantos selecciona ya que es una instruccion condicional. Quisiera que fuera facil como x[*,2] y que afecte a todos los que exista pero no e podido lol jajajajajajaja

Fernando D. Bozzo

unread,
Feb 13, 2015, 1:26:43 PM2/13/15
to publice...@googlegroups.com
Hola Francisco:

Una de las ventajas de leer los mensajes de los demás en el foro, es que a veces se pueden aprender o recordar cosas que pueden venir bien en un momento dado.

Por ejemplo, hace unos días alguién preguntó sobre "cómo insertar registros de una tabla a otra", donde Ricardo Pina respondió con este SQL:

INSERT INTO tabla2 (campo1,campo2,...) ;
   SELECT campo1,campo2,... FROM tabla1 WHERE conticion = .T.


Vos podrías usar este SQL (adaptado, claro) y en el SELECT reemplazar el valor que querés cambiar.
Si te ponés a hacer pruebas en la ventana de comandos de Fox, en un rato seguro que lo sacás.


Saludos.-

Fernando D. Bozzo

unread,
Feb 13, 2015, 1:28:25 PM2/13/15
to publice...@googlegroups.com
Como aclaración, la tabla del INSERT sería la misma del SELECT, y todo se haría por medio de cursores internos, sin arrays y sin reemplazos extra.

Francisco Cepeda

unread,
Feb 13, 2015, 1:42:02 PM2/13/15
to publice...@googlegroups.com
Gracias Fernando D. Bozzo

Claro que vi esas posibilidades de SQL adaptado funciono pero encontre estos dos comandos del mismo visual que podrian evitar hacer cursores y seleccionar cada campo copiado a una variable x dependiendo del tamaño para no hacer un cursor de copiado y luego la inserccion de informacion con append blank. Esto no quiere decir que no pueda adaptar el append from array puedo omitir informacion y rellenarla con un cursor que al dado caso es el mismo :/ son demaciadas lineas para copiar y estas dos funciones me evitaban tanto codigo y hacen exactamente lo mismo.

E estado en la web y he encontrado muy poca informacion de esto creo que no muchos trabajan con esto ya que usan un SQL o base dedatos distinta a Fox o siguen en SQL solo pienso en posibilidades de no trabajar con cursores mas que cuando desida guardar informacion o mostrarla y no para copiar o pensar en duplicidad de todas maneras gracias por el dato Fernando un saludo.

Fernando D. Bozzo

unread,
Feb 13, 2015, 3:12:55 PM2/13/15
to publice...@googlegroups.com
Francisco, con ese SQL que mezcla un INSERT con un SELECT podés hacer todo con un solo comando, en cambio, pasando los datos a un array, te implica luego hacer un tratamiento de ese array reemplazando la columna que te interesa en un FOR..ENDFOR y luego volver a insertar ese array.

En FoxPro, en general los cursores son más rápidos que los arrays.


Saludos.-

Reply all
Reply to author
Forward
0 new messages