* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Windows XP |
|
CUBRID 2008 R4.1 (8.4.1.3024) (32bit release build for linux_gnu) (Jun 7 2012 22:02:29) |
|
CUBRID Manager 2014.11 빌드 0651 (32bit) |
|
VB6 . ADO |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
http://www.cubrid.com/zbxe/bbs_developer73_tutorial/24682
상기 기술문서의 예제를 그대로 실행하였으나, 문서상의 페이지 5페이지의 2번째 줄
adoRset.Update
줄에서 오류가 발생합니다.
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No workd was done.
큐브리드에서는 VB6을 이용하여 이미지 저장할 방법이 전혀 없는건가요?
안녕하세요. 큐브리드를 이용해 주셔서 감사합니다.
사내에서 OLE DB Driver에서 통해 링크의 소스코드를 이용하여 테스트를 수행한 결과 동일한 에러가 발생하는 것을 확인하였습니다.
OLEDB 드라이버에서 ADODB 객체와 연동하는 부분에서 에러가 발생하는 것 같으니 ODBC 드라이버를 통해 VB6과 연동을 부탁 드립니다.
연동 방법은 다음 링크를 참고하시면 됩니다.
VB에서 CUBRID ODBC/OLEDB 사용하는 방법 및 샘플 코드
추가로 bit varying을 file로 쓰는 함수(BlobToFile)가 정상적으로 동작하지 않음을 확인하였습니다.
bit varying을 file로 쓰는 새 함수를 아래 절차대로 추가하신 뒤 확인해보시기 바랍니다.
1. 프로젝트에 추가했던 module 맨 아래에 다음 함수를 추가
Sub MyBlobToFile(fld As ADODB.Field, fileName As String, _
Optional chunkSize As Long = 8192)
Dim fnum As Integer, bytesLeft As Long, bytes As Long
Dim tmp() As Byte
'만약, 필드가 GetChunk를 지원하지 않아서 에러가 발생할 경우
If (fld.Attributes And adFldLong) = 0 Then
Err.Raise 1001, , "Filed doesn't support the GetChunk method."
End If
'파일 열기; 만약 필요할 경우 처음에 지우기
'만약 파일이 이미 존재한다면 지우고 새로 만들기
If Dir$(fileName) <> "" Then Kill fileName
fnum = FreeFile
Open fileName For Binary As fnum
'필드의 내용을 읽어서 파일에 데이터 쓰기
bytesLeft = fld.ActualSize
Do While bytesLeft
bytes = bytesLeft
If bytes > chunkSize Then bytes = chunkSize
tmp = fld.GetChunk(bytes)
Put #fnum, , tmp
bytesLeft = bytesLeft - bytes
Loop
Close #fnum
End Sub
2. cmdSave_Click() 함수에서 BlobToFile 함수를 호출하는 부분을 다음과 같이 수정
MyBlobToFile adoRset!photo, "C:photo1.jpg"
MyBlobToFile adoRset!remark, "C:application1.log"
감사합니다.