Q&A

  • SQL 에 변수를 넣고 싶어요..
매일 질문만 하네요..죄송 합니다.



var

Sql_Update: string;

Bun_su_int: integer;

begin



if TCheckbox(Sender).Checked = true then

Bun_su_int := 1

Else

Bun_su_int := 0;



Sql_Update := 'UPDATE opt_ion set visible = :N1 WHERE caption = :N2 ';



try

Db1.BeginTrans;

Rs.SQL.Clear;

Rs.SQL.Text := Sql_Update;

Rs.Parameters.ParamValues['N1'] := Bun_su_int;

Rs.Parameters.ParamValues['N2'] := TCheckbox(Sender).caption;

Rs.ExecSQL;

Db1.CommitTrans;

except

Db1.RollBackTrans;

end;



이런 SQL을 Parameters.ParamValues를 쓰지 않는 방법이 없는지..



var

Sql_Update: string;

Bun_su_int: integer;

begin

if TCheckbox(Sender).Checked = true then

Bun_su_int := 1

Else

Bun_su_int := 0;

//숫자

Sql_Update := 'UPDATE opt_ion set visible = ''' +Bun_su_int+ '''

WHERE caption = ''' +TCheckbox(Sender).caption+ '''';

//문자

try

Db1.BeginTrans;

Rs.SQL.Clear;

Rs.SQL.Text := Sql_Update;

Rs.ExecSQL;

Db1.CommitTrans;

except

Db1.RollBackTrans;

end;



이런 방법으로 하니 애러가 나네요.



변수의 값을 인식하지 못하는 경우 같네요.



숫자형,날짜형,문자형등 SQL에서 변수를 쓰는 방법을 설명 해 주세요.



오늘도 답답한 초보가 드립니다.

1  COMMENTS
  • Profile
    성더기 2000.09.22 14:02
    이용 wrote:

    > 매일 질문만 하네요..죄송 합니다.

    >

    > var

    > Sql_Update: string;

    > Bun_su_int: integer;

    > begin

    >

    > if TCheckbox(Sender).Checked = true then

    > Bun_su_int := 1

    > Else

    > Bun_su_int := 0;

    >

    > Sql_Update := 'UPDATE opt_ion set visible = :N1 WHERE caption = :N2 ';

    >

    > try

    > Db1.BeginTrans;

    > Rs.SQL.Clear;

    > Rs.SQL.Text := Sql_Update;

    > Rs.Parameters.ParamValues['N1'] := Bun_su_int;

    > Rs.Parameters.ParamValues['N2'] := TCheckbox(Sender).caption;

    > Rs.ExecSQL;

    > Db1.CommitTrans;

    > except

    > Db1.RollBackTrans;

    > end;

    >

    > 이런 SQL을 Parameters.ParamValues를 쓰지 않는 방법이 없는지..

    >

    > var

    > Sql_Update: string;

    > Bun_su_int: integer;

    > begin

    > if TCheckbox(Sender).Checked = true then

    > Bun_su_int := 1

    > Else

    > Bun_su_int := 0;

    > //숫자

    > Sql_Update := 'UPDATE opt_ion set visible = ''' +Bun_su_int+ '''

    > WHERE caption = ''' +TCheckbox(Sender).caption+ '''';

    > //문자

    ==> 답변..^^;

    먼저 데이터베이스의 visible과 caption 필드의 타입을 알아야합니다.

    visible은 숫자(number)이고 caption은 스트링(alpha)이라면



    Sql_Update := 'UPDATE opt_ion set visible = ' +strtoint(Bun_su_int)+ '

    WHERE caption = ''' +TCheckbox(Sender).caption+ '''';

    //문자

    이렇게 하시면 될겁니다.

    에러가 나는 이유는 문자열에 숫자를 더할려고하니깐 에러가 나는걸겁니다

    거럼..20000

    > try

    > Db1.BeginTrans;

    > Rs.SQL.Clear;

    > Rs.SQL.Text := Sql_Update;

    > Rs.ExecSQL;

    > Db1.CommitTrans;

    > except

    > Db1.RollBackTrans;

    > end;

    >

    > 이런 방법으로 하니 애러가 나네요.

    >

    > 변수의 값을 인식하지 못하는 경우 같네요.

    >

    > 숫자형,날짜형,문자형등 SQL에서 변수를 쓰는 방법을 설명 해 주세요.

    >

    > 오늘도 답답한 초보가 드립니다.