안녕하세요!
같은 문제로 몇일을 골머리 앓는군요.
db는 access를 썼고 odbc로 연결됩니다.(db암호도 있고요)
폼이 create될때 odbc에 자동으로 등록하는 코딩을 하려면 어찌 해야 하는지요?
제가 한 코딩(답변에서 베꼈음)으론 bde에 등록은 되지만 odbc가 자동으로
생성되지는 않는군요.
검색해서 답변을 많이 보긴 했지만 영 감이 안오는군요.
procedure Tfrm_cust.FormCreate(Sender: TObject);
var SList:TStringList;
nLoop:Word; // For Loop 에서 사용.
bValue:Boolean; // 참,거짓을 저장한 후 필요시 사용.
ExecDir:String; // 현재 PathNamebegin
begin
// Application.OnHint := DoHint;//간단한 도움말 보여주기
Application.OnException :=Application.OnException;
// AppOnException;//오류발생시 처리
Initialize(SList); //초기화
bValue := False; // Alias가 없는 것으로 초기화...
// 현재 실행되는 프로그램의 Directory Name을 가져온다.
// ExtractFilePath를 쓰기 위해서는 Uses 문에 FileCtrl을 포함해야 한다.
ExecDir := ExtractFilePath(Application.ExeName);
{$I-} //File I/O Checking OFF
// 앞으로 Table을 생성할 장소
if Not DirectoryExists('Data') then MkDir('DATA');
// Session을 쓰기 위해서는 Uses 문에 DBTables을 포함해야 한다.
try
SList := TStringList.Create;
Session.GetAliasNames(SList); //현재 PC의 모든 Alias Name 을 가져오기
if SList.Count < 1 then bValue := False // Alias가 없을시
else
begin
for nLoop := 0 to SList.Count - 1 do // Loop를 수행하면서 'DK000' Alias 이름 검색.
if Trim(SList.Strings[nLoop]) = AliasName then
begin
bValue := True;
break; // For Loop 탈출
end;
end;
finally
SList.Free; // 메모리 해제...
end; // Alias 이름 검색 완료...
if Not bValue then
begin
try
SList := TStringList.Create;
SList.Add('TYPE=MICROSOFT ACCESS DRIVER (*.MDB)');
SLIST.add('batch count=200');
slist.add('blob size=32');
slist.add('blobs to cache=64');
slist.Add('enable bcd=FALSE');
slist.add('enable schema cache=FALSE');
slist.add('maxrows=-1');
slist.add('ODBC DSN=abcd');
slist.add('open mode=READ/WRITE');
slist.add('rowset size=20');
slist.add('schema cache size=8');
slist.add('schema cache time=-1');
slist.add('sqlpassthru mode=SHARED AUTOCOMMIT');
Session.AddAlias(AliasName,'MICROSOFT ACCESS DRIVER (*.MDB)',SList);
Session.SaveConfigFile;
finally
SList.Free; //메모리 해제
end; // Try End
end; // Not bValue End
end;
귀찮으시더라도 초보의 심정을 이해하시고 눈높이를 낯춰주세요.
답변이 올라와도 제 짧은 머리론 이해가 안됩니다.
물론 혼자 풀려는 노력이 부족한건 맞지만 혼자 공부하기엔
너무 갑갑하군요.