2014-05-21 1 views
-1

여기에 이상한 문제가 있는데 누군가 도와 줄 수 있기를 바랍니다.ADO RecordSet이 동일한 쿼리를 실행할 때 데이터 유형을 변경합니다.

우리는 기존의 ASP 2008

는 SQL에 연결하려면 SQL 서버에 (우리가 아직 업데이트 할 수있는 기회를 얻었하지 않은 레거시 코드의 많은 큰 응용 프로그램)을 사용하여, 우리는 SQLOLEDB 공급자를 사용하는 ADODB 연결.

나는 내가이 분야의 다른 목록을 반환해야 Field_Section 값에 따라이 함수를 호출하고있어,이 코드

If tblUserFields.State = 1 then tblUserFields.Close 

    qryUserFields = "SELECT Language_Code, Field_Section, Field_Group, Field_Id FROM uvw_UserFields_Display WHERE Client_Id=" & Client_Id & " AND Project_Id=" & Project_Id & " AND Language_Code='" & Language_Code & "' AND Field_Section='" & Section & "' ORDER BY Field_Group, Field_Id;" 

    tblUserFields.Open qryUserFields, conn,3,3 

이 함수 내에서 실행되는 실행하고 있습니다.

그럼 RecordCount <> 0에 따라 페이지에 필드 값을 인쇄할지 여부를 결정합니다.

문제는 처음에는 제대로 작동하지만 두 번째로 (다른 섹션에 대해) 어떤 이유로 든 recorcount = 0을 제공합니다. 그러나은 SQL Management Studio에서 동일한 쿼리를 붙여 넣으면 복사합니다. 두 섹션 모두에 대해 올바른 결과를 얻었습니다.

그래서 내가

Response.Write "<br />" & tblUserFields.RecordCount & "<br />" 
    Response.Write "<br />" & tblUserFields.State & "<br />" 
    Response.Write "<br />" & tblUserFields.BOF & "<br />" 
    Response.Write conn.Provider 
    For i = 0 To tblUserFields.Fields.Count -1 
     Response.Write "Field Name: " & tblUserFields.Fields(i).Name & "<br>" 
     Response.Write "Field Value: " & VarType(tblUserFields(i)) & "<br>" 
    Next 

이 페이지에서 실행되는 제 1 및 제 2 시간을 디버깅이 코드를 사용하기 시작, 결과는 올바른 데이터 유형 괜찮습니다.

같은 코드가 동일한 페이지에서 세 번째로 호출되면 어떤 이유로 모든 데이터 유형이 객체로 변경됩니다. B 조를 들어이

DisplayUserField("B") 

처럼 호출 할 때

DisplayUserField("A") 

그것은 괜찮아요하지만 :

0 

1 

True 
SQLOLEDB.1 
Field Name: Language_Code 
Field Value: 9 
Field Name: Field_Section 
Field Value: 9 
Field Name: Field_Group 
Field Value: 9 
Field Name: Field_Id 
Field Value: 9 
+0

@Lankymart 그게 도움이 되니? –

+0

두 번째 시도에서'RecordCount = 0'을 얻습니다. 그러면 쿼리가 데이터를 반환하지 않습니다. 왜 디버깅해야합니까? 다른 섹션에 대한 두 번째 실행에서'qryUserFields' sql 문에서'Client_Id','Project_Id','Language_Code' 및'Section' 값을 확인 했습니까? – Lankymart

+0

@ Lankymart 물론 내가 갖고있는 모든 것을 읽으면 SQL Management Studio에서 동일한 쿼리를 실행할 때 섹션에 따라 여러 행이 표시되지만 세 번째로는 페이지에서 실행합니다. 나에게 RecordCount = 0을 제공합니다.하지만, 당신의 도움없이 해결했습니다. –

답변

0

문제는 어떤 이유로 기능이 같이

를 호출 할 때이었다 페이지의 섹션에서, 그것은 어떤 이유로 백그라운드에서 vbCrLf를 추가하고있었습니다. HTML을 Response.Write "Section : " & Section & "<br />"을하고 선택하면 내가 쿼리를 실행하기 전에이

Section = Replace(Section, vbCrLf, "") 

을하고있어 예상대로 올바른 결과를 반환하는 기능 지금 캐리지 리턴

을 보았다.

+0

당신은 'AND Field_Section ='B '과 같은 것을 얻었다면 SQL을 출력한다고하셨습니다. 네 질문에서 내가 물었던 것이지. 적어도 당신은 내가 추측 한 원인을 발견했습니다. – Lankymart