Q&A

  • INSERT 문장 에러입니다....
procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);

var

sqls: string;

begin

sqls := 'INSERT INTO Rgte_table( ' + Nam +' ) ' +' values ('+''''+tim+''''+')';



with rgteQuery do

begin

SQL.Clear;

SQL.Add(sqls);

ExecSQL;

end;

.........

위 프로그램에서 인써트문 신텍스 에러가 뜹니다.

Nam 은 넘겨받은 필드 명이구요

tim 은 삽입할 값입니다.

도와 주세요

아래와 같이 하면 필드를 인식하지 못합니다.



sqls := 'INSERT INTO Rgte_table( ' + ''''+ Nam + ''''+ ' ) '

+' values ('+''''+tim+''''+')';



with rgteQuery do

begin

SQL.Clear;

SQL.Add(sqls);

ExecSQL;

end;

4  COMMENTS
  • Profile
    김주석 2000.01.15 02:23
    초보 wrote:

    > procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);

    > var

    > sqls: string;

    > begin

    > sqls := 'INSERT INTO Rgte_table( ' + Nam +' ) ' +' values ('+''''+tim+''''+')';

    >

    > with rgteQuery do

    > begin

    > SQL.Clear;

    > SQL.Add(sqls);

    > ExecSQL;

    > end;

    > .........

    > 위 프로그램에서 인써트문 신텍스 에러가 뜹니다.

    > Nam 은 넘겨받은 필드 명이구요

    > tim 은 삽입할 값입니다.

    > 도와 주세요

    > 아래와 같이 하면 필드를 인식하지 못합니다.

    >

    > sqls := 'INSERT INTO Rgte_table( ' + ''''+ Nam + ''''+ ' ) '

    > +' values ('+''''+tim+''''+')';

    >

    > with rgteQuery do

    > begin

    > SQL.Clear;

    > SQL.Add(sqls);

    > ExecSQL;

    > end;



    하나의 필드명과 필드값이 넘어올리가 없겠죠??

    위의 소스코드가 중간에 편집을 안하셨다면요...



    일반적인 파라미터를 갖는 sql insert문은 다음의 구조를 가지고 있습니다.

    INSERT INTO TABLE_NAME( FIELD_1 , FIELD_2 , FIELD_3)

    VALUES ( :VAL_1 , :VAL_2 , :VAL_3 )

    따라서 nam , tim에는 위와 같이

    nam => 'FIELD_1 , FIELD_2 , FIELD_3'

    tim => 'VAL_1 , VAL_2 , VAL_3'

    를 갖는 형태가 아닐까 하는 생각이 드는군요. 그렇다면 아래와 같이 이용해야

    하지 않을까 생각이 드는군요.



    while Pos(tim , ',') do

    begin

    // 이하에선 필드갯수만큼의 문자열로 나누어야 겠죠??

    end ;

    > with rgteQuery do

    > begin

    Close ;

    > SQL.Clear;

    > SQL.Add('INSERT INTO Rgte_table(' + nam + ')' );

    > SQL.Add('VALUES ('+':PA_VAL1 , :PA_VAL2 , :PA_VAL3 + ')' );

    Parambyname('PA_VAL1').AsString := S_VAL1 ;

    Parambyname('PA_VAL2').AsString := S_VAL2 ;

    Parambyname('PA_VAL3').AsString := S_VAL3 ;

    > ExecSQL;

    > end;





  • Profile
    mute 2000.01.14 23:45
    초보 wrote:

    > procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);

    > var

    > sqls: string;

    > begin

    > sqls := 'INSERT INTO Rgte_table( ' + Nam +' ) ' +' values ('+''''+tim+''''+')';

    >

    > with rgteQuery do

    > begin

    > SQL.Clear;

    > SQL.Add(sqls);

    > ExecSQL;

    > end;

    > .........

    > 위 프로그램에서 인써트문 신텍스 에러가 뜹니다.

    > Nam 은 넘겨받은 필드 명이구요

    > tim 은 삽입할 값입니다.

    > 도와 주세요

    > 아래와 같이 하면 필드를 인식하지 못합니다.

    >

    > sqls := 'INSERT INTO Rgte_table( ' + ''''+ Nam + ''''+ ' ) '

    > +' values ('+''''+tim+''''+')';

    >

    > with rgteQuery do

    > begin

    > SQL.Clear;

    > SQL.Add(sqls);

    > ExecSQL;

    > end;



    이런식으로 하십시요....



    sqls := 'insert into Rgte_table(:nam) values(:tim)' ;

    with rgteQuery do

    begin

    SQL.Clear;

    SQL.Add(sqls);

    SQL.ParamByName('nam').asstring:= nam ;

    SQL.ParamByName('tim').asstring:='tim' ;

    ExecSQL;

    end;





  • Profile
    초보 2000.01.15 00:26
    mute wrote:

    > 초보 wrote:

    > > procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);

    > > var

    > > sqls: string;

    > > begin

    > > sqls := 'INSERT INTO Rgte_table( ' + Nam +' ) ' +' values ('+''''+tim+''''+')';

    > >

    > > with rgteQuery do

    > > begin

    > > SQL.Clear;

    > > SQL.Add(sqls);

    > > ExecSQL;

    > > end;

    > > .........

    > > 위 프로그램에서 인써트문 신텍스 에러가 뜹니다.

    > > Nam 은 넘겨받은 필드 명이구요

    > > tim 은 삽입할 값입니다.

    > > 도와 주세요

    > > 아래와 같이 하면 필드를 인식하지 못합니다.

    > >

    > > sqls := 'INSERT INTO Rgte_table( ' + ''''+ Nam + ''''+ ' ) '

    > > +' values ('+''''+tim+''''+')';

    > >

    > > with rgteQuery do

    > > begin

    > > SQL.Clear;

    > > SQL.Add(sqls);

    > > ExecSQL;

    > > end;

    >

    > 이런식으로 하십시요....

    >

    > sqls := 'insert into Rgte_table(:nam) values(:tim)' ;

    > with rgteQuery do

    > begin

    > SQL.Clear;

    > SQL.Add(sqls);

    > SQL.ParamByName('nam').asstring:= nam ;

    > SQL.ParamByName('tim').asstring:='tim' ;

    > ExecSQL;

    > end;

    >

    >

    자세히 가르쳐 주시겠습니까

    위 문장을 좀더 정확히 써주셨으면 감사하겠습니다.

    SQL.Clear;

    SQL.Add(sqls);

    ParamByName('nam').asstring:= nam ;

    ParamByName('tim').asstring:= tim ;

    이렇게 했더니 에러

    SQL.Clear;

    SQL.Add(sqls);

    ParamByName('nam').asstring:= 'nam' ;

    ParamByName('tim').asstring:= 'tim' ;

    이렇게 해도 에러가 뜹니다.

    부탁합니다.







  • Profile
    조복기 2000.01.15 02:39


    안녕하세요..

    프로시저로 던지는 값(Nam:string ; tim:string)하고

    쿼리에서 사용하는 파라미터(nam,ptim)와 이름이 같습니다..

    다른이름을 사용하시길..

    밑에서는 쿼리파라미터이름을 pnam, ptim으로 고쳤습니다.

    좋은하루되세요..흠..근데 두번 값을 던지는셈이 되네요..



    procedure TdaygtearryForm.sqlInsert(Nam:string ; tim:string);

    begin

    with rgteQuery do

    begin

    Close;

    SQL.Clear;

    SQL.Text := 'insert into Rgte_table(:pnam) values(:ptim)' ;

    ParamByName('pnam').AsString := nam;

    ParamByName('ptim').AsString := tim;

    Prepare;

    Execsql;

    end;

    end;



    오타가 있어서 수정합니다..