도저히 감이 오질 않습니다.
아래 문장의 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;
> 도저히 감이 오질 않습니다.
> 아래 문장의 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;