Problem beim Durchschleifen der Datentabelle<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe eine Datentabelle, die auf einer SQL-Abfrage basiert. Ich möchte die Datentabelle durchlaufen und neue SQL-Anweisungen basierend auf den Werten in der ursprünglichen Datentabelle erstellen und ausführen.
Aus irgendeinem Grund scheint es, dass die SQL-Anweisung zuerst mit Variablennamen und anschließend mit den tatsächlichen Variablenwerten erstellt wird. Unten habe ich den Code und das Ergebnis aus dem Protokoll, wenn der Code ausgeführt wird. Irgendwelche Tipps / Erklärungen bezüglich des Problems werden sehr geschätzt.
br
Hans
CODE von hier:
dtMonitor = DatabaseOpslag ("SELECT-eindeutige trial_no, trial_unit_reference FROM-Tabelle");
Für (i = 1, i <= Reihen (dtMonitor), i ++,
show (: trial_no );
show (: trial_unit_reference.) );
Show ("SELECT-Anweisung, wobei IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE wie 'PD%' und IMPACT_ALL_ISSUES.trial_no =" || Char (EVAL (: trial_no.) )) || "und IMPACT_ALL_ISSUES.trial_unit_reference wie" || Char (EVAL (: trial_unit_reference) )) || "");
);
/ *:
LOG von hier:
: 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 FROM IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) und (IMPACT_ALL_ISSUES. TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) wobei IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE wie 'PD%' und IMPACT_ALL_ISSUES.trial_no = "|| Char (Eval (: TRIAL_NO.) )) || "und IMPACT_ALL_ISSUES.trial_unit_reference wie" || 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 FROM IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) AND (IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) Wobei IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE wie 'PD%' und IMPACT_ALL_ISSUES.trial_no = 3748 und IMPACT_ALL_ISSUES._Opt.
Re: Problem beim Durchschleifen der DatentabelleDie aktuelle Datentabelle von JMP ändert sich, wenn eine neue Tabelle erstellt wird und Sie auf eine andere Tabelle klicken. Es empfiehlt sich, die explizite Tabellenreferenz zu verwenden und nicht von der aktuellen Datentabelle abhängig zu sein.
Craige
Re: Problem beim Durchschleifen der DatentabelleDanke für die Mühe, mir zu helfen. Die Verwendung der Tabelle als Präfix machte den Unterschied.
Re: Problem beim Durchschleifen der DatentabelleDas hat den Trick gemacht - danke
also nur für mein verständnis / lernen: jmp verwirrt darüber, auf welche datentabelle ich mich beziehe, wenn ich versuche, die variablen zu referenzieren? aber mit der tabelle als vorsatz ist das gelöst?
Re: Problem beim Durchschleifen der DatentabelleIch habe gerade ein Dienstprogramm zur Fehlerbehebung bereitgestellt, das ich für Oracle ODBC SQL zum Dateiaustausch verwende. Klicken Hier Es zu sehen. Es ist spezifisch für Oracle, könnte aber für andere Datenbanken angepasst werden.
Re: Problem beim Durchschleifen der Datentabelle C Hales ist richtig. Ihre Tabellenvariable ist jedoch dtmonitor nicht dt. Sie möchten Folgendes in Ihrer SQL-Anweisung in der Schleife:
dtmonitor : trial_no [ ich ]
und
dtmonitor : TRIAL_UNIT_REFERENCE [ ich ]
Re: Problem beim Durchschleifen der DatentabelleDie Fehlermeldungen in JMP müssen beim ersten Mal etwas erklärt werden:
Name ungelöst: trial_no beim Zugriff oder bei der Auswertung von 'trial_no': trial_no / * ### * /
das ist was schief gelaufen, aber wo? Die nächste Zeile zeigt an, wie der Fehler angezeigt wird:
Fehler im folgenden Skript mit / * ### * / markiert
D1 = Dialog ("Eingabeaufforderung", Monitor = edittext ("Initialen überwachen"));
... überspringen Sie ein paar Skripte und finden Sie ...
|| Char (: trial_no / * ### * / ) ||
Ich denke, die Datentabelle, die JMP sucht, hat keine Spalte "trial_no". Wenn es mehr als eine Datentabelle gibt, können Sie dt: trial_no verwenden, um die Tabelle explizit anzugeben, um die Variable in zu finden.
Re: Problem beim Durchschleifen der Datentabelledummer Fehler von mir sorry 
Ich habe die Schreibweise korrigiert. Wenn ich das Skript ausführte und nur die SQL-Anweisung darstellt, scheint es, dass die Anweisungen wie erwartet generiert werden. aber wenn ich versuche, die SQL-Anweisung an eine Funktion zu übergeben, die die Datenbankabfrage durchführt und das Ergebnis in eine Tabelle stellt, führt die Funktion nur einmal aus und wirft dann einen Fehler aus. Ich habe ein Protokoll erstellt, in dem nur die SQL-Anweisung (logshow.jsl) angezeigt wird, und eines, in dem ich versuche, (logexecute.jsl) auszuführen.
Ich bin neu in jmp script und bin mir nicht sicher, was ich tun soll.
Re: Problem beim Durchschleifen der DatentabelleDu vermisst den ersten e in sql_statement.
Ändere das:
Show ( sql_statment ) ;
zu diesem:
Show ( sql_statement ) ;
Re: Problem beim Durchschleifen der DatentabelleVielen Dank, dass Sie sich das angesehen haben, aber ich kann immer noch nicht die SQL-Anweisung machen, die ich versuche, den Code aus dem folgenden Protokoll zu sehen:
CODE-Formular hier:
dtMonitor = DabaseOpslag ( "SELECT different trial_no, trial_unit_reference FROM IMPACT_MONITOR_WORKLOAD, wobei Benutzername wie" "|| Monitor ||" "und site_closed_date null ist." ) ;
Zum ( i = 1, i <= Reihen ( 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 FROM IMPACT_ALL_ISSUES INNER JOIN IMPACT_UNIT_LEVEL ON (IMPACT_ALL_ISSUES.UNIT_KEY = IMPACT_UNIT_LEVEL.UNIT_KEY) und ( IMPACT_ALL_ISSUES.TRIAL_NO = IMPACT_UNIT_LEVEL.TRIAL_NO) wobei IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE wie 'PD%' und IMPACT_ALL_ISSUES.trial_no = "|| Char ( : trial_no [ ich ]) || "und IMPACT_ALL_ISSUES.trial_unit_reference wie" || Char ( : trial_unit_reference [ ich ]) || "";
Show ( sql_statment ) ;
) ;
/ *:
LOG Antwort:
Name ungelöst: sql_statment beim Zugriff oder bei der Bewertung von 'sql_statment', sql_statment / * ### * /
Re: Problem beim Durchschleifen der DatentabelleJa, show () funktioniert am besten mit einfachen Variablennamen. Komplizierte Ausdrücke erzeugen verwirrende Antworten.
Re: Problem beim Durchschleifen der DatentabelleSie können die EVALs entfernen. Setzen Sie die SQL-Anweisung gleich einer Variablen und zeigen Sie dann die Variable an:
Zum ( ich = 1 . ich <= nrows ( dtMonitor ) . ich ++
Show ( : trial_no [ ich ]) ;
Show ( : trial_unit_reference [ ich ]) ;
sql_statement =
"SELECT-Anweisung
wo IMPACT_ALL_ISSUES.ISSUE_CATEGORY_CODE wie 'PD%'
und IMPACT_ALL_ISSUES.trial_no = " || Verkohlen ( : trial_no [ ich ]) || "
und IMPACT_ALL_ISSUES.trial_unit_reference wie " || Verkohlen ( : trial_unit_reference [ ich ]) ;
Show ( sql_statement ) ;
) ;