Estoy tratando de recorrer una serie de tablas para actualizar Mi tabla principal con información, sin embargo por una razón desconocida esto no funcionará. Ver código adjunto a continuación:
Muestra de mi lista que almacena mis tablas:
DTs = {Tabla de datos ("Hoja1"), Tabla de datos ("Hoja2") ……}
// abrir archivos Excel en una ruta especificada, funciona bien
ruta = "$ DOCUMENTS \ 580501 \";
ftype = ".xlsx";
// Haga una lista de archivos, elimine todos los archivos que no coincidan, funciona bien
flist = Archivos en el Directorio ( camino ) ;
por ( i = N elementos ( flist ) , i> 0 , yo--,
Si ( !Termina con ( flist El yo ] ftype ) ,
Eliminar de ( flist, yo )
)
) ;
d = N Artículos ( flist ) ;
// importar todos los archivos Excel desde el directorio 580501 y almacenarlos en una lista, funciona bien
Mientras ( d> 0 ,
i = 1 ;
dtt = Abrir (….)
// esta parte de mi código funciona bien
DTs = Lista () ;
s = 1 ;
por ( i = 1 , i <= N Tabla () , i ++,
Si ( Tabla de datos ( yo ) ! = "ISAC_STAT",
Insertar en ( DTs, tabla de datos ( s ) ) ;
s = s + 1 ;
)
) ;
// Análisis a través de todas las tablas abiertas en DTs
por ( i = 1 , i <= N Tabla () , i ++,
dtt = Tabla de datos ( DTs ( yo ) ) ;
// Necesito encontrar una tabla específica "hoja1" y actualizarla antes de poder actualizar con otras tablas
// sheet1 contiene la información necesaria para que coincida con otras tablas, así que tiene que actualizar mi principal
// mesa primero
por ( k = i, k <= N Tabla () , k ++,
//YO Piensa esto si la declaración es la fuente de mi problema, pero no sé por qué.
// He intentado varias versiones de esta declaración If:
// Contiene (Char (DTs [k]), Char ("" Tabla de datos ("hoja1") ") == 1
// Contiene (DTs [k], "sheet1") == 1
// Contiene (DTs [k], "Tabla de datos (" Hoja1 ")" == 1
// pero nada funciona.
Si ( Contiene ( Carbonizarse ( DTs El k ] ) , "hoja 1" ) == 1 ,
Tabla de datos ( "Mi mesa" ) << Actualizar (
Con ( Tabla de datos ( "hoja 1" ) ) ,
Coincidir columnas ( : Lote =: Lote ) ,
Añadir columnas de la tabla de actualización ( Ninguna )
) ;
) ;
) ;
// Creo que esta afirmación If es la fuente de mi problema, pero no sé por qué.
Si (
DTs El yo ] ! = "sheet1" & DTs El yo ] ! = "sheet2" & DTs El yo ] ! = "sheet3" & DTs El yo ] ! = "sheet4",
Tratar (
Tabla de datos ( " Mi mesa " ) << Actualizar (
Con ( DTs El yo ] ) ,
Coincidir columnas ( : Lote =: Lote | : Lote =: Lote de prueba ) ,
Añadir columnas de la tabla de actualización ( Ninguna )
);
);
// Utilizo el mismo comando de actualización que el de arriba, pero coincidiendo con diferentes columnas
...
);
Aquí hay un simple fragmento de código que funciona:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// dt = DataTable("Big Class");
If (Contains(Char(dt),"Big Class"),
show("found")
,
show("not found")
)
Como Wendy señala que la función Contains distingue entre mayúsculas y minúsculas, entonces generalmente forzaré el caso, por ejemplo
If (Contains(LowerCase(Char(dt)),"big class"),
Hola a todos y gracias por sus respuestas rápidas,
Como dijiste, la lista de DT almacena cadenas con valores como Tabla de datos ( "Hoja 1" ) por lo tanto, tuve éxito en la implementación del bucle anidado donde estoy buscando dos tablas específicas.
Sin embargo, en el último caso, cuando no quiero que se utilicen ciertos tipos de tablas, y tal vez este sea el error, estoy usando las funciones de contenido para hacer coincidir cualquier valor de cadena en los DT con una determinada palabra clave.
por ejemplo:
si contiene (DTs [i], "soda") o contiene (DTs [i], "agua") o contiene (DTs [i], "food_1"),
hacer nada
,
de lo contrario actualizar la tabla principal.
Tenga en cuenta que hay casos en los que tenemos la tabla food_1 y food_2, aquí debemos ignorar food_1 pero usar food_2.
¿Estoy usando la función de contenido incorrecto?