나는 dao와 협력 중이며, 내 사용자는 테이블과 필드를 추가 중입니다. 내 프로그램은 테이블이 있는지 확인합니다. 예이면 필드 만 추가하고 테이블이 없으면 테이블을 추가 한 다음 필드를 추가합니다.루프가 깨질 수없는 경우
두 번째 필드를 추가하려고하면 문제가 발생합니다. 그 표가 이미 있음을 알려줍니다. 적절한 방법으로 루프를 통과하지는 않습니다. 도울 수 있니?
string tablename = txtNameTable.Text.Trim();
string fieldname = txtFieldName.Text.Trim();
string size = txtSize.Text.Trim();
//create a table
myTable = clsDataSource.mydb.CreateTableDef(tablename);
//create fields
if (cboFieldType.SelectedItem.ToString() == "Text")
{
myField = myTable.CreateField(fieldname, DAO.DataTypeEnum.dbText, size);
}
if (cboFieldType.SelectedItem.ToString() == "AutoNumber")
{
myField = myTable.CreateField(fieldname, DAO.DataTypeEnum.dbLong);
myField.Attributes = (int)DAO.FieldAttributeEnum.dbAutoIncrField;
}
if (cboFieldType.SelectedItem.ToString() == "Number")
{
myField = myTable.CreateField(fieldname, DAO.DataTypeEnum.dbLong, size);
}
if (cboFieldType.SelectedItem.ToString() == "Date")
{
myField = myTable.CreateField(fieldname, DAO.DataTypeEnum.dbDate);
}
//check if table exists
bool tableExist = false;
foreach (TableDef tb in clsDataSource.mydb.TableDefs)
{
if (tb.Name == myTable.Name)
{
myTable.Fields.Append(myField);
tableExist = true;
break;
}
}
if (tableExist == false)
{
myTable.Fields.Append(myField);
clsDataSource.mydb.TableDefs.Append(myTable);
}
//add primary key
if (ckPK.Checked == true)
{
Index myIndex = myTable.CreateIndex("PrimaryKey");
myField = myIndex.CreateField(fieldname);
((IndexFields)myIndex.Fields).Append(myField);
myIndex.Primary = true;
try
{
clsDataSource.mydb.TableDefs[myTable.Name].Indexes.Append(myIndex);
}
catch (Exception)
{
MessageBox.Show("This table already has a primary key", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Activate(true, true, true);
}
왜 if 문을 2 개로 병합하고 불필요한 조건과 대괄호를 제거하지 않으시겠습니까? –
불필요한 조건과 괄호는 무엇을 의미합니까? – NewPassionnate
'if (tb.Attributes == 0 && tb.Name == myTable.Name) {// 귀하의 상태}' –