Q&A

  • sql문에서 변수 사용법을 알려주세요(따옴표)
안녕하세요. 델초보자입니다.

sql문에서 검색시에 자꾸에러가 나서 질문을 드립니다.

db는 msaccess 를 사용합니다.







var

vv_yn : string;

vv_dept : string;

begin

if cb_gubun ='결재' then

begin

vv_dept :='i_manayn';

vv_yn := 'y';

end



else if cb_gubun ='미결재' then

begin

vv_dept :='i_manayn';

vv_yn := 'n';

end



else if cb_gubun ='입고' then

begin

vv_dept :='i_saleyn';

vv_yn := 'y';

end



else

begin

vv_dept :='i_saleyn';

vv_yn := 'n';

end;





원하는 sql문은



sql.Add('select * from input');

sql.Add('where i_manayn = 'y'');

또는

sql.Add('where i_manayn = 'n'');

sql.Add('where i_saleyn = 'y'');

sql.Add('where i_saleyn = 'n'');

입니다.





여기서 필드를 변수 필드값을 변수로 사용하려고 합니다.

제코딩은



sql.Add('select * from input');

sql.Add('where '+vv_dept+' = "'+vv_yn+'"');



자꾸 에러가 나는데 (매개변수 일이부족합니다.)

어느부분인지 알수가 없습니다. 도움바랍니다.





2  COMMENTS
  • Profile
    임형호 2001.02.26 21:28
    ParamByName을 사용하는 방법도 있구요. 그럼.. 따옴표 찍을일은 없을테니까요.



    저같은 경우에도 따옴표 찍는 실수를 많이하는데요. 문장이 좀 길어지면... 눈 튀어나오거든요. 물론 정신건강에도 않좋구요.

    그래서 전 폼에다 memo 컴포넌트를 갖다놓구요.



    코딩내용이 아래와 같을때



    sql.add('select * from ....');

    sql.add('where 어쩌구 저쩌구...');

    sql.add('where 어쩌구 저쩌구...');

    sql.open



    먼저 sql.open 부분을 주석처리하구요.

    대신에 memo1.text:=Query1.text; 를 합니다.

    그럼... Query가 실행이 안되니까 에러는 안뜰거구요.

    메모장에는 입력된 SQL문장이 나타나거든요. 보면 따옴표를 잘찍었는지 확인가능할겁니다.













  • Profile
    델 초보맨 2001.02.26 22:38
    임형호 wrote:

    > ParamByName을 사용하는 방법도 있구요. 그럼.. 따옴표 찍을일은 없을테니까요.

    >

    > 저같은 경우에도 따옴표 찍는 실수를 많이하는데요. 문장이 좀 길어지면... 눈 튀어나오거든요. 물론 정신건강에도 않좋구요.

    > 그래서 전 폼에다 memo 컴포넌트를 갖다놓구요.

    >

    > 코딩내용이 아래와 같을때

    >

    > sql.add('select * from ....');

    > sql.add('where 어쩌구 저쩌구...');

    > sql.add('where 어쩌구 저쩌구...');

    > sql.open

    >

    > 먼저 sql.open 부분을 주석처리하구요.

    > 대신에 memo1.text:=Query1.text; 를 합니다.

    > 그럼... Query가 실행이 안되니까 에러는 안뜰거구요.

    > 메모장에는 입력된 SQL문장이 나타나거든요. 보면 따옴표를 잘찍었는지 확인가능할겁니다.

    >

    >

    > 도움되어 감사합니다.

    그리고 처리를 했습니다. "'"찍는 것이 힘들어서 format 함수를 사용했습니다.











    // 확인 구분 검색을 실시함 (결재완료,미결재,입고완료,미입고)

    procedure Tfrminreport.btn_sea_ynClick(Sender: TObject);

    var

    vv_yn : string;

    vv_dept : string;

    begin

    // 입력 에러 확인 실시



    vv_yn := '';

    vv_dept := '';



    if cb_sea_yn.Text='' then

    begin

    showmessage('확인할 상태를 선택하세요');

    cb_sea_yn.Clear;

    exit;

    end;



    if cb_sea_yn.Text = '결재완료' then

    begin

    vv_dept :='i_manayn';

    vv_yn := 'y';

    end



    else if cb_sea_yn.Text = '미결재' then

    begin

    vv_dept :='i_manayn';

    vv_yn := 'n';

    end



    else if cb_sea_yn.Text = '입고완료' then

    begin

    vv_dept :='i_techyn';

    vv_yn := 'y';

    end



    else if cb_sea_yn.Text = '미입고' then

    begin

    vv_dept :='i_techyn';

    vv_yn := 'n';

    end;





    with qry_search do

    begin

    close;

    sql.Clear;

    sql.Add('select * from input');

    sql.Add(Format('where %s =',[vv_dept]));

    sql.Add(Format('''%s''',[vv_yn]));

    Memo1.Text := qry_search.Text; // 확인하는 부분

    open;

    end;

    end;



    >

    >

    >