GetString은 여러 행, 열을 한번에 하나의 문자열로 받아내기에 유용한 메서드이다.

 

조건에 맞는 레코드셋을 루프를 돌려 하나의 문자열로 합치거나, 루프를 돌려 출력해야 하는 상황이 종종 필요해진다.

이때 GetString 메서드를 이용하여 원하는 구분자로 연결된 하나의 문자열을 얻어낼 수 있고 처리 속도를 향상시킬 수 있다.

 

다음은 GetString에 대한 문법이다.

<%
     String = recordset.GetString(StringFormat, NumRows, ColumnDelimiter, RowDelimiter, NullExpr)
%>

반환값은 Recordset 개체를 문자열로 변환한 Variant(BSTR) 형식의 값을 반환한다.

이 메서드는 스키마 데이터 대신 행 데이터가 문자열로 저장된다. 그래서 이 문자열을 사용해 Recordset 개체를 다시 열 수 없다. 이 메서드는 RDO(Remote Data Object)의 GetClipString 메서드와 동일하다.

 

매개변수

설명

 StringFormat

 Recordset 개체가 adClipString 형식으로 변환되도록 지정한다.

 adClipString 형식으로 지정하면 행은 RowDelimiter를 사용하여 구분하고,

 열은  ColumnDelimiter를 사용하여 구분하며, Null 값은 NullExpr을 사용하여 구분한다.               

 이들 세가지 매개변수는 adClipString을 사용할 경우에만 유효하다.

 NumRows

 선택사항, Recordset 개체에 들어 있는 변환할 행의 개수를 지정한다.

 NumRows를 지정하지 않거나 Recordset 개체의 전체 행 개수보다 큰 수를 지정하면

 Recordset 개체의 모든 행이 변환된다.

 ColumnDelimiter   

 선택사항, 열 사이에 사용할 열 구분 기호이다. 지정하지 않으면 TAB 문자가 사용된다.

 RowDelimiter

 선택사항, 행 사이에 사용할 행 구분 기호이다. 지정하지 않으면 Carriage Return 문자가 사용된다.   

 NullExpr

 선택사항, Null 값 대신 사용할 식이다. 지정하지 않으면 빈 문자열이 사용된다.

 

간단한 예로 콤마단위로 문자열을 연결하는 예제이다.

<%
Set Rs = objConn.Execute("SELECT text FROM tags WHERE doc_idx=100")
If Rs.EOF Then
     tag_list = ""
Else
     tag_list = Rs.GetString(2, , , ", ", "")
End If
Rs.Close
 
Response.Write "Tags : "& tag_list
%>

여기서 첫번째 매개변수 2는 adClipString 상수 값이다.

 

행과 열의 구분자에 태그를 사용하면 테이블 형태의 출력도 한번에 처리할 수 있다.

<%
Set Rs = objConn.Execute("SELECT title, regdate FROM documents")
IfF Rs.EOF Then
     document_list = ""
Else
     document_list = Rs.GetString(2, 10, "</td><td>", "</td></tr><tr><td>", "</td>&nbsp;<td>")
End If
Rs.Close
%>
<table border=1>
<tr><td><%=document_list%></td></tr>
</table>

 

이처럼 태그를 사용해 한번에 테이블 생성도 손쉽긴 하나 태그문자열이 길고 복잡해진다면 가독성은 좀 떨어질 듯하다.

위의 예제를 실행해보면 알겠지만 맨 마지막줄엔 불필요한 행이 생기기도 한다;;

 

콤마단위의 출력, 간단한 테이블 구조나 링크걸기 등에 적절히 이용하면 좋을 듯 하다.