MySQL 데이터베이스에 대해 레코드 집합을 만들고 열거 나 연결을 끊습니다. 하나의 쿼리에 대해 올바르게 작동하지만 데이터베이스에 행이있는 다른 쿼리에 대해 0 레코드를 반환합니다. 작동하는 곳에서는 레코드 집합에서 레코드를 삭제할 수 있습니다. 레코드를 반환VB6 ADO 연결이 끊긴 레코드 집합은 레코드를 반환하지 않습니다.
쿼리 :
sql = "select convert(v.wonotes using UTF8) as WonData, v.wo_cat_id, v.id As wo_desc_id, v.line_no as line_no, " & _
" v.wo_id as wo_id, v.prop_id as prop_id, convert(v.description using UTF8) as description, v.cat_id as cat_id, " & _
" v.completion_date as completion_date from vw_property_wo_desc v " & _
" where v.wo_cat_id= 6 and **(v.wo_status = 'completed' or v.wo_status = 'approved')** " & _
" and v.wonotes is not null and v.wonotes<> '' "
레코드를 반환하지 않는 쿼리
sql = "select convert(v.wonotes using UTF8) as WonData, v.wo_cat_id, v.id As wo_desc_id, v.line_no as line_no, " & _
" v.wo_id as wo_id, v.prop_id as prop_id, convert(v.description using UTF8) as description, v.cat_id as cat_id, " & _
" v.completion_date as completion_date from vw_property_wo_desc v " & _
" where v.wo_cat_id= 6 and **v.wo_status = 'unassigned'** " & _
" and v.wonotes is not null and v.wonotes<> '' "
다른 변화가 없다.
커서 유형을 adOpenDynamic으로 변경하면 쿼리에서 레코드를 반환하지만 연결을 끊을 수 없습니다. 이는 데이터베이스에 해당 쿼리를 만족하는 레코드가 있음을 증명하기위한 것입니다. 연결이 끊긴 된 레코드에 대한
코드 : 나는 아이디어가 부족했다
With rsToUse
If .State = adStateOpen Then .Close
.ActiveConnection = GetConnection
.Source = sql
.CursorLocation = adUseClient
.CursorType = adOpenForwardOnly
.LockType = adLockBatchOptimistic
.Open
If .EOF Then
.Close
Exit Function
End If
.ActiveConnection = Nothing
End With
이, 도와주세요.
나는 당신이 레코드를 열었다가 연결을 해제했다는 말을하는 것 같습니다. 정적 커서 유형을 사용해 보셨습니까? – Bob77
@BobRiemersma : 질문을 올바른 텍스트로 업데이트했습니다. 예, 정적으로 시도했지만 레코드를 반환하지 않습니다. Cursorside를 Client로 설정하면 레코드 반환이 중지됩니다. 서버로 설정하면 레코드가 리턴됩니다. – Shrieks
또 하나의 관찰 - cursortype을 adForwardOnly와 serverside로 설정하면 BLOB 필드에 null이 생기기 시작합니다. 정적 사용은 작동하는 것처럼 보입니다. – Shrieks