Q&A

  • ms-sql 7.0의 Insert문에서 Error가.....(좀 봐 주세요...)
도저히 감이 오질 않습니다.

아래 문장의 Inser문을 실행 시키면 뭐 어쩌구 저쩌구 하는 Error가 뜹니다.

그런데 다시 Run 시켜서 Button1로 읽어보면 값은 들어가 있습니다.



그리고 다음 한가지는

5개 Field중에 최소한 가장 처음의 Field값이 같으면 Insert가 안되나요?

또 Field들 중에 하나만 값이 같아도 Insert에서 Error가 나나요?



그리고 CHK_TIME Field는 Integer입니다.



procedure TForm1.Button1Click(Sender: TObject);

begin

with Query1 do begin

if Query1.Active=True then

Query1.Active:=False;

//참고로 Memo1.Lines 는

//select GJ_CODE, GJ_NAME, P_NO, CHK_TIME, R_GJ_CODE

//from BIGA..GJTABLE

Query1.SQL:=Memo1.Lines;

Query1.Active:=True;

end;

end;



procedure TForm1.BUTTON2Click(Sender: TObject);

begin

with Query1 do

begin

if(active) then Close;

sql.clear;

//참고로 Memo2.Lines 는

//insert into BIGA..GJTABLE

//(GJ_CODE,GJ_NAME,P_NO,CHK_TIME,R_GJ_CODE)

// values ('0001','abcd','gbsd',0,'nbvc')

sql:=Memo2.Lines;

execsql;

end;

query1.Open;



end;

1  COMMENTS
  • Profile
    srookie 2000.12.07 08:11
    sinseong wrote:

    > 도저히 감이 오질 않습니다.

    > 아래 문장의 Inser문을 실행 시키면 뭐 어쩌구 저쩌구 하는 Error가 뜹니다.

    > 그런데 다시 Run 시켜서 Button1로 읽어보면 값은 들어가 있습니다.

    >

    > 그리고 다음 한가지는

    > 5개 Field중에 최소한 가장 처음의 Field값이 같으면 Insert가 안되나요?

    > 또 Field들 중에 하나만 값이 같아도 Insert에서 Error가 나나요?

    >

    > 그리고 CHK_TIME Field는 Integer입니다.

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > begin

    > with Query1 do begin

    > if Query1.Active=True then

    > Query1.Active:=False;

    > //참고로 Memo1.Lines 는

    > //select GJ_CODE, GJ_NAME, P_NO, CHK_TIME, R_GJ_CODE

    > //from BIGA..GJTABLE

    > Query1.SQL:=Memo1.Lines;

    > Query1.Active:=True;

    > end;

    > end;

    >

    > procedure TForm1.BUTTON2Click(Sender: TObject);

    > begin

    > with Query1 do

    > begin

    > if(active) then Close;

    > sql.clear;

    > //참고로 Memo2.Lines 는

    > //insert into BIGA..GJTABLE

    > //(GJ_CODE,GJ_NAME,P_NO,CHK_TIME,R_GJ_CODE)

    > // values ('0001','abcd','gbsd',0,'nbvc')

    > sql:=Memo2.Lines;

    > execsql;

    > end;

    > query1.Open;

    >

    > end;



    안녕하세요...

    제가 보기에 에러가 뜨는 이유는 Field에 Primary Key 설정이 되어있는 것으로 추측 되는군요.

    어느 한 Field에 Primary Key가 설정이 되어 있다면, 똑같은 값을 2번 넣는 것은 안됩니다.



    그리고, 소스에 약간 문제가 있는것 같은데요.

    procedure TForm1.BUTTON2Click(Sender: TObject);

    begin

    with Query1 do

    begin

    if(active) then Close;

    sql.clear;

    //참고로 Memo2.Lines 는

    //insert into BIGA..GJTABLE

    //(GJ_CODE,GJ_NAME,P_NO,CHK_TIME,R_GJ_CODE)

    // values ('0001','abcd','gbsd',0,'nbvc')

    sql:=Memo2.Lines;

    execsql;

    ~~~~~~~~

    원래 TQuery에서 Insert나 Delete등을 실행할때는 보통 ExecSQL을 사용합니다.

    ExecSQL을 호출한 것 자체로도 이미 Database에 결과가 적용되 있는 것이고요.

    end;



    query1.Open;

    ~~~~~~~~~~~~

    그런데 여기서 Query1.Open을 실행하게 되면 Query1에 있는 Insert문이 한번 더 실행되겠죠? 그러니 이 문장은 삭제하시는 것이 좋겠습니다.

    end;