델파이 5 로 ADO를 이용해서 M$-SQL7 관련 프로그램을 하고 있습니다.
프로그램개발시에는 아무문제도 없는데(델파이가 깔려있는 pc에서는 문제가 없습니다)
사용자(델파이가 깔려있지 않은자리)에게 실행화일을 copy해주고 프로그램을 실행시키면
eof부분에서 계속 아래와 같은 에러가 나는데요...
(DBGrid의 맨 마지막자료에서...
DATA가 없는 Query를 실행했을시...)
"BOF 또는 EOF가 참이거나, 현재 레코드를 삭제했습니다. 요청한 작업에 현재 레코드가 필요합니다."
어떻게해야 하는지요...
실행화일만 Copy를 해서 그런건지 아님 뭔가 꼭 필요한 파일이 있는건지요.
왜 이런 에러가 나오는지 고수님들의 조언부탁드립니다.
> 델파이 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"
이상입니다.
도움이 될지 모르겠네요... ^^&
서초동에서 衍.