Q&A

  • 이런 메시지는 머죠???
<Debugger Exception Notification>
Project Project1.exe raised exception class EOleException with message
'[Microsoft][ODBC Microsoft Access Driver] 매개 변수가 너무 적습니다. 1이(가)
필요합니다'. Process stopped. Use Step or Run to continue.

제가 우편번호 검색하는 부분을 하는데 이런 에러가 나네요...
like를 써서... 하는데... 매개변수가 적다는 건 멀까요... 테이블이 제대로 안열려서 그런것 같기도하고...
찾기버튼을 눌러서 진행 시키면 에러가 나는군요...

procedure TForm3.Button1Click(Sender: TObject);
var
  tmp:string;
begin
  tmp:=format('select * from "woopyundb" where DONG like "%s%%"', [Edit1.Text]);
  with ADOQuery1 do begin
    Close;
    SQL.Clear;
    SQL.Add(tmp);
    Open;
  end;
end;

위에 있는게 찾기버튼의 이벤트핸들러입니다...
디버깅을 해보면 다 끝나고 end; 부분에 가서 에러 메시지를 띄웁니다...
워낙 초보라 잘 모르겠네요...
2  COMMENTS
  • Profile
    이정수 2005.01.19 05:27
    MDB는 문자열에서 따옴표를 인식하는데 문제가 있는듯 합니다.
    ACCESS에서 쿼리문장을 날리면 잘 되는데, 그것을 델파이에서 실행하면 님과 같은 에러가 많이 나옵니다.
    아무래도
    'select * from "woopyundb" where DONG like "%s%%"'

    'select * from woopyundb where DONG like ''%s%%'''
    으로 바꾸어 보세요
    물론 저 위에는 따옴표가 바뀐거 아시죠?
    쌍따옴표가 아니고, 외따옴표 입니다.
    그런데 엑세스 자체의 쿼리에서는 외따옴표를 사용할 경우에는 에러가 발생합니다.


    그리고 오라클에서 사용하는 % 기호는 엑세스에서는 * 를 사용합니다.
    http://www.delphi.co.kr/zboard/view.php?id=tips&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1723
    [팁/강좌]에 있는 내용입니다. 참조 하세요..

    procedure TForm3.Button1Click(Sender: TObject);
    begin
      with ADOQuery1 do begin
        Close;
        SQL.Clear;
        SQL.Add('Select * from woopyundb Where Dong Like '''+Edit1.Text+'*''');
        Open;
      end;
    end;

    저는 위에 제가 한것처럼 많이 사용합니다.
    그리고 SQL문 사용도중에 SQL문 때문에 에러가 발생하면 델파이의 SQL 모니터를 보시면 어떤 문장에서 에러가 발생했는지 어떻게 발생했는지 쉽게 보실 수 있습니다.

    ---
    이상 허접한 답변이었습니다.

  • Profile
    KKAW 2005.01.19 18:23
    답변 정말 자세하고 정확하군요...
    감사합니다~ ^^