VB6 프로그래밍에 익숙하지 않지만 마스터가 아닙니다. 잘만되면 누군가가 함수에서 반환 된 int 변수를 설정하려고 시도 할 때받는 형식 불일치 오류와 관련하여 질문에 대한 도움을받을 수 있기를 바랍니다.VB6 : 런타임 오류 '13': int로 설정할 때 형식이 일치하지 않습니다.
내가 설정하는 데 노력하고있어 정수로 정의된다:
Global AICROSSDOCKStatus As Integer
지금은 내가 통해 강화했습니다 (13)
AICROSSDOCKStatus = ProcessQuery(iocode, pb, AICROSSDOCBOLFN, "")
런타임 오류를 얻을이 전화를하려고 할 때 줄 프로그램 줄 디버깅. ProcessQuery 함수는 예상 된 정수를 가져오고 반환하지만 AICROSSDOCKStatus에 할당 할 때 실패합니다.
또한 동일한 결과로 ProcessQuery에 대한 CInt() 작업도 시도해 보았습니다.
누구에게 내가 시도 할 수있는 제안이 있습니까?
편집
: 여기 편집 2Function ProcessQuery(icode As Integer, pb As ADODB.Recordset, TableName As String, sql$) As Integer
ProcessQuery
의 정의입니다 :이이 방식으로 이루어졌다 내가 왜 당신을 말할 수 없었다. 나는 코드베이스를 물려 받았다. 로컬로 정의 된 정수 먼저, 다음 로컬 INT에 AICROSSDOCKStatus를 할당 지정 : 이궁 ...
Function ProcessQuery(icode As Integer, pb As ADODB.Recordset, TableName As String, sql$) As Integer
ProcessQuery = ProcessQuery1(icode, pb, TableName, sql$)
End Function
Function ProcessQuery1(icode As Integer, pb As ADODB.Recordset, TableName As String, sql$) As Integer
''THIS IS THE ORIGINAL SQL CALL ROUTINE!
Dim STATUS As Integer
On Error GoTo ProcessSQLError
STATUS = 0
Select Case icode
Case BCLOSE
If pb.State 0 Then
pb.Close
End If
Set pb = Nothing
STATUS = 3
Case BOPEN
STATUS = 9
Set pb = New ADODB.Recordset
Case BOPENRO
STATUS = 9
Set pb = New ADODB.Recordset
Case BGETEQUAL, BGETEQUAL + S_NOWAIT_LOCK, BGETGREATEROREQUAL, BGETGREATEROREQUAL + S_NOWAIT_LOCK
If pb.State 0 Then
pb.Close
''Set pb = Nothing
''Set pb = New ADODB.Recordset
End If
pb.Open sql$, MISCO_SQL_DB, adOpenDynamic, adLockOptimistic
If Not pb.EOF Then
pb.MoveFirst
Else
STATUS = 9
End If
Case BGET_LE, BGET_LE + S_NOWAIT_LOCK
If pb.State 0 Then
pb.Close
End If
pb.Open sql$, MISCO_SQL_DB, adOpenDynamic, adLockOptimistic
If Not pb.BOF Then
pb.MoveLast
Else
STATUS = 9
End If
Case BGETFIRST, BGETFIRST + S_NOWAIT_LOCK
If pb.State 0 Then pb.Close
sql = "select * from " + TableName
If InStr(1, gblOrderBy, "ORDER BY") > 0 Then
sql = sql + gblOrderBy
Else
sql = sql + " ORDER BY " + gblOrderBy
End If
gblOrderBy = ""
pb.Open sql$, MISCO_SQL_DB, adOpenDynamic, adLockOptimistic
If Not pb.EOF Then
pb.MoveFirst
End If
Case BGETLAST, BGETLAST + S_NOWAIT_LOCK
If pb.State 0 Then
pb.Close
End If
sql = "select * from " + TableName
If InStr(1, gblOrderBy, "ORDER BY") > 0 Then
sql = sql + gblOrderBy
Else
sql = sql + " ORDER BY " + gblOrderBy
End If
gblOrderBy = ""
pb.Open sql$, MISCO_SQL_DB, adOpenDynamic, adLockOptimistic
If Not pb.EOF Then
pb.MoveFirst
pb.MoveLast
End If
Case BGETNEXT, BGETNEXT + S_NOWAIT_LOCK: pb.MoveNext
Case BGETPREVIOUS, BGETPREVIOUS + S_NOWAIT_LOCK: pb.MovePrevious
Case B_UNLOCK
''need to add code here
Case BINSERT
If pb.State = 0 Then
pb.Open TableName, MISCO_SQL_DB, adOpenDynamic, adLockOptimistic
End If
Case BDELETE
STATUS = 8
pb.Delete
Case Else
STATUS = 1
MsgBox "STOP: UNDEFINDED PROCEDURE" + Str$(icode)
End Select
If STATUS = 0 Then
If pb.EOF Or pb.BOF Then STATUS = 9
End If
ProcessQuery1 = STATUS
Exit Function
ProcessSQLError:
MsgBox TableName + ": " + Error(Err), vbCritical, "Error "
ProcessQuery1 = 9
End Function
ProcessQuery의 정의를 게시 할 수 있습니까? –
서명이 아닌 ProcessQuery의 전체 코드를 게시 할 수 있습니까? – MarkJ
와우. 어떤 사람들은 유지 보수 프로그래머가 살고있는 곳을 알고있는 폭력적인 정신병자 인 경우를 지정합니다. 다른 사람들은 관리자를 폭력적인 정신병자로 변화시키는 코드를 작성합니다. ProcessQuery1은 두 번째 학교의 제품입니다. – MarkJ