아래에 소스를 작성하여 보았는데 실행시키면 파라메타 어쩌구 하면서 'vno'를 찾을수 없다는 오류 메시지가 나타납니다.
1.Table명 'vcust' (테이블콤포넌트없이 쿼리문사용)
2.필드의 갯수= 16개
3.사용한 컴포넌트 : IbDataBase1 , IbTransaction1, IbQuery1, IbUpDateSql1, DataSorce1 등 5가지 콤포넌트를 배열하였고
실행시 자동접속된 디비그리드의 필드 데이터들이 나타난 상태입니다.
문제는 데이터를 추가하려고 소스를 작성했었는데 소스를 이곳저곳 수정한다고 해 보았습니다만 어느 한 줄에서 걸리는군요...
4.프라이머리키('vno')는 마지막레코드의 키필드값('vno')보다 '1'큰값을 키로 계산 하였습니다.
5.혹시 추가로 배열할 컴포넌트는 없는지, 프로퍼티 의 수정을 요하는지 살펴주신후 아래 소스가 작동되도록 점검하여(가능하면 수정)주신다면 정말 감사 하겟습니다.
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;
//Open;
SQL.Add('select * from vcust ');
Last;
SQL.Add('Insert into vcust(vno,vname,vtel,v_jumin,v_nick,post_no,add1,add2,family,v_kind,v_point,v_charge,regist_date,last_visit,v_s_money,membership)') ; 16개필드입니다.
SQL.Add('VALUES(:vno,:vname,:vtel,:v_jumin,:v_nick,:post_no,:add1,:add2,:family,:v_kind,:v_point,:v_charge,:regist_date,:last_visit,:v_s_money,:membership)') ; 16개입니다.
//SQL.Add('Insert into vcust values (:vno,:vname,:vtel,:v_jumin,:v_nick,:post_no,:add1,:add2,:family,:v_kind,:v_point,:v_charge,:regist_date,:last_visit,:v_s_money,:membership)');
ParamByName('vno').AsString := Trim(Edit7.Text); //마지막레코드의 값보다 1 증가된 값입니다.
ParamByName('vname' ).AsString :=Trim(Edit5.Text) ;
ParamByName('vtel' ).AsString := Trim(Edit6.Text);
ParamByName('v_jumin' ).AsString :=Edit8.Text;
ParamByName('v_Nick').AsString := Trim(Edit9.Text);
ParamByName('post_no' ).AsString := Edit10.Text;
ParamByName('add1' ).AsString := Trim(Edit11.Text);
ParamByName('add2' ).AsInteger := 0;
ParamByName('family' ).AsInteger := 0;
ParamByName('v_kind').AsString := '1';
ParamByName('v_point' ).AsInteger := 0;
ParamByName('v_charge' ).AsInteger := 0;
ParamByName('regist_date' ).AsDateTime := StrToDateTime(Edit13.Text);
ParamByName('last_visit' ).AsDateTime := StrToDateTime(Edit13.Text);
ParamByName('v_s_money' ).AsInteger := 0;
ParamByName('membership').AsString := Edit14.Text;
ExecSQL;
end;
if ibtransaction1.InTransaction then
begin
ibquery1.Open;
try
ibquery1.applyupdates;
ibtransaction1.commit;
ibquery1.Open;
except
ibtransaction1.rollback;
end;
end
else
showmessage('트랜잭션 모드가 아님!');
//end;
end;
execsql 전에 sql.text를 확인해 보시면 'select * from vcust insert into vcust...' 로 나올겁니다.
select 후 sql.text 를 클리어 하십시오. 필요하다면 데이타셋도 닫으십시오.
>
> //Open;
> SQL.Add('select * from vcust ');
open;
> Last;
sql.clear;
> SQL.Add('Insert into vcust(vno,vname,vtel,v_jumin,v_nick,post_
깨굴~