Problema al pasar por la tabla de datos<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo una tabla de datos basada en una consulta SQL. Quiero recorrer la tabla de datos y crear y ejecutar nuevas instrucciones SQL basadas en los valores de la tabla de datos original.
Por alguna razón, parece que la sentencia sql se crea dos veces primero con nombres de variables y luego con los valores de variabel reales. A continuación, tengo el código y el resultado del registro cuando se ejecuta el código. Cualquier consejo / explicación sobre el problema es muy apreciado.
br
Hans
CÓDIGO desde aquí:
dtMonitor = DatabaseOpslag ("SELECT distinto trial_no, trial_unit_reference FROM table");
Para (i = 1, i <= nrows (dtMonitor), i ++,
show (: trial_no );
show (: trial_unit_reference );
Mostrar ("instrucción SELECT donde IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE como 'PD%' e IMPACT_ALL_ISSUES.trial_no =" || Char (EVAL (: trial_no )) || "y IMPACT_ALL_ISSUES.trial_unit_reference like" || Char (EVAL (: trial_unit_reference )) || "");
);
/ *:
LOG desde aquí:
: TRIAL_NO = 3748;
: TRIAL_UNIT_REFERENCE = "822";
"SELECT PRIMARY_INVESTIGATOR, COUNTRY_NAME, IMPACT_ALL_ISSUES.TRIAL_UNIT_REFERENCE, PATIENT_ENTRY_NO, ISSUE_CATEGORY_DESC, ISSUE_TITLE, ISSUE_DESC, ISSUE_ACTION, GCP_ISSUE, ISSUE_CREATED_BY_FORENAME, ISSUE_CREATED_BY_SURNAME, CREATED_DATE, CLOSED_DATE, ISSUE_RESOLVED DE IMPACT_ALL_ISSUES combinación interna IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) y (IMPACT_ALL_ISSUES. TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) donde IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE como 'PD%' e IMPACT_ALL_ISSUES.trial_no = "|| Char (Eval (: TRIAL_NO )) || "y IMPACT_ALL_ISSUES.trial_unit_reference like" || Char (Eval (: TRIAL_UNIT_REFERENCE )) || "" = "SELECT PRIMARY_INVESTIGATOR, COUNTRY_NAME, IMPACT_ALL_ISSUES.TRIAL_UNIT_REFERENCE, PATIENT_ENTRY_NO, ISSUE_CATEGORY_DESC, ISSUE_TITLE, ISSUE_DESC, ISSUE_ACTION, GCP_ISSUE, ISSUE_CREATED_BY_FORENAME, ISSUE_CREATED_BY_SURNAME, CREATED_DATE, CLOSED_DATE, ISSUE_RESOLVED DE IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) Y (IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) donde IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE como "PD%" e IMPACT_ALL_ISSUES.trial_no = 3748 e IMPACT_ALL_ISSUES.trial_unit_reference like 822 ".
Re: Problema al pasar por la tabla de datosLa tabla de datos actual de JMP cambiará cuando se cree una nueva tabla y al hacer clic en una tabla diferente. Es una buena idea usar la referencia explícita de la tabla en lugar de depender de la tabla de datos actual.
Craige
Re: Problema al pasar por la tabla de datosGracias por el esfuerzo en ayudarme. Usar la tabla como prefijo hizo la diferencia.
Re: Problema al pasar por la tabla de datosEso hizo el truco - gracias
así que solo para mi comprensión / aprendizaje: jmp se confunde sobre a qué tabla de datos me refiero cuando trato de hacer referencia a las variables? ¿Pero con la tabla como prefijo que se resuelve?
Re: Problema al pasar por la tabla de datosAcabo de publicar una utilidad de captura de errores que utilizo para Oracle ODBC SQL en el intercambio de archivos. Hacer clic aquí para verlo. Es específico de Oracle, pero podría adaptarse a otras bases de datos.
Re: Problema al pasar por la tabla de datos C Hales es correcto. Sin embargo, su variable de tabla es dtmonitor , no dt. Desea lo siguiente en su declaración SQL en el bucle:
dtmonitor : trial_no El yo ]
y
dtmonitor : TRIAL_UNIT_REFERENCE El yo ]
Re: Problema al pasar por la tabla de datoslos mensajes de error en JMP necesitan un poco de explicación la primera vez que vea uno:
Nombre no resuelto: trial_no en acceso o evaluación de 'trial_no',: trial_no / * ### * /
eso fue lo que salió mal, pero ¿dónde? La siguiente línea le dice cómo se marcará el error:
En el siguiente script, error marcado por / * ### * /
D1 = Diálogo ("prompt", Monitor = edittext ("Monitor initials"));
... omitir un montón de guión y encontrar ...
|| Char (: trial_no / * ### * / ) ||
Creo que la tabla de datos en la que está mirando JMP no tiene una columna "trial_no". Si hay más de una tabla de datos, puede usar dt: trial_no para ser explícito sobre la tabla para encontrar la variable en.
Re: Problema al pasar por la tabla de datoserror tonto por mi lo siento 
He corregido la ortografía y cuando ejecuto el script y solo se muestra la instrucción SQL, parece que las declaraciones se generan como se esperaba. pero cuando intento pasar la instrucción sql a una función que realiza la consulta db y pongo el resultado en una tabla, la función solo se ejecuta una vez y luego arroja un error. Hice un registro en el que solo muestro la instrucción sql (logshow.jsl) y una en la que intento ejecutar (logexecute.jsl).
Soy nuevo en el script jmp, así que no estoy seguro de qué hacer.
Re: Problema al pasar por la tabla de datosTe estás perdiendo el primero mi en sql_statement.
Cambia esto:
espectáculo ( sql_statment ) ;
a esto:
espectáculo ( sql_statement ) ;
Re: Problema al pasar por la tabla de datosGracias por ver esto, pero todavía no puedo hacer la declaración de SQL que intento ver el código del registro a continuación:
Formulario de código aquí:
dtMonitor = DabaseOpslag ( "SELECCIONE distintos trial_no, trial_unit_reference FROM IMPACT_MONITOR_WORKLOAD donde el nombre de usuario como '" || Monitor || "' y site_closed_date es nulo" ) ;
por ( i = 1, i <= nrows ( dtMonitor ) , i ++,
sql_statement = "SELECT PRIMARY_INVESTIGATOR, COUNTRY_NAME, IMPACT_ALL_ISSUES.TRIAL_UNIT_REFERENCE, PATIENT_ENTRY_NO, ISSUE_CATEGORY_DESC, ISSUE_TITLE, ISSUE_DESC, ISSUE_ACTION, GCP_ISSUE, ISSUE_CREATED_BY_FORENAME, ISSUE_CREATED_BY_SURNAME, CREATED_DATE, CLOSED_DATE, ISSUE_RESOLVED DE IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) y ( IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) donde IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE como "PD%" e IMPACT_ALL_ISSUES.trial_no = "|| Char ( : trial_no El yo ]) || "y IMPACT_ALL_ISSUES.trial_unit_reference like" || Char ( : trial_unit_reference El yo ]) || "";
Show ( sql_statment ) ;
) ;
/ *:
Respuesta de registro:
Nombre sin resolver: sql_statment en acceso o evaluación de 'sql_statment', sql_statment / * ### * /
Re: Problema al pasar por la tabla de datosSí, show () funciona mejor con nombres de variables simples. Las expresiones complicadas producen respuestas confusas.
Re: Problema al pasar por la tabla de datosPuede eliminar los EVALs. Establezca la instrucción SQL igual a una variable y luego muestre la variable:
por ( yo = 1 , yo <= las filas ( dtMonitor ) , yo ++,
espectáculo ( : trial_no El yo ]) ;
espectáculo ( : trial_unit_reference El yo ]) ;
sql_statement =
"Declaración SELECT
donde IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE como 'PD%'
e IMPACT_ALL_ISSUES.trial_no = " || Carbonizarse ( : trial_no El yo ]) || "
e IMPACT_ALL_ISSUES.trial_unit_reference like " || Carbonizarse ( : trial_unit_reference El yo ]) ;
espectáculo ( sql_statement ) ;
) ;