데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕하세요 여러분,
오래된 기록 정보(레거시 데이터)가 포함된 정적 JMP 데이터 테이블이 있습니다.
새 데이터가 포함된 또 다른 JMP 데이터 테이블이 있습니다. 이 테이블은 JMP 데이터베이스 쿼리를 통해 데이터베이스에서 제공됩니다. 이는 JMP가 실행할 때마다 데이터베이스에서 테이블을 업데이트할 수 있는 멋진 스크립트를 자동으로 제공한다는 의미이기도 합니다.
이제 이전 데이터를 잃지 않고 데이터베이스에서 가져오는 새 데이터를 이전 테이블에 추가하고 싶습니다. 아마도 JSL이 필요할 것 같지만 스스로 알아낼 수는 없습니다.
도움을 주시면 감사하겠습니다.
많은 감사
남자
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법완벽한!Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법예! 이제 예상대로 작동합니다! 고마워요 해들리!
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕,
효과가 있을 것 같은 또 다른 해결책이 있습니다.연결 함수는 다시 첫 번째 테이블(dt1)에 추가되지만 이제 dt1에 있던 행과 dt2에서 추가된 행을 추적하기 위해 소스 열을 생성합니다. 이제 "Onruncomplete"는 dt2 테이블의 이름을 가져온 다음 ":Source table" 열을 찾아 "dt2" 행을 선택하고 삭제합니다.그런 다음 ":Source 테이블"을 삭제합니다.시도해 보시고 효과가 있는지 알려주세요.
query<<RUN></RUN>
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법고마워요 해들리.
방금 스크립트 끝에 전체 명령을 추가하고 dt를 dt1로 변경한 다음(내 생각에는 중요하지 않지만) 저장하고 실행했습니다. 스크립트는 여전히 오류나 경고 메시지 없이 실행되지만 두 번째로 실행하면 중복 항목이 계속 추가됩니다.
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법다시 안녕하세요.
좀 더 생각해 보면 dt2를 dt1에 추가한 후 dt1에서 중복 행을 제거하는 명령을 언제든지 추가할 수 있습니다.그러면 두 번째 문제가 해결될 수 있습니다.조건이 있는 중복 행 선택 및 제거
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕,
onruncomplete 스크립트에 Close() 함수를 추가하면 dt2가 너무 빨리 열리고 닫히므로 사용자는 무슨 일이 일어났는지 알 수 없습니다.
query<<RUN></RUN>
또한 연결 함수에서 "첫 번째 테이블에 추가" 문을 제거했습니다.이렇게 하면 별도의 테이블이 생성되고 dt1은 그대로 유지됩니다.이는 귀하가 제안한 해결 방법과 일치합니다(그런데 좋은 생각입니다!).두 테이블의 각 행을 확인하고 dt2에 고유한 행만 추가하는 쉬운 방법이 있을 것 같지만 생각이 나지 않습니다.다른 사람이 제안할 수도 있나요?
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법예, 이것이 트릭입니다. 추가됩니다. 아직 남아 있는 두 가지 문제:
1) 사소한 문제는 dt2 테이블이 여전히 별도로 팝업된다는 것인데, 이는 필요하지 않습니다.
이를 방지하기 위해 다음과 같이 스크립트를 변경하여 시도했지만 결과는 동일합니다.
queryname << Run( onruncomplete( dt1 << Concatenate( dt2 = queryResult, Append to first table ) ) );
대신에
queryname << Run(
onruncomplete(
dt2 = queryResult;
dt1 << Concatenate( dt2, Append to first table );
)
);
2) 더 큰 문제는 스크립트를 두 번째로 실행하면 dt1 끝에 동일한 데이터가 다시 추가된다는 것입니다. 새로운 데이터만 가져오는 일종의 규칙이 필요합니다. 스크립트의 연결 부분에서 이 작업을 수행할 수 있는지 확실하지 않습니다.
이에 대한 해결 방법이 없는 경우 계획 B로 추가된 테이블(dt1 + dt2)을 별도의 테이블로 생성하도록 스크립트를 수정해 볼 수도 있습니다. 이렇게 하면 dt1을 항상 향후 데이터 업데이트의 기초로 사용할 수 있습니다.
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법다시 안녕하세요.
좋아요, 해결책이 있는 것 같아요. 아래 스크립트에서 볼 수 있듯이 "onruncomplete" 메시지 내부에 Concatenate 함수를 추가했습니다.이것이 dt1에 테이블 스크립트로 저장되면 작동합니다.시도해 보시고 알려주세요.
dt1=Current Data Table();
query=New SQLQuery (...
);
query<<RUN></RUN>
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕하세요 해들리,
내 생각엔 우리가 가까운 것 같아...
제안하신 대로 모든 것을 실행한 것 같지만 dt1을 열고 거기에서 스크립트를 실행하면 다음과 같은 JMP 경고 메시지가 나타납니다.
이름이 확인되지 않음: 'dt2'에 대한 액세스 또는 평가 시 dt2, dt2/*###*/
잠시 후 dt2 데이터 테이블이 나타납니다. 그러나 dt1에는 추가되지 않습니다.
흥미롭게도 이 dt2를 닫고 dt1에서 스크립트를 다시 실행하려고 하면 더 이상 JMP 경고 메시지가 표시되지 않지만 이제 Concatenate 창이 팝업되고 잠시 후에 dt2가 다시 팝업됩니다. 여전히 dt2는 dt1에 추가되지 않습니다.
문안 인사
남자
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕,
다음을 통해 이를 단순화할 수 있을 것 같습니다. 데스크탑에 저장된 테이블을 dt1이라고 부르고, 데이터베이스에서 업데이트하려는 새 테이블을 dt2라고 부릅니다.dt2에 대한 쿼리를 생성한 다음 dt1과 dt2를 함께 연결하여 결과를 dt1에 추가하는 테이블 dt1에 대한 새 테이블 스크립트를 생성하겠습니다.
dt1=Current data table();<BR /><BR />queryname=New SQL Query(...<BR />...);<BR /><BR /><SPAN>queryname<<RUN></RUN><BR />dt1<<CONCATENATE><BR /></CONCATENATE></SPAN>
첫 번째 질문에 답하려면 쿼리를 실행한 다음 소스 스크립트를 마우스 오른쪽 버튼으로 클릭하고 결과를 클립보드에 저장한 다음 새 스크립트 창에 붙여넣어 dt2에서 새 SQL 쿼리 스크립트를 가져올 수 있습니다.그런 다음 창을 사용하여 dt1의 새 테이블 스크립트에 저장하기 전에 스크립트 작업을 수행할 수 있습니다.
이것이 도움이 됩니까?
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕하세요 해들리,
아직 모든 단계를 이해하지 못했습니다.
1) 쿼리를 실행하고 소스 스크립트를 저장하여 쿼리에 새 이름을 지정합니다. queryname = New SQL Query(...)<
=> "소스 스크립트 저장"을 사용하면 테이블의 기존 쿼리를 편집하고 거기에 저장하면 된다는 뜻인가요? 아니면 내 테이블에 새 스크립트로 추가하시겠습니까? 아니면 이 새 스크립트를 다른 곳에 저장하시겠습니까?
4) 다른 테이블과 함께 "연결" 기능을 사용하여 dt에 대한 참조를 사용합니다.
=> 좀 더 명확한 설명이 필요한 것 같습니다.
미리 감사드립니다 해들리!
남자
Re: 데이터베이스 스크립트의 새 데이터로 레거시 데이터 테이블을 추가하는 방법안녕, 애들 아,
SQL 쿼리(New SQL Query(...))를 실행할 때 다음 방법으로 데이터 테이블에 대한 참조를 가져올 수 있습니다.
1) 쿼리를 실행하고 소스 스크립트를 저장하여 쿼리에 새 이름을 지정합니다. queryname = New SQL Query(...)<
2) 쿼리 후 <
3) 아래에 queryname<
4) 다른 테이블과 함께 "연결" 기능을 사용하여 dt에 대한 참조를 사용합니다.
이것을 시도해보고 당신에게 효과가 있는지 알려주십시오.