다음소스중 걸리는 부분의 주석을 보아주셨으면 합니다.
1.Table명 'vcust' (테이블콤포넌트없이 쿼리문사용)
2.필드의 갯수= 16개
3.사용한 컴포넌트 : IbDataBase1 , IbTransaction1, IbQuery1, IbUpDateSql1, DataSorce1 등 5가지 콤포넌트를 배열하였고
실행시 자동접속된 디비그리드의 필드 데이터들이 나타난 상태입니다.
문제는 데이터를 추가하려고 소스를 작성했었는데 소스를 이곳저곳 수정한다고 해 보았습니다만 트랜잭션의 어느 한 줄에서 걸리는군요...
4.마지막레코드의 키필드값('vno')보다 '1'큰값을 키로 잡아야 하는데 RecondCount값을 사용 하는것도 꺼림칙 합니다.
5.부족한 컴포넌트는 없는지 살펴주신후 아래 소스를 다시한버 점검하여(가능하면 수정)주신다면 정말 감사 하겟습니다.
procedure TForm1.Button8Click(Sender: TObject);
var
RegNo, RegName, RegTel, RegJumin, RegNick, RegPost:String;
RegAdd1, RegAdd2, RegKind, RegDate, Regvisit,RegMember : String;
RegFamily, RegPoint, RegCharge, RegMoney: Integer;
begin
NoteBook1.PageIndex:=0;
with Ibquery1 do begin
SQL.Clear;
Regno:=IntToStr(recordcount+1);//Regno:=edit7.Text;
RegName:=Edit5.Text;
RegTel:=Edit6.Text;
RegJumin:=Edit8.Text;
RegNick:=Edit9.Text;
RegPost:=Edit10.Text;
RegAdd1:=Edit11.Text;
RegAdd2:=Edit12.Text;
RegFamily:=0;
RegKind:='1';
RegMember:=Edit14.Text;
RegPoint:=0;
RegCharge:=0;
RegMoney:=0;
Regdate:=FormatDateTime('yyyy-mm-dd',NOW);
Regvisit:=FormatDateTime('yyyy-mm-dd',NOW);
SQL.Add('Insert into 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 := regno;
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' ).AsString := 'O'; //여기가 중요합니다.
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;
end;
if ibtransaction1.InTransaction then
begin
try
ibquery1.applyupdates;
ibtransaction1.commit;
ibquery1.Open;
except
ibtransaction1.rollback;
end;
end
else
showmessage('트랜잭션 모드가 아님!');
//end;
end;
최대값을 찾습니다.
SELECT vno as MaxNo FROM vcust
이런식으로 쓰죠
FieldByName 에서는 MaxNo로 사용하면 되고요
MAX란게 인터베이스에 있는지 없는지 모르겠네요