여기에 이상한 문제가 있는데 누군가 도와 줄 수 있기를 바랍니다.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
@Lankymart 그게 도움이 되니? –
두 번째 시도에서'RecordCount = 0'을 얻습니다. 그러면 쿼리가 데이터를 반환하지 않습니다. 왜 디버깅해야합니까? 다른 섹션에 대한 두 번째 실행에서'qryUserFields' sql 문에서'Client_Id','Project_Id','Language_Code' 및'Section' 값을 확인 했습니까? – Lankymart
@ Lankymart 물론 내가 갖고있는 모든 것을 읽으면 SQL Management Studio에서 동일한 쿼리를 실행할 때 섹션에 따라 여러 행이 표시되지만 세 번째로는 페이지에서 실행합니다. 나에게 RecordCount = 0을 제공합니다.하지만, 당신의 도움없이 해결했습니다. –