Q&A

  • 초보적 sql이요..
라디오그룹에 세개의 아이템(Cust_No,Name,Phone)을 넣구요

Edit1.Text를 넘겨받아서 쿼리를 실행시키려고 하니

에러가 생깁니다..



에러내용인즉



General sql error

Token unknown -line 2, char - 1

'+sql+''

이라는데요..



아래는 검색버튼의 내용입니다.

procedure TForm2.Button1Click(Sender: TObject);

var

Sql : TStringList;

begin

initialize(SQL);

try

SQL := TStringList.Create;

with DM.Query1 do

begin

Close;

SQL.Clear;

SQL.Add('Select * From SJCust');

SQL.Add('''+Sql+''');



Case RadioGroup1.ItemIndex of

0 : Sql.Add('where Cust_No = "'+Edit1.Text+'"');

1 : Sql.Add('where Name like "%'+Edit1.Text+'%"');

2 : Sql.Add('where Phone like "%'+Edit1.Text+'%"');

end;

open;

end;

Finally

SQL.Free;

end;

Finalize(SQL);

end;



2  COMMENTS
  • Profile
    박홍석 1999.04.21 09:20
    강지영 wrote:

    > 라디오그룹에 세개의 아이템(Cust_No,Name,Phone)을 넣구요

    > Edit1.Text를 넘겨받아서 쿼리를 실행시키려고 하니

    > 에러가 생깁니다..

    >

    > 에러내용인즉

    >

    > General sql error

    > Token unknown -line 2, char - 1

    > '+sql+''

    > 이라는데요..

    >

    > 아래는 검색버튼의 내용입니다.

    > procedure TForm2.Button1Click(Sender: TObject);

    > var

    > Sql : TStringList;

    > begin

    > initialize(SQL);

    > try

    > SQL := TStringList.Create;

    > with DM.Query1 do

    > begin

    > Close;

    > SQL.Clear;

    > SQL.Add('Select * From SJCust');

    > SQL.Add('''+Sql+''');

    >

    > Case RadioGroup1.ItemIndex of

    > 0 : Sql.Add('where Cust_No = "'+Edit1.Text+'"');

    > 1 : Sql.Add('where Name like "%'+Edit1.Text+'%"');

    > 2 : Sql.Add('where Phone like "%'+Edit1.Text+'%"');

    > end;

    > open;

    > end;

    > Finally

    > SQL.Free;

    > end;

    > Finalize(SQL);

    > end;

    >



    안녕하세요. 박홍석입니다.

    소스를 아래처럼 해보시죠.



    var

    str : string;



    SQL.Add('Select * From SJCust');

    SQL.Add(str);

    Case RadioGroup1.ItemIndex of

    0 : str := 'where Cust_No = "'+Edit1.Text+'"';

    1 : str := 'where Name like "%'+Edit1.Text+'%"';

    2 : str := 'where Phone like "%'+Edit1.Text+'%"';

    end;



  • Profile
    강지영 1999.04.22 20:47
    박홍석 wrote:

    > 강지영 wrote:

    > > 라디오그룹에 세개의 아이템(Cust_No,Name,Phone)을 넣구요

    > > Edit1.Text를 넘겨받아서 쿼리를 실행시키려고 하니

    > > 에러가 생깁니다..

    > >

    > > 에러내용인즉

    > >

    > > General sql error

    > > Token unknown -line 2, char - 1

    > > '+sql+''

    > > 이라는데요..

    > >

    > > 아래는 검색버튼의 내용입니다.

    > > procedure TForm2.Button1Click(Sender: TObject);

    > > var

    > > Sql : TStringList;

    > > begin

    > > initialize(SQL);

    > > try

    > > SQL := TStringList.Create;

    > > with DM.Query1 do

    > > begin

    > > Close;

    > > SQL.Clear;

    > > SQL.Add('Select * From SJCust');

    > > SQL.Add('''+Sql+''');

    > >

    > > Case RadioGroup1.ItemIndex of

    > > 0 : Sql.Add('where Cust_No = "'+Edit1.Text+'"');

    > > 1 : Sql.Add('where Name like "%'+Edit1.Text+'%"');

    > > 2 : Sql.Add('where Phone like "%'+Edit1.Text+'%"');

    > > end;

    > > open;

    > > end;

    > > Finally

    > > SQL.Free;

    > > end;

    > > Finalize(SQL);

    > > end;

    > >

    >

    > 안녕하세요. 박홍석입니다.

    > 소스를 아래처럼 해보시죠.

    >

    > var

    > str : string;

    >

    > SQL.Add('Select * From SJCust');

    > SQL.Add(str);

    > Case RadioGroup1.ItemIndex of

    > 0 : str := 'where Cust_No = "'+Edit1.Text+'"';

    > 1 : str := 'where Name like "%'+Edit1.Text+'%"';

    > 2 : str := 'where Phone like "%'+Edit1.Text+'%"';

    > end;

    >



    음.. 처음엔 형석님처럼 코딩을 했는데

    에러가 나서 TStringList로 고친것이었거든요..

    그래서 또 다시 고쳐봤지요. 파라메터로 넘겨주도록이요.. 그랬더니 실행이 잘 되었습니다.



    0 : str := 'where Cust_No = "'+Edit1.Text+'"';

    1 : str := 'where Name like "%'+Edit1.Text+'%"';



    => 0 : begin

    SQL.Add('Where Cust_No =:N1');

    ParamByName('N1').AsInteger := StrToInt(Edit1.Text);

    end;

    1 : begin

    SQL.Add('Where Name =:N2');

    ParamByName('N2').AsString := '%'+Edit1.Text+'%';

    end;



    그런데 아직도 한가지 궁금한 점은 if문에서

    실행을 할때는 파라메터로 넘겨주지 않고

    if RadioBox1.itemIndex = 0 then

    SQL.Add('where Cust_No = "'+Edit1.Text+'"')라고 해도 실행이 잘 되었거든요.

    차이점이 무엇일까요..