ODBC를 사용하여 DB를 연결하였을 경우 사용자가 원하는 데이터를 DB에 저장하고 싶을 것이다.
1. 현장에서 들어오는 실제 데이터를 지정시간마다 DB에 저장한다.
2. 사용자가 버튼을 클릭하여 DB에 데이터 저장하기
예제)
1. 현장에서 들어오는 실제 데이터를 지정시간마다 DB에 저장하기
1) 우선, 해야 할 작업은 DB에 저장할 Table을 작성하고, 제어판에서 32비트ODBC 연결설정을 한다. (참조 : 편집기|파일|SQL연결설정(AccessSQL))
2) 위와 같이 구성하였다면 초기 준비는 완료되었다, 다음에 사용자는 저장하고자 하는 태그명과 DB의 Table에서 저장시킬 Field명과 연결설정을 편집기|환경설정|SQL 연결설정에서 지정을 해주어야 한다.
아래 그림과 같이 SQL연결 설정을 해주면 된다.(아래의 파일명은 예를 들어 bindlist라고 한다.)
위의 그림을 설명하면 사용자는 DB의 Table에 YMDHM(날짜), DATA1, DATA2, DATA3, DATA4 의 필드를 만들어 구성해 놓았고, 이 Field에 감시프로그램의 YMDHM의 문자열태그와 AI_0001,AI_0002, AI_0003, AI_0004의 아날로그태그 값을 연결해 놓은 것이다. 위와 같이 구성하고 SQLInsert(Argument1, Argument2, Argument3);을 사용하면 아날로그 태그/문자열 태그의 값들이 지정한 Field로 저장이 된다.
3) 다음으로는 스크립트를 작성해 주어야 한다. 만약, 사용자가 2초마다 데이터를 저장한다면 스크립트를 작성하는데 이것은 감시프로그램중에 일정한 주기로 계속해서 데이터를 올려야 하기 때문에 편집기|파일|스크립트 편집 에서 ‘감시 프로그램 실행 중에 계속’스크립트에 아래와 같이 작성한다.
위와 같이 스크립트를 작성하면 2초마다 현재시간을 YMDHD라는 문자열태그에 저장하는 시점을 넣어주고, 여러분이 SQL연결설정에서 연결된 태그들(bindlist 라고 부른다.)을 @SQLInsert()를 이용하여 DB에 저장하게끔 된다.
스크립트의 내용을 설명하면
위의 프로그램은 검색시간을 2초로 설정했기 때문에 2초마다 한번씩 실행이 된다.
year=@GetDateYear(); //현재 저장하는 시간의 년도를 불러온다.
mon=@GetDateMon(); //현재 저장하는 시간의 월을 불러온다.
day=@GetDateDay(); //현재 저장하는 시간의 일을 불러온다.
Hour=@GetTimeHour(); //현재 저장하는 시간의 시간을 불러온다.
min=@GetTimeMin(); //현재 저장하는 시간의 시간을 불러온다.
@sprintf($YMDHM,
"%04d/%02d/%02d-%02d:%02d",year,mon,day,hour,min); //불러온
현재시간은 문자열 태그인 YMDHM에 저장한다.(예를 들면 year=2000, mon=9, day=13, hour=9, min=27 이라면 YMDHM에 저장되는 값은 “
ID=@SQLConnect("autobase", "", ""); //이 함수는 ODBC와 연결을 해준다. 반드시 ID의 Type은 DWORD로 구성하여야 한다.
@SQLInsert(ID, "Table1","bindlist"); //이 함수는 연결된 DB의 Table에 SQL연결설정에서 지정한 내용(bindlist)들을 추가한다(저장한다).
@SQLDisconnect(ID); //이것은 DB와의 연결을 끊는다.
2. 사용자가 버튼을 클릭하여 DB에 데이터 저장하기
1) 이 내용은 위의 내용 1), 2) 번까지는 같다. 그러므로 위의 내용1), 2)번을 수행한다.
2) 다음은 스크립트를 작성하는 곳이 다르다. 위의 내용은 ‘감시 프로그램 실행 중에 계속’에 스크립트를 넣었는데 이번에는 편집기|요소삽입|버튼에서 ‘프로그램 버튼’을 사용한다.
프로그램상의 내용은 위의 3번에서 구성했던 내용과 같다.