Q&A

  • IBQuery문INSERT, 한단계전진은 했지만....
* 사용환경 : 인터베이스6

* 에러 메시지 : Dynamic sql error SQL error code = -104

Token unknown - line 2 , char -1 (혹은 line 1 , char 0)



한단계 진전이 있었습니다만 확실한 조언을 주신 고수님들이 안계시는군요..

도움을 바랍니다..(ParamBy('vno').AsString:=... 등등..소스방식을 바꾸어도 결과는 마찬가지입니다.)





with Ibquery1 do begin

Close;

SQL.Clear;

SQL.Add('select * from vcust ');

open;



append; //->insert대신 append명령을 써도 되는지요...(맨 끝줄에 자료추가시..)

showmessage( 'DB그리드에 빈줄 생기고 업데이트준비완료...' );//->성공했구요...

//insert;

FieldByName('vno').Value := regno;

FieldByName('vname').Value := regname;

FieldByName('vtel').Value := regtel;

FieldByName('v_jumin').Value := regjumin;

FieldByName('v_nick').Value := regnick;

FieldByName('post_no').Value := regpost;

FieldByName('add1').Value := regadd1;

FieldByName('add2').Value := regadd2;

FieldByName('family').Value := regfamily;

FieldByName('v_kind').Value := regkind;

FieldByName('v_point').Value := regpoint;

FieldByName('v_charge').Value := regcharge;

FieldByName('Regist_date').Value := regdate;

FieldByName('Last_visit').Value := regvisit;

FieldByName('v_s_money').Value := regmoney;

FieldByName('membership').Value := regmember;

showmessage( 'DB그리드 맨 아랬줄에 POst할 값들이 나타났습니다.' );// ->자료가 추가중인것이 디비그리드에 보입니다. 역시성공...

-------------------------------------여기까지는 잘 됩니다.

Post;

showmessage( 'Post에 성공 하였습니다.' );// -> 확실히 추가 되었습니다. 성공...



if ibtransaction1.InTransaction then

begin

showmessage( '트랜잭션 진입!!' );//->여기까지도 OK!!



try

showmessage( 'Try모드 진입!!' ); //-> Post 명령을 REM 시키면 이줄까지는 도착합니다.

applyupdates; // -> 이줄에서 다이나믹 에러, SQL Statement -104 어쩌구 하는 에러가 납니다.(IBQuery의 캐쉬모드는 True로 설정된 상태입니다.)





showmessage( 'commit전단계!!' );

ibtransaction1.commit;

showmessage( '기록성공!!' );->기록성공까지는 가지못하는군요...

---------------------------------------------------------------------------------









아래에 전체소스입니다.

무엇이 잘 못되었는지요...





procedure TForm1.Button8Click(Sender: TObject);

var

RegNo, RegName, RegTel, RegJumin, RegNick, RegPost:String;

RegAdd1, RegAdd2, RegKind, RegDate, Regvisit,RegMember : String;

Maxno, RegFamily, RegPoint, RegCharge, RegMoney: Integer;

begin

NoteBook1.PageIndex:=0;



with Ibquery1 do begin

Close;

SQL.Clear;

SQL.Add('select * from vcust ');

open;



append; //->insert대신 append명령을 써도 되는지요...(맨 끝줄에 자료추가시..)

showmessage( 'DB그리드에 빈줄 생기고 업데이트준비완료...' );//->성공했구요...

//insert;

FieldByName('vno').Value := regno;

FieldByName('vname').Value := regname;

FieldByName('vtel').Value := regtel;

FieldByName('v_jumin').Value := regjumin;

FieldByName('v_nick').Value := regnick;

FieldByName('post_no').Value := regpost;

FieldByName('add1').Value := regadd1;

FieldByName('add2').Value := regadd2;

FieldByName('family').Value := regfamily;

FieldByName('v_kind').Value := regkind;

FieldByName('v_point').Value := regpoint;

FieldByName('v_charge').Value := regcharge;

FieldByName('Regist_date').Value := regdate;

FieldByName('Last_visit').Value := regvisit;

FieldByName('v_s_money').Value := regmoney;

FieldByName('membership').Value := regmember;

showmessage( 'DB그리드 맨 아랬줄에 POst할 값들이 나타났습니다.' );// ->자료가 추가중인것이 디비그리드에 보입니다. 역시성공...

-------------------------------------여기까지는 잘 됩니다.

Post;

showmessage( 'Post에 성공 하였습니다.' );// -> 확실히 추가 되었습니다. 성공...



if ibtransaction1.InTransaction then

begin

showmessage( '트랜잭션 진입!!' );//->여기까지도 OK!!



try

showmessage( 'Try모드 진입!!' ); //-> Post 명령을 REM 시키면 이줄까지는 도착합니다.

applyupdates; // -> 이줄에서 다이나믹 에러, SQL Statement -104 어쩌구 하는 에러가 납니다.(IBQuery의 캐쉬모드는 True로 설정된 상태입니다.)





showmessage( 'commit전단계!!' );

ibtransaction1.commit;

showmessage( '기록성공!!' );->기록성공까지는 가지못하는군요...

Open;

except

ibtransaction1.rollback;

end;

end

else

showmessage('트랜잭션 모드가 아님!');

end ;



