인턴 일을 하면서 배운 내용을 학기중에 까먹지 않기 위해 기록으로 남기며 복습하고자 작성한 글이다.
우선 델파이를 실행시킨다.
File - New - Window VCL Application - Delphi 를 클릭해 새 폼을 만든다.
다음과 같은 화면이 뜬다.
우선 데이터를 출력할 그리드를 먼저 깔아준다.
우측 상단에 grid를 검색한다.
Data Controls 탭의 첫번째 아이콘을 배치한다.
좌측 Properties 탭에서 첫번째에 있는 Align 항목을 보면 컴포넌트의 위치를 지정할 수 있다.
컴포넌트 = tkinter의 위젯 이라고 생각하면 되고
Align은 tkinter에서 pack 을 하는 것과 똑같이 생각하면 된다.
우선 화면하단에 배치하도록 한다.
다음과 같은 모습이 되었다.
그 다음으로 각종 버튼을 포함한 컴포넌트들이 위치할 공간을 만들어준다.
델파이에서는 이를 그룹박스로 표현한다.
tkinter에서 프레임을 생각하면 편하다.
그룹을 검색하고나서
Express Utilities 탭에 있는 그룹박스를 끌어다 놓는다.
그룹 박스의 Align은 그냥 남은 공간을 꽉 채워서 배치하게끔한다.
캡션은 비워서 그룹박스에 다른 문자열이 뜨지 않도록 한다.
이런 모양이 된다.
그런데 그리드 사이즈가 너무 작아서 데이터를 보기도 힘들 것 같다.
그리드 사이즈를 키워주자.
이때 그룹박스의 사이즈는 변하지 않는데,
그룹박스의 사이즈는 그리드의 사이즈가 변하고 남은 공간을 전부 채우는 것으로 자동설정 되어있기 때문이다.
한결 낫다.
이제 DB서버에 연결해서 데이터를 조회하면, 이 그리드에 그 조회 결과가 나올 것이다.
조회를 실행할 버튼을 우선 만들어준다.
버튼을 검색한다.
아까와 같은 탭에서 두번째 컴포넌트를 배치한다.
캡션(우리 눈에 보이게 할 버튼의 텍스트)은 '조회'로 바꾼다.
점점 익숙한 모양의 프로그램이 되어가는 중이다.
이제 이 버튼을 누르면 DB를 조회할 것이다.
조회할 DB서버를 연결시켜주자.
연결을 위해서 내가 일한 곳은 UniDac을 사용했다.
Uni 를 검색해서 UniDAC 탭을 찾아 첫번째 컴포넌트를 배치한다.
이 컴포넌트는 DB서버와 프로그램을 연결지어주는 요소이다.
프로그램을 실행시켜도 눈에 보이지는 않는다.
배치한 컴포넌트를 더블클릭해보자
DB서버의 정보를 입력해주면 된다.
내가 일했던 곳은 오라클을 사용했다.
Provider 는 오라클로
Server 에는 DB서버의 ip를
Username / Password를 접속한 서버에 맞게 입력해준다.
이렇게 된다.
이 상태로 Connect 를 눌러도 연결이 되지 않는다.
DB서버에 접속하려면 클라이언트를 활용해야만 접속할 수 있다.
그러나 클라이언트를 깔고 설정하고 하기는 매우 번거로운 일이다.
Option 탭으로 가서 Direct 항목을 True로 해준다.
그 다음으로 프로바이더 컴포넌트를 넣어준다.
아직은 나도 자세히 모르지만, 일종의 드라이버 같은 느낌으로 받아들이고 있다.
UniDAC Providers 탭의 오라클 프로바이더컴포넌트를 넣어준다.
그러면 클라이언트 프로그램 없이 DB서버에 '직접' 다이렉트로 연결할 수 있다.
OK를 누르고 나오면 DB서버와 프로그램간 연결은 되었다.
하지만 연결만 한다고 끝은 아니다.
DB에 접속하였으니, 데이터를 조회하려면 DB에 쿼리를 주어야 한다.
이제 SQL을 사용할 시간이다.
두번째 컴포넌트를 배치한다.
이 컴포넌트 역시 프로그램 실행시 보이지는 않고, 그저 DB에 쿼리를 전달해주는 역할만을 한다.
이 컴포넌트에서 직접 쿼리를 작성할 수도 있고,
프로그래밍을 통해 이 컴포넌트의 프로퍼티를 조작하여 쿼리를 작성할 수도 있다.
파이썬의 tkinter와 매우매우 비슷하다.
전에 게임메이커에서 게임 만들던 느낌과도 비슷하다.
아까 처음에 배치했던 세션 오브젝트에 쿼리 오브젝트가 잘 연결되어있는지 확인해야한다.
연결이 안되어있으면 DB에 쿼리를 전달할 수가 없다.
연결이 되어있는걸 확인했지만, 아직 이것만으로는 부족하다.
이 컴포넌트는 쿼리를 전달하고, 쿼리의 결과를 받지만, 그 받은 쿼리의 결과를 그리드에 넘겨주지는 못한다.
쿼리의 결과를 그리드에 넘겨줄 컴포넌트를 넣어주어야 한다.
형광펜으로 표시한 이 컴포넌트를 배치한다.
이 컴포넌트 역시 프로그램 실행시 보이지 않는다.
데이터소스 컴포넌트는 이 컴포넌트와 연결된 그리드/테이블에 쿼리 결과를 뿌려준다.
DataSet에 앞서 만들었던 쿼리 컴포넌트를 연결시켜준다.
연결이 거의 끝나간다.
그리드 컴포넌트를 클릭해보자
그리고 그리드의 DataSource 항목에서 방금 만들었던 데이터소스 컴포넌트를 연결시켜준다.
이제 모든 컴포넌트는 연결이 되었다.
마지막으로 조회 버튼을 누르면 작성한 쿼리 결과가 실행되게끔 하면 끝이다.
조회 버튼을 더블클릭해보자.
난데없이 코드창이 나올 것이다.
이 코드창은 '조회 버튼을 한번 클릭했을 때' 라는 이벤트 상황엥서 실행될 코드를 작성하는 공간이다.
다음과 같이 작성하는 것이 '기본 폼'이다.
기존에 열려있던 쿼리를 닫고, 작성되어있던 SQL을 지우고, 사용했던 매개변수들을 제거한다.
일종의 '초기화' 이다.
이 과정을 필수적으로 해야 오류를 방지할 수 있다.
그 다음 원하는 쿼리를 작성한다.
그리고 작성한 쿼리대로 조회한다 (Open)
이제 쿼리를 작성해보자.
간단하게 테이블 내 모든 자료를 조회하는 쿼리를 적었다.
(테이블 이름은 혹시나 싶어 가린다.)
이제 실행시켜보자
밋밋한 프로그램 하나가 나왔다.
조회를 눌러보면
데이터들이 쭈르륵 나온다.
다음 포스트에서는 DB내 데이터를 조작시키는 기능을 넣어 본 포스팅의 목적을 끝내고자 한다.
'인턴 > 델파이' 카테고리의 다른 글
[델파이] 2. 델파이 소스파일의 구성 (0) | 2021.02.18 |
---|---|
[프로젝트] 자동 메일 송신 프로세스 만들기(1) (0) | 2021.02.08 |
[델파이] 1. 델파이 프로젝트의 구성 (0) | 2021.01.08 |
[델파이 DB조작 예제] 3. Banded Table 사용해보기 (0) | 2020.08.28 |
[델파이 DB조작 예제] 2. DB 데이터 조작하기 (0) | 2020.08.28 |