Q&A

  • 델파이6에서 mdb 직접 오픈하는 방법 좀 알려주세요?
델파이6에서 mdb를 열기위해 OLE DB Provider for Microsoft Directory Services를 사용하여 아래와 같이
하려고 하는데 ADOQuery1의 sql.text에서 violation이 나는데 해결방법 좀 알려주세요.
(ODBC를 사용하지 않고 VB의 DAO처럼 오픈하려고 Microsoft Jet4.0 OLE DB Provider를 사용하면 user id에
걸려 안되어 아래와 같이 함)

  try
    with ADOConnection1 do
    begin
      ConnectionString := 'Provider=ADsDSOObject;Password=;Encrypt Password=False;Data Source=c:\amis\amis.mdb;Mode=ReadWrite;Bind Flags=0;ADSI Flag=-2147483648';
      LoginPrompt := False;
      Connected := True;
    end;
  except
    Application.Terminate;
    exit;
    raise;
  end;
//위는 실행하는 것 같음

  with ADOQuery1 do
  begin
    close;
    sql.Text := 'select 1 from mailpost where status= 0 and to_type=0 and to_id= :to_id'
      + ' order by regdate desc';
    Parameters.ParamByName('to_id').Value := gv_staff_id;
    open;
  end;
  if ADOQuery1.Fields[0].Value = 1 then
  begin
    showmessage('ok');
  end;
2  COMMENTS
  • Profile
    [勳]후니 2004.04.21 07:00
       DBConStr  := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '
                  + GetCurrentDir + '\MACTION.mdb;Persist Security Info=False;'
                  + 'jet oledb:database Password=tlwkdwhcl';

    전에 제가 프로젝트 했던 내용중에서 복사해왔습니다.

    User id부분이 걸린다고 하셨는데... 전 그런 경우 없었습니다.

    mdb가 비밀 번호가 걸려있던거라 password만 설정해줬었는데..

    원하는 답이 아니시겠지만... 참고하세요..

  • Profile
    신철우 2004.05.03 18:14
    잘 해결하였습니다. 감사합니다.
    mdb에서는 ADOQuery에서 execute도 EXecSQL 바꿔야 하는군요.
    또한 SQL문에서 MSSQL과 다른 것이 많이 있네요.
    substring을 mid로 바꿔야 한다든지, case문 실행이 안된다는지 등등