Access 간단한 팁

오늘 어쩌다보니 Access 를 이용한 작업을 했다.

간단한 팁을 쓰겠다.

나름 찾는냐고 고생했으니 말이다.

1. 폼을 만들고, 버튼이나 폼 내에서 스크립트를 실행할 경우
    컴포넌트네임.Value 로 하면 값을 받아낼수 있다.
    텍스트 박스나 선택목록이 아닌 이상 간단한데
    콤보박스나 기타를 이용할 경우
    거기서 지정한 필드들중에 가장 처음값이 넘어온다.
    밑에서 언급하겠지만 확실하진 않고 선택값 중 각 필드로 접근하는 방법이 있는거 같다.


2. VBA 내에서 SQL 쿼리문을 쓰고 싶다면
    DAO 를 이용하는게 좋다.
    물론 ADO 나 여러가지 있지만 내가 쓰면서 찾고 또는 VBA 내에서만 설정하면 되고
    (ADO 의 경우 윈도우 관리에서 설정해줘야한다.)
    엑세스 내에 탑재되어 있는 SQL JET엔진을 이용하기 때문에
    특별히 손댈 필요는 없다.

예제 )
   Dim rst As DAO.Recordset
   Dim strSQL As String
   Dim strVal As String

   strSQL = "SELECT 보정치, 역상성 FROM " + 변수_상성테이블 + " WHERE 상성
             = ( (SELECT 성향  FROM " + 변수_캐릭터테이블 + " WHERE ID = " + 변수_공격자ID + " ) +
                (SELECT 성향 FROM " + 변수_캐릭터테이블 + " WHERE ID = " + 변수_방어자ID + ") );"
   Set rst = CurrentDb.OpenRecordset(strSQL)
   strVal = rst!필드명.Value

   여기서 DAO.Recordset 은 DAO 에서 제공하는 인터페이스라고 보면 된다.
   ASP 로 DAO 를 이용한 MSSQL 에 접근해 본 사람은 이해가 편할 것이다.
   (본인은 한 6년만에 해봐서 그런지 햇갈린다.)
   CurrentDb.OpenRecordset(strSQL) 로 쿼리를 날려주면,
   쿼리값이 rst(DAO.Recordset 인터페이스)로 들어간다.
   이후 rst!필드명.Value 식으로 접근해서 값을 뽑아내면 된다.
   위 예제의 경우는 쿼리값의 레코드가 하나만 나왔을 때의 예이다.
   ID로 Select 해서 얻었으니 그 값은 절대하나라는 보장이 있기 때문에 저런 예가 나온 것이다.
   하지만 그렇지 않을 경우는 레코드값이 다중 일수 있기 때문에
   http://www.n2u.co.kr/lecture2007.asp?rnd_no=8 로 가서
   1. 검색(선택) 하기 를 보면 다중 레코드에 대처하는 법을 알수 있을 것이다.
  

3. 위의 접근법으로 1번 마지막에 해답을 찾아보자면
    콤보박스의 Value 역시 다중 필드의 경우
    (레코드는 하나다. 콤보박스에서 선택된 값만 Value 로 넘어온다.)
    콤보박스명.Value!필드명.Value 로 접근할수 있을꺼 같다.
    실험은 귀찮아서 안해봤다.


 후문
VB 문법은 한 8년만에 처음 봐서 거의 새로 공부하는 식으로 했고,
액세스는 써본적도 없어서 내부 쿼리로만 하려고 했는데,
식 작성기나 스크립트가 아닌 걸로 다른 컴포넌트 값에 접근하려고 하니
접근법을 몰라서 편한 스크립트로 짰다.
SQL 문은 좀더 최적화가 가능하겠지만 본인 SQL 도 7년만에 써봐서 질질 쌌다.


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by NFIsNOT

2009/03/07 02:25 2009/03/07 02:25
Response
No Trackback , No Comment
RSS :
http://www.nfisnot.pe.kr/rss/response/15

Trackback URL : http://www.nfisnot.pe.kr/trackback/15

« Previous : 1 : ... 26 : 27 : 28 : 29 : 30 : 31 : 32 : 33 : 34 : ... 39 : Next »