Q&A

  • inseret문제 (인터베이스)
다음소스중 걸리는 부분의 주석을 보아주셨으면 합니다.



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;



2  COMMENTS
  • Profile
    허재팔 2001.10.26 04:33
    저는 MSSQL과 Access에서 MAX란 함수로

    최대값을 찾습니다.



    SELECT vno as MaxNo FROM vcust



    이런식으로 쓰죠

    FieldByName 에서는 MaxNo로 사용하면 되고요



    MAX란게 인터베이스에 있는지 없는지 모르겠네요



  • Profile
    김대환 2001.10.27 01:15
    허재팔 wrote:

    > 저는 MSSQL과 Access에서 MAX란 함수로

    > 최대값을 찾습니다.

    >

    > SELECT vno as MaxNo FROM vcust

    >

    > 이런식으로 쓰죠

    > FieldByName 에서는 MaxNo로 사용하면 되고요

    >

    > MAX란게 인터베이스에 있는지 없는지 모르겠네요

    >



    인터베이스에도 MAX는 있습니다...

    사용방법은

    Select MAX(vno) as Maxno from vcust

    FieldByName은 위와 마찬가지로 Maxno를 사용하심 됩니다..^^