1  COMMENTS
  • Profile
    인터기초 2001.10.29 04:21
    결국 나중에 테이블을 다시 열어보면 commit이 안되어 있습니다.







    인터기초 wrote:

    > * 사용환경 : 인터베이스6

    > * 에러 메시지 : Dynamic sql error SQL error code = -104

    > Token unknown - line 2 , char -1 (혹은 line 1 , char 0)

    >

    > 한단계 진전이 있었습니다만 확실한 조언을 주신 고수님들이 안계시는군요..

    > 도움을 바랍니다..(ParamBy('vno').AsString:=... 등등..소스방식을 바꾸어도 결과는 마찬가지입니다.)

    >

    >

    > with Ibquery1 do begin

    > Close;

    > SQL.Clear;

    > SQL.Add('select * from vcust ');

    > open;

    >

    > append; //->insert대신 append명령을 써도 되는지요...(맨 끝줄에 자료추가시..)

    > showmessage( 'DB그리드에 빈줄 생기고 업데이트준비완료...' );//->성공했구요...

    > //insert;

    > FieldByName('vno').Value := regno;

    > FieldByName('vname').Value := regname;

    > FieldByName('vtel').Value := regtel;

    > FieldByName('v_jumin').Value := regjumin;

    > FieldByName('v_nick').Value := regnick;

    > FieldByName('post_no').Value := regpost;

    > FieldByName('add1').Value := regadd1;

    > FieldByName('add2').Value := regadd2;

    > FieldByName('family').Value := regfamily;

    > FieldByName('v_kind').Value := regkind;

    > FieldByName('v_point').Value := regpoint;

    > FieldByName('v_charge').Value := regcharge;

    > FieldByName('Regist_date').Value := regdate;

    > FieldByName('Last_visit').Value := regvisit;

    > FieldByName('v_s_money').Value := regmoney;

    > FieldByName('membership').Value := regmember;

    > showmessage( 'DB그리드 맨 아랬줄에 POst할 값들이 나타났습니다.' );// ->자료가 추가중인것이 디비그리드에 보입니다. 역시성공...

    > -------------------------------------여기까지는 잘 됩니다.

    > Post;

    > showmessage( 'Post에 성공 하였습니다.' );// -> 확실히 추가 되었습니다. 성공...

    >

    > if ibtransaction1.InTransaction then

    > begin

    > showmessage( '트랜잭션 진입!!' );//->여기까지도 OK!!

    >

    > try

    > showmessage( 'Try모드 진입!!' ); //-> Post 명령을 REM 시키면 이줄까지는 도착합니다.

    > applyupdates; // -> 이줄에서 다이나믹 에러, SQL Statement -104 어쩌구 하는 에러가 납니다.(IBQuery의 캐쉬모드는 True로 설정된 상태입니다.)

    >

    >

    > showmessage( 'commit전단계!!' );

    > ibtransaction1.commit;

    > showmessage( '기록성공!!' );->기록성공까지는 가지못하는군요...

    > ---------------------------------------------------------------------------------

    >

    >

    >

    >

    > 아래에 전체소스입니다.

    > 무엇이 잘 못되었는지요...

    >

    >

    > procedure TForm1.Button8Click(Sender: TObject);

    > var

    > RegNo, RegName, RegTel, RegJumin, RegNick, RegPost:String;

    > RegAdd1, RegAdd2, RegKind, RegDate, Regvisit,RegMember : String;

    > Maxno, RegFamily, RegPoint, RegCharge, RegMoney: Integer;

    > begin

    > NoteBook1.PageIndex:=0;

    >

    > with Ibquery1 do begin

    > Close;

    > SQL.Clear;

    > SQL.Add('select * from vcust ');

    > open;

    >

    > append; //->insert대신 append명령을 써도 되는지요...(맨 끝줄에 자료추가시..)

    > showmessage( 'DB그리드에 빈줄 생기고 업데이트준비완료...' );//->성공했구요...

    > //insert;

    > FieldByName('vno').Value := regno;

    > FieldByName('vname').Value := regname;

    > FieldByName('vtel').Value := regtel;

    > FieldByName('v_jumin').Value := regjumin;

    > FieldByName('v_nick').Value := regnick;

    > FieldByName('post_no').Value := regpost;

    > FieldByName('add1').Value := regadd1;

    > FieldByName('add2').Value := regadd2;

    > FieldByName('family').Value := regfamily;

    > FieldByName('v_kind').Value := regkind;

    > FieldByName('v_point').Value := regpoint;

    > FieldByName('v_charge').Value := regcharge;

    > FieldByName('Regist_date').Value := regdate;

    > FieldByName('Last_visit').Value := regvisit;

    > FieldByName('v_s_money').Value := regmoney;

    > FieldByName('membership').Value := regmember;

    > showmessage( 'DB그리드 맨 아랬줄에 POst할 값들이 나타났습니다.' );// ->자료가 추가중인것이 디비그리드에 보입니다. 역시성공...

    > -------------------------------------여기까지는 잘 됩니다.

    > Post;

    > showmessage( 'Post에 성공 하였습니다.' );// -> 확실히 추가 되었습니다. 성공...

    >

    > if ibtransaction1.InTransaction then

    > begin

    > showmessage( '트랜잭션 진입!!' );//->여기까지도 OK!!

    >

    > try

    > showmessage( 'Try모드 진입!!' ); //-> Post 명령을 REM 시키면 이줄까지는 도착합니다.

    > applyupdates; // -> 이줄에서 다이나믹 에러, SQL Statement -104 어쩌구 하는 에러가 납니다.(IBQuery의 캐쉬모드는 True로 설정된 상태입니다.)

    >

    >

    > showmessage( 'commit전단계!!' );

    > ibtransaction1.commit;

    > showmessage( '기록성공!!' );->기록성공까지는 가지못하는군요...

    > Open;

    > except

    > ibtransaction1.rollback;

    > end;

    > end

    > else

    > showmessage('트랜잭션 모드가 아님!');

    > end ;

    >