Q&A

  • ADO + M$-SQL 7 에서 Eof 문제
델파이 5 로 ADO를 이용해서 M$-SQL7 관련 프로그램을 하고 있습니다.



프로그램개발시에는 아무문제도 없는데(델파이가 깔려있는 pc에서는 문제가 없습니다)

사용자(델파이가 깔려있지 않은자리)에게 실행화일을 copy해주고 프로그램을 실행시키면

eof부분에서 계속 아래와 같은 에러가 나는데요...

(DBGrid의 맨 마지막자료에서...

DATA가 없는 Query를 실행했을시...)



"BOF 또는 EOF가 참이거나, 현재 레코드를 삭제했습니다. 요청한 작업에 현재 레코드가 필요합니다."



어떻게해야 하는지요...

실행화일만 Copy를 해서 그런건지 아님 뭔가 꼭 필요한 파일이 있는건지요.



왜 이런 에러가 나오는지 고수님들의 조언부탁드립니다.

2  COMMENTS
  • Profile
    정대연 2001.02.07 23:32
    델초보 wrote:

    > 델파이 5 로 ADO를 이용해서 M$-SQL7 관련 프로그램을 하고 있습니다.

    >

    > 프로그램개발시에는 아무문제도 없는데(델파이가 깔려있는 pc에서는 문제가 없습니다)

    > 사용자(델파이가 깔려있지 않은자리)에게 실행화일을 copy해주고 프로그램을 실행시키면

    > eof부분에서 계속 아래와 같은 에러가 나는데요...

    > (DBGrid의 맨 마지막자료에서...

    > DATA가 없는 Query를 실행했을시...)

    >

    > "BOF 또는 EOF가 참이거나, 현재 레코드를 삭제했습니다. 요청한 작업에 현재 레코드가 필요합니다."

    >

    > 어떻게해야 하는지요...

    > 실행화일만 Copy를 해서 그런건지 아님 뭔가 꼭 필요한 파일이 있는건지요.

    >

    > 왜 이런 에러가 나오는지 고수님들의 조언부탁드립니다.



    현재 제가 해본 바로는

    M$ 에서 MDAC 를 업데이트되었는데...

    M$-SQL Server 2000 에 대한 배려때문인지 하위버전의 MDAC와 호환이 잘 되지 않는것 같습니다.

    SQL Server 2000 베타버젼부터 써보았던 저로서는 정식버젼이 나오면서 MDAC 2.6 으로 업데이트가 되었고

    "BOF 또는 EOF가 참이거나, 현재 레코드를 삭제했습니다. 요청한 작업에 현재

    레코드가 필요합니다."



    위와 같은 에러가 나왔습니다.

    하지만 위와 같은 에러는 델파이 패치를 하시면 해결이 됩니다.

    (근본적인 해결은 아닌것 같습니다.. 아직까지는)

    ADO 관련 델파이 패치가 두번째까지 나와 있습니다. 두번째까지 패치를 하시고 사용하시면 될 듯합니다.



    2.6을 사용하게 될 경우 패치를 하더라도 마지막 EOF 데이타가 나타납니다.

    그러나 이상하게 에러는 나지 않습니다(패치를 적용하게 될경우)



    while not Eof do begin

    :

    ShowMessage(FieldByName('aaa').AsString);

    Next;

    end;



    저렇게 해서 보면 맨 마지막 자료가 두번나오게 됩니다.



    제 개인적인 생각이지만 이것은 볼랜드에서 패치를 만들때, 근본적인 에러해결이 아니라 땜빵씩(??!!) 해결을 하지 않았나 생각됩니다.





    님의 경우문제는 다음과 갈은 파일을 같이 배포하시면 아마도 될겁니다.

    일단 ODBC가 되었든 SQL서버 직접연결이든 필요한 파일이 있습니다.

    DBNMPNTW.DLL (명명된 파이프일때)

    DBNETLIB.DLL (tcp/ip SQL server 2000 일때)

    dbmssocn.dll (tcp/ip SQL server 7.0일때)

    sqlsrv32.dll

    위의 파일을 같이(물론 system디렉에) 배포하시면 됩니다.



    그리고 다음과 같이 레지스터리를 수정해 주시면 됩니다 (없을경우 추가)



    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClient]

    "SharedMemoryOn"=dword:00000001



    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientConnectTo]

    "DSQUERY"="DBMSSOCN" <-- tcp/ip 일때



    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientDB-Lib]

    "AutoAnsiToOem"="ON"

    "UseIntlSettings"="ON"



    이상입니다.

    도움이 될지 모르겠네요... ^^&



    서초동에서 衍.



  • Profile
    델초보 2001.02.08 06:43
    정대연 wrote:

    > 델초보 wrote:

    > > 델파이 5 로 ADO를 이용해서 M$-SQL7 관련 프로그램을 하고 있습니다.

    > >

    > > 프로그램개발시에는 아무문제도 없는데(델파이가 깔려있는 pc에서는 문제가 없습니다)

    > > 사용자(델파이가 깔려있지 않은자리)에게 실행화일을 copy해주고 프로그램을 실행시키면

    > > eof부분에서 계속 아래와 같은 에러가 나는데요...

    > > (DBGrid의 맨 마지막자료에서...

    > > DATA가 없는 Query를 실행했을시...)

    > >

    > > "BOF 또는 EOF가 참이거나, 현재 레코드를 삭제했습니다. 요청한 작업에 현재 레코드가 필요합니다."

    > >

    > > 어떻게해야 하는지요...

    > > 실행화일만 Copy를 해서 그런건지 아님 뭔가 꼭 필요한 파일이 있는건지요.

    > >

    > > 왜 이런 에러가 나오는지 고수님들의 조언부탁드립니다.

    >

    > 현재 제가 해본 바로는

    > M$ 에서 MDAC 를 업데이트되었는데...

    > M$-SQL Server 2000 에 대한 배려때문인지 하위버전의 MDAC와 호환이 잘 되지 않는것 같습니다.

    > SQL Server 2000 베타버젼부터 써보았던 저로서는 정식버젼이 나오면서 MDAC 2.6 으로 업데이트가 되었고

    > "BOF 또는 EOF가 참이거나, 현재 레코드를 삭제했습니다. 요청한 작업에 현재

    > 레코드가 필요합니다."

    >

    > 위와 같은 에러가 나왔습니다.

    > 하지만 위와 같은 에러는 델파이 패치를 하시면 해결이 됩니다.

    > (근본적인 해결은 아닌것 같습니다.. 아직까지는)

    > ADO 관련 델파이 패치가 두번째까지 나와 있습니다. 두번째까지 패치를 하시고 사용하시면 될 듯합니다.

    >

    > 2.6을 사용하게 될 경우 패치를 하더라도 마지막 EOF 데이타가 나타납니다.

    > 그러나 이상하게 에러는 나지 않습니다(패치를 적용하게 될경우)

    >

    > while not Eof do begin

    > :

    > ShowMessage(FieldByName('aaa').AsString);

    > Next;

    > end;

    >

    > 저렇게 해서 보면 맨 마지막 자료가 두번나오게 됩니다.

    >

    > 제 개인적인 생각이지만 이것은 볼랜드에서 패치를 만들때, 근본적인 에러해결이 아니라 땜빵씩(??!!) 해결을 하지 않았나 생각됩니다.

    >

    >

    > 님의 경우문제는 다음과 갈은 파일을 같이 배포하시면 아마도 될겁니다.

    > 일단 ODBC가 되었든 SQL서버 직접연결이든 필요한 파일이 있습니다.

    > DBNMPNTW.DLL (명명된 파이프일때)

    > DBNETLIB.DLL (tcp/ip SQL server 2000 일때)

    > dbmssocn.dll (tcp/ip SQL server 7.0일때)

    > sqlsrv32.dll

    > 위의 파일을 같이(물론 system디렉에) 배포하시면 됩니다.

    >

    > 그리고 다음과 같이 레지스터리를 수정해 주시면 됩니다 (없을경우 추가)

    >

    > [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClient]

    > "SharedMemoryOn"=dword:00000001

    >

    > [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientConnectTo]

    > "DSQUERY"="DBMSSOCN" <-- tcp/ip 일때

    >

    > [HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServerClientDB-Lib]

    > "AutoAnsiToOem"="ON"

    > "UseIntlSettings"="ON"

    >

    > 이상입니다.

    > 도움이 될지 모르겠네요... ^^&

    >

    > 서초동에서 衍.

    >



    알려주신 내용 정말 감사합니다.

    그런데 이렇게 해주었는데도 계속해서 에러가나는데 어떻게해야할지 모르겠습니다.

    혹시 ADO패치 첫번째것이 어디에 있는지 아시나요?

    • 한원희
      2001.02.08 00:19
      다시 실행했을 때, 이전의 상태를 저장하고 있어야 가능합니다. 이전 상태를 저장하기 위해서 사용하는 ...
    • 박서규
      2001.02.08 00:19
      레간자 wrote: > MainMenu에서 해당 메뉴를 클릭했을때 checked를 true로 해주었는데요.. > 프로그램을 ...
    • 문청
    • 2001.02.08 00:02
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 정대준
    • 2001.02.07 23:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 나무..
      2001.02.08 03:50
      Bookmark를 쓰세염... 델파이 헬프에 보믄 예제 나오니까.. 쓰심 될껍니다.. 그리고 음영, 칼라.. 고거는...
    • 공대규
      2001.02.07 23:54
      해당 테이블과 같은 구조로 temporary table을 하나 만들어 항상 잔액만 갱신해서 저장하면 되지 않을까요?...
    • 진현
    • 2001.02.07 23:25
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델초보
    • 2001.02.07 23:17
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 뿌요
      2001.02.08 04:23
      주query를 database의 explore에서 실행해보구 실행이 되면 쿼리자체는 문제없는거구.. 그때는 query를 op...
    • 아폴론
      2001.02.08 02:30
      델초보 wrote: > query컴포넌트, dbgrid, dbedit를 사용한 폼입니다.. > 하나의 폼이 하나의 exe로 되어 ...
    • 공대규
      2001.02.07 23:57
      query 날리는 부분이 동시에 여러개 인 것 같은데, multi-thread 로 만드는 게 죽지 않는 방법인 것 같습니...
    • 타락천사
      2001.02.08 00:34
      안녕하세여..타락임다..^^ 델파이에서도 대부분의 WinAPI를 쓸수 있습니다... 같은 이름이나 비슷한 ...
    • 조규춘
      2001.02.08 00:11
      루단스 wrote: > 델파이 기본소켓을이용해서 > 문자채팅을 하는데.. > edit컴포에서 엔터치면 소켓에 문...
    • 김명하
      2001.05.16 23:10
      잘못했는지 모르겠지만, copy해서 해봤는데, 여전히 소리가 납니다. 좀 더 자세히 설명해 주시면 고맙겠...
    • 클마스
    • 2001.02.07 21:38
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 윤광석
      2001.02.07 22:15
      클마스 wrote: > 폼 위의 콤포넌트들의 속성을 한번에 바꾸고 싶은데 > > 예를들어 폼위의 콤포넌트들...
    • 델초보
    • 2001.02.07 21:11
    • 2 COMMENTS
    • /
    • 1 LIKES
    • 정대연
      2001.02.07 23:32
      델초보 wrote: > 델파이 5 로 ADO를 이용해서 M$-SQL7 관련 프로그램을 하고 있습니다. > > 프로그램개...
    • 델초보
      2001.02.08 06:43
      정대연 wrote: > 델초보 wrote: > > 델파이 5 로 ADO를 이용해서 M$-SQL7 관련 프로그램을 하고 있습니다...
    • 델초보
    • 2001.02.07 19:58
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 까마귀
      2001.02.07 20:19
      델초보 wrote: > DBGrid에서 저장을 하면 저장한 data가 맨 아래로 내려가는데요 > 입력한 자리에 그대로...
    • 델초보
      2001.02.07 20:59
      까마귀 wrote: > 델초보 wrote: > > DBGrid에서 저장을 하면 저장한 data가 맨 아래로 내려가는데요 > >...
    • 나무..
      2001.02.08 04:00
      insert 낑겨 넣기, append 갖다 붙이치기..임다.. 근데 insert 해두, index가 업슴 끝에 보이기두 하더군...
    • 델초보
      2001.02.08 04:18
      나무.. wrote: > insert 낑겨 넣기, > append 갖다 붙이치기..임다.. > 근데 insert 해두, index가 업슴...
    • 최석기
      2001.02.07 20:01
      key Violation이ㅏ 발생하는 경우는 제 경우에는 프라이머리 키로 잡혀 있는 필드에 중복 된 값을 삽입했을...
    • hyo
      2001.02.07 20:06
      최석기 Wrote: > key Violation이ㅏ 발생하는 경우는 제 경우에는 프라이머리 키로 잡혀 있는 필드에 중복...
    • 초보
    • 2001.02.07 17:56
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2001.02.07 19:08
      메모리 접근 에러가 나는 것이 꼭 쓰레드 때문은 아니라고 생각되는군요. 대부분이 잘못된 참조나, 포인터...
    • [질문]
    • 2001.02.07 10:07
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 빙구
    • 2001.02.07 06:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 몰러
      2001.02.07 18:01
      빙구 wrote: > 쓰레드에서 create한후, resume만 시키면 자꾸 에러가 납니다. > 메모리접근에러가 자꾸 ...