Ver Mensaje Individual
  #36 (permalink)  
Antiguo 10/06/2008, 10:24
Avatar de Txoco
Txoco
 
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 16 años
Puntos: 7
Respuesta: cambiar el orden de coger datos en un for each, del ultimo al primero

Hola!

Realmente quería haberte comentado mejor el código que te he escrito, pero tenía que marcharme y no sabía si podría conectarme esta tarde. Te lo explico ahora:

El símbolo "%" de por sí no hace nada, el truco está en la función Replace, en la que le estás diciendo que lo cambie por otra cosa, en este caso, el contenido de la propiedad Text del control indicado en el bucle. Puedes poner interrogaciones, o literales más largos en lugar de "%" si lo prefieres, pero es importante que tanto en Replace como en la máscara utilices la misma cadena.

Los parámetros que contiene Replace son, por este orden:
- Cadena en la que se buscan subcadenas para reemplazar (SQL)
- Cadena que se quiere reemplazar ("%")
- Texto que se va a poner en lugar de la cadena anterior (propiedad Text)
- Desde qué caracter se empieza a buscar en SQL (desde el primero)
- Cuantas veces se va a sustituir (sólo 1; es decir, cambia la primera ocurrencia de "%", pero deja las demás. Si pones -1, las cambiaría todas, pero es no es lo que nos interesa aquí, ya que queremos que en cada posición se ponga el valor de un control distinto).
- Forma de comparación: vbTextCompare hace que no se tengan en cuenta las mayúsculas, aunque en este caso no haría falta, ya que "%" es siempre "%"

Además, Replace te devuelve la cadena con el reemplazo, por eso la volvemos a asignar a "SQL".

La "máscara" que te he puesto en el ejempplo tiene muchas comillas porque si quieres poner comillas dobles dentro de una cadena, tienes que ponerlas dos veces. La comilla simple también vale para delimitar cadenas-dentro-de-cadenas tal y como la pones tú, pero en mi caso es un hábito, las pongo así sin pensarlo, espero que no te confunda

La claúsula COLUMNS te va a fallar seguro porque como dice Avellaneda, no hay que ponerla.