사용환경
: 델파이6
: 윈98
query와 updatesql을 사용해서 mysql에 데이터를 삽입하려고 합니다.
그런데 mysql에서 테이블 생성시 칼럼마다 잡아주었던 길이보다 작게 짤려서 데이터가 입력되고 있습니다. 그리고, mysql에서 직접 입력을 해도 마찬가지였습니다.
그런데 문제가 무엇인지를 발견했습니다.
테이블 생성 후 처음 입력하는 데이터 길이가 최대길이로 고정되는 것이었습니다.
그래서 모든 데이터를 삭제하고 원래 테이블을 만들 때의 칼럼 길이만큼 문자를 넣고 입력을 했더니 그 후론 문제가 없었습니다..
무엇이 문제일까요...
고수님들의 답변 부탁드립니다.
참고로 저는 query와 updatesql로 fieldbyname을 사용해서 데이터를 입력하고 있습니다.
// Transaction 시작..(이후의 Commit 또는 Rollback에서 Transaction 끝남)..
if not frmMD_WH_dmBS.dbYMM.InTransaction then
frmMD_WH_dmBS.dbYMM.StartTransaction
else
frmMD_WH_dmBS.dbYMM.Commit;
with frmMD_WH_dmBS.qryBuyer do
begin
try
if not frmMD_WH_Main.GetIs_Modified() then //삽입 모드(Is_Modified = false)일 때...
begin
Insert;
FieldByName('Buyer_Code').AsString := UpperCase(meBuyerCode.Text);
end
else //수정 모드(Is_Modified = true)일 때...
Edit;
FieldByName('Buyer_Name').AsString := edtBuyerName.Text;
FieldByName('Buyer_Country').AsString := edtCountry.Text;
FieldByName('Buyer_Address').AsString := edtAddress.Text;
FieldByName('Buyer_ZipCode').AsString := edtZipCode.Text;
FieldByName('Buyer_Phone').AsString := edtPhone.Text;
FieldByName('Buyer_FAX').AsString := edtFAX.Text;
FieldByName('Buyer_Email').AsString := edtEmail.Text;
Post;
ApplyUpdates;
test := FieldByName('Buyer_Country').AsString;
showmessage(test);
frmMD_WH_dmBS.dbYMM.Commit;
except
On E:Exception do
begin
if pos('Key violation', E.Message) > 0 then
ShowMessage('Error : Duplicated Key Data!!!')
else if pos('Update failed', E.Message) > 0 then
ShowMessage('Error : Save Failed!!!')
else
begin
ShowMessage(E.Message+'로 인하여 데이타베이스를 최종저장하기 전상태로 환원합니다');
frmMD_WH_dmBS.dbYMM.Rollback
end;
end;
// raise;
end; // try ~ except의 end
CommitUpdates; //on success, clear the cache
Close;
Open;
end; // frmMD_WH_dmBS.qryBuyer with end