Problème lors de la lecture en boucle des données<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai une table de données basée sur une requête SQL. Je souhaite parcourir la table de données, créer et exécuter de nouvelles instructions SQL basées sur les valeurs de la table de données d'origine.
Pour une raison quelconque, il semble que l’instruction SQL soit créée deux fois d’abord avec les noms de variables, puis avec les valeurs réelles de la variable. Ci-dessous, j'ai le code et le résultat du journal lorsque le code est exécuté. Tous les conseils / explications concernant le problème sont hautement appréciés.
br
Hans
CODE d'ici:
dtMonitor = DatabaseOpslag ("SELECT distinct trial_no, trial_unit_reference FROM table");
Pour (i = 1, i <= nrows (dtMonitor), i ++,
show (: trial_no )
show (: trial_unit_reference )
Show ("Instruction SELECT où IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE ressemble à 'PD%' et IMPACT_ALL_ISSUES.trial_no =" || Char (EVAL (: trial_no )) || "et IMPACT_ALL_ISSUES.trial_unit_reference comme" || Char (EVAL (: trial_unit_reference) )) || "");
)
/ *:
LOG à partir d'ici:
: 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 INNER JOIN IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) ET (IMPACT_ALL_ISSUES. TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) où IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE ressemble à 'PD%' et IMPACT_ALL_ISSUES.trial_no = "|| Char (Eval (: TRIAL_NO )) || "et IMPACT_ALL_ISSUES.trial_unit_reference comme" || 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) ET (IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) où IMPACT_ALL_ISSUES_ISSUE_CATEGORY_CODE comme 'PD%' et IMPACT_ALL_ISSUES.trial_no = 3748 et IMPACT_ALL_ISSUES_unues_unit_reference comme 82;
Re: Problème lors de la boucle dans les données tabelLa table de données actuelle de JMP changera lorsqu'une nouvelle table est créée et lorsque vous cliquez sur une autre table. Il est judicieux d'utiliser la référence explicite à la table plutôt que de dépendre de la table de données actuelle.
Craige
Re: Problème lors de la boucle dans les données tabelmerci pour l'effort de m'aider. utiliser la table comme préfixe a fait la différence.
Re: Problème lors de la boucle dans les données tabelCela a fait le tour - merci
Donc, juste pour ma compréhension et mon apprentissage: jmp s'embrouille au sujet de la table de données à laquelle je fais référence lorsque j'essaie de référencer les variables? mais avec la table comme préfixe qui est résolu?
Re: Problème lors de la boucle dans les données tabelJe viens de poster un utilitaire d'interception des erreurs que j'utilise pour Oracle ODBC SQL, dans l'échange de fichiers. Cliquez sur ici voir ça. C'est spécifique à Oracle, mais pourrait être adapté à d'autres bases de données.
Re: Problème lors de la boucle dans les données tabel C Hales est correct. Cependant, votre variable de table est moniteur , pas dt. Vous voulez ce qui suit dans votre instruction SQL dans la boucle:
moniteur : trial_no [ je ]
et
moniteur : TRIAL_UNIT_REFERENCE [ je ]
Re: Problème lors de la boucle dans les données tabelles messages d'erreur dans JMP nécessitent un peu d'explication la première fois que vous en voyez un:
Nom non résolu: trial_no dans l'accès ou l'évaluation de 'trial_no',: trial_no / * ### * /
c'est ce qui a mal tourné, mais où? la ligne suivante vous indique comment l'erreur sera signalée:
Dans le script suivant, erreur marquée par / * ### * /
D1 = Dialogue ("invite", Monitor = edittext ("Surveiller les initiales"));
... sauter un tas de script et trouver ...
|| Char (: trial_no / * ### * / ) ||
Je pense que la table de données que JMP recherche dans n'a pas de colonne "trial_no". S'il existe plusieurs tables de données, vous pouvez utiliser dt: trial_no pour être explicite à propos de la table dans laquelle rechercher la variable.
Re: Problème lors de la boucle dans les données tabelerreur stupide par moi désolé 
J'ai corrigé l'orthographe et lorsque je lance le script et que je ne décris que l'instruction SQL, il apparaît que les instructions sont générées comme prévu. mais quand j'essaie de passer l'instruction SQL à une fonction qui rend la requête de base de données et de placer le résultat dans une table, la fonction ne s'exécute qu'une seule fois, puis jette une erreur. J'ai fait un journal où je n'affiche que l'instruction SQL (logshow.jsl) et un autre où j'essaie de l'exécuter (logexecute.jsl).
Je suis nouveau sur le script jmp, donc je ne sais pas quoi faire?
Re: Problème lors de la boucle dans les données tabelVous manquez le premier e dans sql_statement.
Change ça:
spectacle ( sql_statment ) ;
pour ça:
spectacle ( sql_statement ) ;
Re: Problème lors de la boucle dans les données tabelMerci de regarder cela, mais je ne peux toujours pas faire la déclaration SQL que je tente voir le code de journal ci-dessous:
Formulaire CODE ici:
dtMonitor = DabaseOpslag ( "SELECT distinct trial_no, trial_unit_reference FROM IMPACT_MONITOR_WORKLOAD où un nom d'utilisateur du type '" || Monitor || "' et site_closed_date a la valeur null" ) ;
Pour ( 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) ET ( IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) où IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE aime 'PD%' et IMPACT_ALL_ISSUES.trial_no = "|| Char ( : trial_no [ je ]) || "et IMPACT_ALL_ISSUES.trial_unit_reference comme" || Char ( : trial_unit_reference [ je ]) || "";
Spectacle ( sql_statment ) ;
) ;
/ *:
LOG réponse:
Nom non résolu: sql_statment dans l'accès ou l'évaluation de 'sql_statment', sql_statment / * ### * /
Re: Problème lors de la boucle dans les données tabelOui, show () fonctionne mieux avec des noms de variables simples. Les expressions compliquées produisent des réponses confuses.
Re: Problème lors de la boucle dans les données tabelVous pouvez supprimer les EVAL. Définissez l'instruction SQL égale à une variable, puis affichez la variable:
Pour ( je = 1 , je <= maintenant ( dtMonitor ) , je ++,
spectacle ( : trial_no [ je ]) ;
spectacle ( : trial_unit_reference [ je ]) ;
sql_statement =
"Instruction SELECT
où IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE ressemble à 'PD%'
et IMPACT_ALL_ISSUES.trial_no = " || Carboniser ( : trial_no [ je ]) || "
et IMPACT_ALL_ISSUES.trial_unit_reference like " || Carboniser ( : trial_unit_reference [ je ]) ;
spectacle ( sql_statement ) ;
) ;