얼마 전 프로젝트 진행 중에 다른 데이터베이스에서 데이터를 동적으로 로드해야 할 때 데이터 소스에 문제가 발생했습니다. 물론 ADOQUERY와 연결할 수 없는 DBF 테이블(패치 버전은 다운로드되지 않았지만 나중에 발생했습니다.) 연결 처리를 수행하려면 사용자가 ODBC를 삭제할 가능성을 제거하기 위해 ODBC를 동적으로 설정해야 합니다. 아래에서는 SQLSERVER 및 DBF를 생성하는 명령문을 작성하겠습니다. 공유할 테이블(물론 SQLSERVER는 ADO 상태에서 생성될 필요가 없습니다).
SQLConfigDataSource(hwndParent: 정수; fRequest: 정수;lpszDriverString: 문자열; lpszAttributes: 문자열): 정수;
호출 상태에서 사용:
함수 SQLConfigDataSource(hwndParent: 정수; fRequest: 정수;lpszDriverString: 문자열; lpszAttributes: 문자열): 정수;stdcall;외부 'ODBCCP32.DLL';
SQLSERVER ODBC 설정:
SQLConfigDataSource(0, ODBC_ADD_SYS_DSN,'SQL 서버','DSN=Record_ODBC'+ chr(0) +'서버=(로컬)'+ chr(0) +'데이터베이스=마스터'+ chr(0) +'설명=DragonPC SQLServer ODBC 소스'+ chr(0));
{DSN: ODBC 데이터 소스 이름입니다.
서버: 데이터베이스 서버의 이름입니다. 로컬 컴퓨터에 설치된 데이터베이스를 참조하려면 (local)을 사용하세요. 참고: 최신 SQL Server 2000은 여러 SQL Server 서비스를 실행하는 한 대의 컴퓨터를 지원합니다. 이때 SqlSever의 InstanceName을 지정해야 합니다.
주소: SQL Server 서버의 네트워크 IP 주소를 지정합니다.
데이터베이스: 기본 데이터베이스 이름을 지정합니다.
언어: 기본 언어를 지정합니다.
설명: 비고 정보입니다. }
DBF 테이블 ODBC 생성:
SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, 'Microsoft Visual FoxPRO 드라이버' + CHR(0), 'dsn=SourceTable' + CHR(0) + 'BackgroundFetch=예' + CHR(0) + '설명=연결 설명' + CHR (0) + '독점=아니요' + CHR(0) +sourcedbstr + CHR(0) +'소스 유형=DBF');
DBF 테이블을 생성하고 디버깅하는 데 시간이 오래 걸린다는 점만 빼고는 모두 동일합니다. 작성하느라 시간을 낭비하지 않으셨으면 좋겠습니다.
참고: 위 내용은 유사한 문제가 발생한 초보자를 위한 참고용일 뿐입니다.