|
고수님의 조언 부탁드립니다.
상황은 이렇습니다.
void __fastcall TFTeamSubJ::FormShow(TObject *Sender)
{
// 콤보박스 초기화....
TableTeam->IndexName="tcode"; // TableTeam:TTable
TableTeam->SetKey();
TableTeam->FieldByName("tcode")->AsString=_TCode;
if (TableTeam->GotoKey()) {
SetComboHigh(); // 적당히 콤보박스에 값을 넣는 작업(TDBComboBox가 아니라서...)
}
}
void __fastcall TFTeamSubJ::BitBtn1Click(TObject *Sender)
{
TableTeam->Edit();
TableTeam->FieldByName("subject2")->AsString=GetCombo2String(_H1);
TableTeam->FieldByName("teacher2")->AsString=GetCombo2String(_H2);
TableTeam->FieldByName("saco2")->AsString=GetCombo2String(_H3);
TableTeam->Post();
// ....그 외 코드
}
콤보박스 한 두개를 클릭 선택한 뒤 <저장>버튼을 누르면 해당 콤보박스 내용을 적당히
조합해서(GetCombo2String() 함수) 그저 저장(BitBtn1Click() 함수)하는 것 뿐입니다.
- 콤보박스 체인지 이벤트는 비어 있습니다.
BitBtn1Click() 소스 중
TableTeam->Edit();
라인에서 "Record already locked by this session" 메시지가 뜨면서 저장이 되지 않고
있습니다.
특징
1. 재미있는 것은 위 FormShow(TObject *Sender) 에서
TableTeam->IndexName="tcode";
TableTeam->SetKey();
TableTeam->FieldByName("tcode")->AsString=_TCode;
if (TableTeam->GotoKey()) {
SetComboHigh();
}
이 다섯라인을 죽인 뒤에는 아무 이상없이 저장이 된다는 겁니다.
-> 물론, TableTeam의 맨 첫 레코드에 저장이 되었지요.
2. SetComboHigh(); 라인만 죽이더라도 해당 메시지가 뜹니다.
3. 폼정보 : A폼에서 동적으로 B폼 생성->B폼에서 동적으로 C폼(문제를 일으키는 폼) 생성.
A폼에서 또 다른 TableTeam(TTable)이 DBGrid에 연결되어 있고
B폼에서 현재 레코드와 연결된 TDBEditBox가 여러개 놓여 있습니다.
|