**************************** (Options) **************************** Option Public Uselsx "*LSXODBC" **************************** (Declarations) **************************** Dim ss As NotesSession Dim curDb As NotesDatabase Dim curDoc As NotesDocument Dim curAgent As NotesAgent '// ÇöÀç Agent Dim con As ODBCConnection Dim query As ODBCQuery Dim result As ODBCResultSet Dim order As String Const SQL_DNS = "ODBC DNS" Const SQL_ID = "USER ID" Const SQL_PASSWORD = "USER PASSWORD" Const SQL_TABLE_SCHEMA = "dbo" Const SQL_TABLE = "TABLE NAME or PROCEDURE NAME" '//¡Ú ¾Æ·¡ÀÇ ÄÚµå´Â RDB Table°ú °°Àº Çü½ÄÀ̾î¾ß ÇÔ. ( Äڵ帶´Ù Ʋ¸®°Ô ±¸¼ºÇØ¾ß ÇÔ. ) Const SQL_TABLE_FIELD = |a,b,c,d,e,f| '// °á°ú ÇÊµå ¸ñ·Ï Const SQL_TABLE_FIELDTYPE = |STRING,STRING,STRING,INTEGER,INTEGER,STRING| '// °á°ú ÇÊµå ¸ñ·Ï ŸÀÔ Const SQL_TABLE_FIELD_AROUND = |^,^,^,^,^,| '// °á°ú ÇÊµå µÑ·¯½Î±â ¿É¼Ç Dim TableDoc As NotesDocument Dim fieldAround As Variant **************************** Initialize **************************** Sub Initialize On Error Goto ErrorHandle Dim qs As String Dim resultField As String '// °á°ú Set ss = New NotesSession Set curDb = ss.CurrentDatabase Set curAgent = ss.CurrentAgent Set curDoc = ss.DocumentContext qs = curDoc.Query_String_Decoded(0) Print |Content-type: text/xml| Print || Call SetTableDoc( qs ) '// SYBASE Server ¿¬°á If( SQLConnection( SQL_DNS ) = False ) Then Exit Sub If( GetTableInfo(TableDoc.result(0)) = False ) Then Goto ProcessEnd ProcessEnd: con.Disconnect Exit Sub ErrorHandle: Print | error | + Error() + | | + Cstr( Erl() ) + | | Msgbox curDb.Filepath + "/" + curAgent.Name + "::initialize ERROR[" + Cstr( Erl() ) + "] : " + Error() Print "" Print curDb.Filepath + "/" + curAgent.Name + "::initialize ERROR[" + Cstr( Erl() ) + "] : " + Error() Print "" If( con.IsConnected ) Then con.Disconnect End If Exit Sub End Sub **************************** GetQueryType **************************** Function GetQueryType( source As String ) As String %REM ÇÔ¼ö¸í : GetQueryType ÀÎÀÚ : source - Query¿¡ Æ÷ÇԵǴ Çʵå¸í ¹Ýȯ : String - STRING, INTEGER ¸ñÀû : Query¸¦ ±¸¼ºÇÒ¶§ ÀÛÀºµû¿ÈÇ¥(')¸¦ Ãß°¡ÇÏ¿© Query¸¦ ±¸¼ºÇÒÁö¿¡ ´ëÇÑ ¿©ºÎ üũ¸¦ À§ÇÏ¿© ÀÛ¼ºÁ¤º¸ : v1.0 / À̵¿¿Ï / 2006-06-07 %END REM On Error Goto ErrorHandle GetQueryType = "" Dim FieldList As Variant Dim FieldType As Variant Dim index As Integer FieldList = Evaluate(|@Trim( @Explode("| & SQL_TABLE_FIELD & |";",") )|) FieldType = Evaluate(|@Trim( @Explode("| & SQL_TABLE_FIELDTYPE & |";",") )|) index = 0 Forall ufl In FieldList If( source = Cstr( ufl ) ) Then If( Ubound( FieldType ) >= index ) Then GetQueryType = Cstr( FieldType(index) ) Else GetQueryType = "" End If End If index = index + 1 End Forall Exit Function ErrorHandle: Call WriteLog( Err(), curDb.Filepath + "/" + curAgent.Name + "::GetQueryType ERROR[" + Cstr( Erl() ) + "] : " + Error() ) GetQueryType = "" Exit Function End Function **************************** GetTableInfo **************************** Function GetTableInfo( res As String ) As Integer %REM ÇÔ¼ö¸í : GetTableInfo ÀÎÀÚ : res - Query °á°ú ¹Ýȯ : Boolean - Query ó¸® °á°ú - True : Á¤»óó¸® - False : ºñÁ¤»ó Á¾·á ¸ñÀû : Å×À̺íÀÇ Á¤º¸¸¦ °¡Á®¿À±â À§ÇÔ ÀÛ¼ºÁ¤º¸ : v1.0 / À̵¿¿Ï / 2006-05-25/2006-05-26 %END REM On Error Goto ErrorHandle Dim index As Integer Dim rowIndex As Integer Dim whereFlag As Boolean Dim writeData As String whereFlag = False query.SQL = MakeQuery( res ) ' Print || & query.SQL & || ' Exit Function If( query.SQL = "" ) Then Msgbox "Query¸¦ Á¶ÇÕÇÏÁö ¸øÇÏ¿´½À´Ï´Ù." GetTableInfo = False Exit Function End If If Not result.Execute Then If( order = "update" ) Then Print | error Á¤º¸ ±â·Ï¿¡ ½ÇÆÐÇÏ¿´½À´Ï´Ù.(update) | & Erl & | | Exit Function Else Messagebox result.GetExtendedErrorMessage + "/" + result.GetErrorMessage End If GetTableInfo = False Exit Function End If '// °»½Å ÄÚµå 󸮿Ϸá If( order = "update" ) Then Print |°»½Å 󸮰¡ ¿Ï·áµÇ¾ú½À´Ï´Ù.| GetTableInfo = True Exit Function End If result.MaxRows = 14000 If( result.NumRows = 0 ) Then Print "°Ë»öÇÑ °á°ú°¡ ¾ø½À´Ï´Ù." GetTableInfo = False Exit Function End If Print || index = 0 Do result.NextRow Print "" If( result.CurrentRow <> 0 ) Then If( res = "" Or Lcase( res ) = "all" ) Then rowIndex = 1 Forall utdi In TableDoc.GetItemValue( "FieldList" ) If( Trim( result.GetValue( rowIndex ) ) >< "" ) Then writeData = result.GetValue( rowIndex ) While( Asc( Right( writeData, 1 ) ) = 0 Or ( Asc( Right( writeData, 1 ) ) > 126 And Asc( Right( writeData, 1 ) ) < 256 )) writeData = Left( writeData, Len( writeData )-1 ) Wend Print |<| & Cstr( utdi ) & |>| Print Strleft( fieldAround(rowIndex-1), "^" ) Print Trim( writeData ) Print Strright( fieldAround(rowIndex-1), "^" ) Print || Else Print "<" & Cstr( utdi ) & "/>" End If rowIndex = rowIndex + 1 End Forall Else If( Trim( Strrightback( res, " " ) ) <> "" ) Then Print "<" + Strrightback( res, " " ) + ">" + result.GetValue(1) + "" Elseif( Strleft( res, "(" ) <> "" ) Then Print "<" + Strleft( res, "(" ) + ">" + result.GetValue(1) + "" Else Print "<" + res + ">" + result.GetValue(1) + "" End If End If Else Print "Completed" End If Print "" index = index + 1 Loop Until result.IsEndOfData Print || GetTableInfo = True Exit Function ErrorHandle: Call WriteLog( Err(), curDb.Filepath + "/" + curAgent.Name + "::GetTableInfo ERROR[" + Cstr( Erl() ) + "] : " + Error() ) GetTableInfo = False Exit Function End Function **************************** MakeQuery **************************** Function MakeQuery( res As String )As String %REM ÇÔ¼ö¸í : MakeQuery ÀÎÀÚ : res - Query °á°ú ¹Ýȯ : String - Query Á¶ÇÕ °á°ú ¸ñÀû : Å×À̺íÀÇ µ¥ÀÌÅ͸¦ °¡Á®¿À±âÀ§ÇÑ Query Á¶ÇÕ ÀÛ¼ºÁ¤º¸ : v1.0 / À̵¿¿Ï / 2006-05-24 / 2006-05-26 %END REM On Error Goto ErrorHandle Dim returnQuery As String '// Query Dim whereFlag As Boolean '// whereÀý Ãß°¡»óÅ ¿©ºÎ Dim curItemName As String '// Query ±¸¼º Item¸í Dim separator As String '// ÆĶó¸ÞÅÍ°£ ±¸ºÐÀÚ If( Lcase( TableDoc.Order(0) ) = "select" Or Lcase( TableDoc.Order(0) ) = "" ) Then '// Select ±¸¹®ÀÎ °æ¿ì If( res = "" Or Lcase( res ) = "all" ) Then returnQuery = "Select * from " + SQL_TABLE Else returnQuery = "Select " + res + " from " + SQL_TABLE End If Forall utdi In TableDoc.Items curItemName = Lcase( utdi.Name ) '// result, fieldlist, order Çʵå´Â Query¿¡ Æ÷ÇÔµÇÁö ¾ÊÀ½. If( curItemName <> "result" And curItemName <> "fieldlist" And curItemName <> "fieldtype" And curItemName <> "order" And Left( curItemName, 6 ) <> "param-" ) Then '// n_·Î ½ÃÀÛÇÏ´Â Çʵå´Â n_ ´ÙÀ½ StringÀ¸·Î Äõ¸®¸¦ ±¸¼ºÇÔ. If( Left( utdi.Name, 2 ) = "n_" ) Then returnQuery = returnQuery + MakeQueryElement( Rightbp( utdi.Name, Len(utdi.Name)-2 ), utdi.Values(0), False, whereFlag ) Else returnQuery = returnQuery + MakeQueryElement( utdi.Name, utdi.Values(0), True, whereFlag ) End If End If End Forall Elseif( Lcase( TableDoc.Order(0) ) = "update" ) Then '// Update ±¸¹®ÀÎ °æ¿ì returnQuery = TableDoc.Order(0)+ " " + SQL_TABLE For i% = 1 To Cint( TableDoc.GetItemValue( "setItem-i" )(0) ) If( i% > 1 ) Then separator = |, | Else separator = | set | End If returnQuery = returnQuery + separator + TableDoc.GetItemValue( "setItemName-" & Cstr(i%) )(0) + |='| returnQuery = returnQuery + TableDoc.GetItemValue( "setitem-" & Cstr(i%) )(0) + |'| Next For i% = 1 To Cint( TableDoc.GetItemValue( "whereItem-i" )(0) ) If( i% > 1 ) Then separator = | and | Else separator = | where | End If returnQuery = returnQuery + separator + TableDoc.GetItemValue( "whereItemName-" & Cstr(i%) )(0) + | = '| returnQuery = returnQuery + TableDoc.GetItemValue( "whereItem-" & Cstr(i%) )(0) + |'| Next Else '// ÇÁ·Î½ÃÀú È£ÃâÀÏ °æ¿ì returnQuery = TableDoc.Order(0) + " " + SQL_TABLE For i%=1 To Cint( TableDoc.GetItemValue( "param-i" )(0) ) If( i% > 1 ) Then separator = |,'| Else separator = | '| End If returnQuery = returnQuery + separator + TableDoc.GetItemValue( "param-" & Cstr(i%) )(0) + |'| Next End If MakeQuery = returnQuery Exit Function ErrorHandle: Call WriteLog( Err(), curDb.Filepath + "/" + curAgent.Name + "::MakeQuery ERROR[" + Cstr( Erl() ) + "] : " + Error() ) MakeQuery = "" Exit Function End Function **************************** MakeQueryElement **************************** Function MakeQueryElement( itemName As String, source As String, equalOption As Boolean, whereFlag As Boolean )As String %REM ÇÔ¼ö¸í : MakeQueryElement ÀÎÀÚ : itemName - Query Çʵå source - Query ÇÊµå °ª equalOption - Æ÷ÇԵǴ °ªÀ» ãÀ¸·Á¸é True, Æ÷ÇÔµÇÁö ¾Ê´Â °ªÀ» ãÀ¸·Á¸é False whereFlag - where ±¸¹® »ðÀÔ À¯¹« ¹Ýȯ : String - Query Á¶ÇÕ °á°ú ¸ñÀû : Query ºÎºÐ Á¶ÇÕ - 2006-06-07 : Integer¸¦ Query¿¡ Æ÷ÇÔ½ÃÅ°±â À§ÇÏ¿© ±â´É Ãß°¡ ÀÛ¼ºÁ¤º¸ : v1.0 / À̵¿¿Ï / 2006-05-24 / 2006-06-07 %END REM On Error Goto ErrorHandle Dim pluralValue As Variant '// source °ª º¹¼ö½Ã Explode Dim returnQuery As String '// °á°ú ¹Ýȯ°ª Const REF_CALCULATE_BLOCK = " AND " '//Á¶°Ç ºí·°°£ Á¶°Ç Dim valueCompare As String '// µîÈ£, °°À½ ¶Ç´Â °°Áö ¾ÊÀ½ üũ Dim bitCalculator As String '// °°À½ À϶§´Â OR, ´Ù¸§ À϶§´Â AND ¿©¾ß ÇÔ. Dim itemType As String '// Query¿¡ Æ÷Ç﵃ ItemÀÇ ¼Ó¼º(STRING, INTEGER ... ) Dim quotationValue As String '// Query¿¡ Æ÷Ç﵃ ItemÀÇ ¼Ó¼º¿¡ µû¸¥ ÀοëºÎÈ£ If( equalOption ) Then valueCompare = " = " bitCalculator = " OR " Else valueCompare = " <> " bitCalculator = " AND " End If itemType = GetQueryType( itemName ) If( Ucase( itemType ) = "STRING" Or Ucase( itemType ) = "" ) Then quotationValue = "'" Else quotationValue = "" End If If( Trim( source ) <> "" ) Then If( Strleft( source, "," ) <> "" ) Then '// º¹¼ö If( whereFlag ) Then returnQuery = returnQuery + REF_CALCULATE_BLOCK End If pluralValue = Evaluate(|@Unique( @Trim( @Explode("| & source & |";",") ) )|) Forall upv In pluralValue If( whereFlag ) Then If( Cstr( upv ) = Cstr( pluralValue(0) ) ) Then '// ù¹ø° Á¶°Ç°ª If( Left( Cstr( upv ), 1 ) = "[" And Strleft( Cstr( upv ), "]" ) <> "" ) Then '// LIKE¿Í °°Àº ±¸¹®ÀÌ ÀÖ´Â °æ¿ì (ex: [LIKE]AA%) returnQuery = returnQuery + " ( " + itemName + " " + Strleft( Strright( Cstr( upv ) , "[" ), "]" ) + " " + quotationValue + Strright( Cstr( upv ), "]" ) + quotationValue Else returnQuery = returnQuery + " ( " + itemName + valueCompare + quotationValue + Cstr( upv ) + quotationValue End If Else '// µÎ¹ø° ÀÌÈÄ Á¶°Ç°ª If( Left( Cstr( upv ), 1 ) = "[" And Strleft( Cstr( upv ), "]" ) <> "" ) Then '// LIKE¿Í °°Àº ±¸¹®ÀÌ ÀÖ´Â °æ¿ì (ex: [LIKE]AA%) returnQuery = returnQuery + bitCalculator + itemName + " " + Strleft( Strright( Cstr( upv ) , "[" ), "]" ) + " " + quotationValue + Strright( Cstr( upv ), "]" ) + quotationValue Else returnQuery = returnQuery + bitCalculator + itemName + valueCompare + quotationValue + Cstr( upv ) + quotationValue End If End If Else '// whereÀýÀÌ ¾ø´Â °æ¿ì Ãß°¡ If( Left( Cstr( upv ), 1 ) = "[" And Strleft( Cstr( upv ), "]" ) <> "" ) Then '// LIKE¿Í °°Àº ±¸¹®ÀÌ ÀÖ´Â °æ¿ì (ex: [LIKE]AA%) returnQuery = returnQuery + " where ( " + itemName + " " + Strleft( Strright( Cstr( upv ) , "[" ), "]" ) + " " + quotationValue + Strright( Cstr( upv ), "]" ) + quotationValue Else returnQuery = returnQuery + " where ( " + itemName + valueCompare + quotationValue + Cstr( upv ) + quotationValue End If whereFlag = True End If End Forall returnQuery = returnQuery + ")" Else '// ´Ü¼ö If( whereFlag ) Then '// where ÀýÀ» ÀÌ¹Ì »ðÀÔÇÑ °æ¿ì If( Left( source, 1 ) = "[" And Strleft( source, "]" ) <> "") Then '// LIKE¿Í °°Àº ±¸¹®ÀÌ ÀÖ´Â °æ¿ì (ex: [LIKE]AA%) returnQuery = returnQuery + REF_CALCULATE_BLOCK + itemName + " " + Strleft( Strright( source , "[" ), "]" ) + " " + quotationValue + Strright( source, "]" ) + quotationValue Else returnQuery = returnQuery + REF_CALCULATE_BLOCK + itemName + valueCompare + quotationValue + source + quotationValue End If Else '// where ÀýÀÌ ¾ø´Â °æ¿ì Ãß°¡ If( Left( source, 1 ) = "[" And Strleft( source, "]" ) <> "" ) Then '// LIKE¿Í °°Àº ±¸¹®ÀÌ ÀÖ´Â °æ¿ì (ex: [LIKE]AA%) returnQuery = returnQuery + " where " + itemName + " " + Strleft( Strright( source , "[" ), "]" ) + " " + quotationValue + Strright( source, "]" ) + quotationValue Else returnQuery = returnQuery + " where " + itemName + valueCompare + quotationValue + source + quotationValue End If End If End If whereFlag = True End If MakeQueryElement = returnQuery Exit Function ErrorHandle: Call WriteLog( Err(), curDb.Filepath + "/" + curAgent.Name + "::MakeQueryElement ERROR[" + Cstr( Erl() ) + "] : " + Error() ) Print source MakeQueryElement = "" Exit Function End Function **************************** SetTableDoc **************************** Sub SetTableDoc( source As String ) %REM ÇÔ¼ö¸í : SetTableDoc ÀÎÀÚ : source - Query_String_Decoded ¹Ýȯ : - ¸ñÀû : Query_String_Decoded·Î ³Ñ¾î¿Â °ª Áß¿¡¼­ ¿øÇÏ´Â Query¸¦ À߶󳻾î TableDocÀÇ ItemÀ¸·Î »ý¼ºÇÔ. À̸¦ MakeQuery, GetTableInfo ÇÔ¼ö¿¡¼­ »ç¿ëÇÔÀ¸·Î °¢ Äڵ忡 Table Çü½Ä¿¡ ¸Â°Ô²û ÄÚµùÇÏ´Â °ÍÀ» ¹æÁöÇÒ ¼ö ÀÖÀ½. ÀÛ¼ºÁ¤º¸ : v1.0 / À̵¿¿Ï / 2006-05-26 %END REM On Error Goto ErrorHandle Dim FieldList As Variant Dim FieldType As Variant Set TableDoc = New NotesDocument( curDb ) FieldList = Evaluate(|@Trim( @Explode("| & SQL_TABLE_FIELD & |";",") )|) FieldType = Evaluate(|@Trim( @Explode("| & SQL_TABLE_FIELDTYPE & |";",") )|) fieldAround = Evaluate(|@Explode("| & SQL_TABLE_FIELD_AROUND & |";",")|) Forall ufl In FieldList Call TableDoc.ReplaceItemValue( Cstr( ufl ), GetArgumentValue( Cstr( ufl ) & "=", source ) ) Call TableDoc.ReplaceItemValue( "n_" & Cstr( ufl ), GetArgumentValue( Cstr( ufl ) & "!=", source ) ) End Forall Call TableDoc.ReplaceItemValue( "FieldList", FieldList ) '// °á°ú Field ¸ñ·Ï Call TableDoc.ReplaceItemValue( "FieldType", FieldType ) '// °á°ú Field Á¾·ù Call TableDoc.ReplaceItemValue( "result", GetArgumentValue( "result=", source ) ) '// °á°ú Call TableDoc.ReplaceItemValue( "order", GetArgumentValue( "order=", source ) ) '// ¸í·É( select, exec ... ) order = GetArgumentValue( "order=", source ) Call TableDoc.ReplaceItemValue( "param-i", GetArgumentValue( "param-i=", source ) ) '// ÆĶó¸ÞÅÍ ¼ö If( TableDoc.GetItemValue("param-i")(0) <> "" ) Then For i%=1 To Cint( TableDoc.GetItemValue( "param-i" )(0) ) Call TableDoc.ReplaceItemValue( "param-" & Cstr(i%), GetArgumentValue( "param-" & Cstr(i%) & "=", source ) ) Next End If Call TableDoc.ReplaceItemValue( "setItem-i", GetArgumentValue( "set-i=", source ) ) If( TableDoc.GetItemValue("setItem-i")(0) <> "" ) Then For i%=1 To Cint( TableDoc.GetItemValue( "setItem-i" )(0) ) Call TableDoc.ReplaceItemValue( "setItem-" & Cstr(i%), GetArgumentValue( "set-" & Cstr(i%) & "=", source ) ) Call TableDoc.ReplaceItemValue( "setItemName-" & Cstr(i%), GetArgumentValue( "setn-" & Cstr( i%) & "=", source )) Next End If Call TableDoc.ReplaceItemValue( "whereItem-i", GetArgumentValue( "where-i=", source ) ) If( TableDoc.GetItemValue("whereItem-i")(0) <> "" ) Then For i%=1 To Cint( TableDoc.GetItemValue( "whereItem-i" )(0) ) Call TableDoc.ReplaceItemValue( "whereItem-" & Cstr(i%), GetArgumentValue( "where-" & Cstr(i%) & "=", source ) ) Call TableDoc.ReplaceItemValue( "whereItemName-" & Cstr(i%), GetArgumentValue( "wheren-" & Cstr(i%) & "=", source ) ) Next End If Exit Sub ErrorHandle: Call WriteLog( Err(), curDb.Filepath + "/" + curAgent.Name + "::SetTableDoc ERROR[" + Cstr( Erl() ) + "] : " + Error() ) Exit Sub End Sub **************************** SQLConnection **************************** Function SQLConnection( dns As String )As Integer '=========================================================================================== ' ÇÔ ¼ö ¸í : SQLConnection ' ¸ñ Àû : SQL Server Connection ' ¹ö Á¯ : 1.0 ' ¸Å°³ º¯¼ö : dns : DNS (ex: "hits") '=========================================================================================== On Error Goto ErrorHandle Dim status As String Set con = New ODBCConnection Set query = New ODBCQuery Set result = New ODBCResultSet Set query.Connection = con Set result.Query = query status = con.ConnectTo( dns, SQL_ID, SQL_PASSWORD ) If( Ucase( status ) <> "TRUE" ) Then Print | error Á¶È¸Á¤º¸ ¼­¹ö¿¡ ¿¬°áÇÒ ¼ö ¾ø½À´Ï´Ù.( DNS : | + SQL_DNS + | ) °ü¸®ÀÚ¿¡°Ô ¼­¹öÀÇ ODBC ¼³Á¤À» È®ÀÎ ¿äûÀ» ÇϽñ⠹ٶø´Ï´Ù. | & Erl & | | SQLConnection = False Exit Function End If SQLConnection = True Exit Function ErrorHandle: Call WriteLog( Err(), curDb.Filepath + "/" + curAgent.Name + "::SQLConnection ERROR[" + Cstr( Erl() ) + "] : " + Error() ) SQLConnection = False Exit Function End Function **************************** WriteLog **************************** Function WriteLog( ErrorOption As Integer, LogMessage As String ) %REM ÇÔ¼ö¸í : WriteLog ÀÎÀÚ : ErrorOption - ¿À·ùÄÚµå ( 0 : Á¤»ó·Î±×, ÀÌ¿Ü ¿À·ùÄÚµå ) ¹Ýȯ : - ¸ñÀû : ·Î±× DB¿¡ °á°ú ±â·Ï ÀÛ¼ºÁ¤º¸ : v1.0 / À̵¿¿Ï / 2006-04-07 %END REM On Error Goto ErrorHandle Msgbox LogMessage %REM If( ErrorOption = 0 ) Then Call curLog.LogAction( |[| & curDb.FilePath & |] | & LogMessage ) Else Call curLog.LogError( ErrorOption, |[| & curDb.FilePath & |] | & LogMessage ) End If %END REM Exit Function ErrorHandle: Msgbox |[| & curDb.FilePath & |] | & curAgent.Name & |::WriteLog ERROR[| & Cstr( Erl() ) & |] : | & Error() Exit Function End Function **************************** GetArgumentValue **************************** Function GetArgumentValue(div As String, source As String ) '=========================================================================================== ' ÇÔ ¼ö ¸í : GetArgumentValue ' ¸ñ Àû : À¥ ÆĶó¹ÌÅÍ °ªÀ» ¹ÝȯÇÏ´Â ÇÔ¼ö ' ¹ö Á¯ : 1.0 ' ¸Å°³ º¯¼ö : div : ÆĶó¹ÌÅÍ (ex: "sv=") ' source : Àüü¹®ÀÚ¿­ '=========================================================================================== GetArgumentValue = "" Dim pos As Integer Dim valueItem As String pos = Instr( source, div ) If pos > 0 Then valueItem = Mid( source, pos ) If Instr( valueItem , "&" ) > 0Then GetArgumentValue = Mid( valueItem, Instr( valueItem , "=") + 1, Instr( valueItem , "&") - Instr( valueItem , "=")-1) Else GetArgumentValue = Mid( valueItem, Instr( valueItem , "=") + 1) End If End If End Function