Re: ¿Esta tabla de datos()?Suena un poco complicado, pero
- Creo que un script en una tabla de datos envía implícitamente mensajes a la tabla de datos que contiene el script. Por lo tanto, no es necesario hacer referencia explícita a la tabla de datos utilizando "tabla de datos actual".
- Si ejecuta un script dentro de una tabla de datos desde fuera de la tabla de datos, primero debe obtener el identificador de la tabla de datos, de modo que pueda enviar Run Script ("nombre del script") a la tabla de datos. La tabla de datos puede ser la actual o no, lo cual no importa.
Entonces, supongo que la respuesta es que no hay necesidad de usar nada, en un script, para hacer referencia a la tabla de datos que incluye el script. Elimine "dt = tabla de datos actual ()" de su secuencia de comandos y vea cómo funciona. Supongo que hay otras razones por las que necesitas esa línea, pero tal vez haya una solución diferente para abordar ese problema.
Re: ¿Esta tabla de datos()?
@peng_liu escribió:- Creo que un script en una tabla de datos envía implícitamente mensajes a la tabla de datos que contiene el script.
Gracias. Interesante, bueno hasta ahora.
Para ser honesto, es un poco extraño eliminar todos esos
dt <<
Me dieron cierta tranquilidad de que el guión estaba haciendo exactamente lo que se suponía que debía hacer. Creo que funciona sin...
Incluso
Nrows(<STRIKE>dt</STRIKE>);
parece funcionar.
Re: ¿Esta tabla de datos()?
dt = tabla de datos actual() en el script de la tabla:
Esto funciona bien si ejecuto el script desde la propia tabla. Para tener la oportunidad de hacer clic en el botón de reproducción, hay que seleccionar la tabla de datos. Por tanto, será el actual. bien.
Pero cuando activo el Table Script a través de JSL, otra tabla de datos podría ser la actual.
¿Ha verificado que este sea el caso si lo ejecuta a través de JSL? Si no recuerdo mal, he estado ejecutando algunos de mis scripts de tablas más complicados sin problemas a través de JSL, sin necesidad de preocuparme por corregir la tabla de datos actual (aunque puede que recuerde mal).
Ver más... Re: ¿Esta tabla de datos()?Parece convincente:)
Entonces, cuando se ejecuta un script de tabla, la tabla de datos actual se asigna automáticamente a la tabla con el script.
Entonces, esta es la razón por la cual un script en una tabla de datos [...] envía mensajes a la tabla de datos que contiene el script.
automáticamente: sí
inmediatamente: no
vea abajo:
¿Esta tabla de datos()?Para columnas y objetos como informes, existe un comando
obj << Get Data Table();
para obtener una referencia a la tabla de datos respectiva.
¿Existe una función similar para los scripts de tabla? algo como
This Data Table()
algunas implementaciones perezosas que podrían generar problemas:
- haga referencia a la tabla de datos por su nombre.
Tabla de datos ("mi tabla") << nueva columna ("prueba")
esto funciona hasta que hay un conflicto con otra tabla de datos con el mismo nombre y se agrega "2" automáticamente al nombre de la tabla. - use mydt = tabla de datos actual() para generar una referencia a la tabla de datos
Esto funciona bien si ejecuto el script desde la propia tabla. Para tener la oportunidad de hacer clic en el botón de reproducción, hay que seleccionar la tabla de datos. Por tanto, será el actual. bien.
Pero cuando activo el script de tabla a través de dt << run sricpt ("myscript") , otra tabla de datos podría ser la actual.
edición n.º 1: el siguiente ejemplo de @jthi sugiere que esta afirmación no es correcta:
Cuando activa un script de tabla, la tabla con el script de tabla obtiene la tabla de datos actual .
entonces: no hay problemas.
edición n.º 2: ... pero parece que " obtener la tabla de datos actual " no sucede de inmediato .
entonces: bajo algunas circunstancias podría haber algunos problemas (ver más abajo)
Automatización y secuencias de comandosRe: ¿Esta tabla de datos()?Hola,
Podría replicar mi error de 2023 y tener nuevos hallazgos:
El problema:
- un script jsl activa dt << ejecutar script(myScript)
- mi guión comienza con
mydt = tabla de datos actual(); - Mi suposición original: cuando activo el Table Script a través de JSL, otra tabla de datos podría ser la actual.
parece ser válido para algunos casos; hoy podría generar un caso en el que
mydt = current data table();
mydt << new column ("test1"); // was sent to the wrong data table
new column("test2"); // was sent to THIS DATA TABLE (fits to Peng Liu's post)
Entonces:
Si planea ejecutar un script de tabla a través de dt << ejecutar script(myScript)
y necesita una referencia a ThisDataTable, agregue wait(0) para estar seguro:
wait(0); // !!!!
thisDataTable = current data table();<BR />
hallazgos similares, pero con un contexto ligeramente diferente: ejecutar script de tabla