本文整理汇总了C++中Constraint::GetRefColumns方法的典型用法代码示例。如果您正苦于以下问题:C++ Constraint::GetRefColumns方法的具体用法?C++ Constraint::GetRefColumns怎么用?C++ Constraint::GetRefColumns使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Constraint
的用法示例。
在下文中一共展示了Constraint::GetRefColumns方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnLeftDoubleClick
void DatabaseCanvas::OnLeftDoubleClick(wxMouseEvent& event)
{
int result;
std::vector<std::wstring> errors;
m_selectedShape = GetShapeUnderCursor();
std::vector<FKField *> newFK;
ViewType type = dynamic_cast<DrawingView *>( m_view )->GetViewType();
ConstraintSign *sign = NULL;
if( m_selectedShape )
{
ShapeList list;
GetShapesAtPosition( event.GetPosition(), list );
bool found = false;
for( ShapeList::iterator it = list.begin(); it != list.end() && !found; it++ )
{
sign = wxDynamicCast( (*it), ConstraintSign );
if( sign )
found = true;
}
if( type == DatabaseView && !sign )
DeselectAll();
if( sign && type == DatabaseView )
{
bool logOnly;
Constraint *constraint = sign->GetConstraint();
std::wstring kName = constraint->GetName().ToStdWstring(), refTable, fkTable;
std::vector<std::wstring> foreignKeyFields, refKeyFields;
constraint->GetLocalColumns( foreignKeyFields );
constraint->GetRefColumns( refKeyFields );
DatabaseTable *table = const_cast<DatabaseTable *>( constraint->GetFKTable() );
wxString refTableName = constraint->GetRefTable();
int match = constraint->GetPGMatch();
bool found1 = false, found2 = false;
for( std::vector<MyErdTable *>::iterator it = m_displayedTables.begin(); it < m_displayedTables.end() && !found1 && !found2; it++ )
{
if( const_cast<DatabaseTable &>( (*it)->GetTable() ).GetTableName() == const_cast<DatabaseTable *>( constraint->GetFKTable() )->GetTableName() )
{
(*it)->Select( true );
fkTable = const_cast<DatabaseTable &>( (*it)->GetTable() ).GetTableName();
found1 = true;
}
if( const_cast<DatabaseTable &>( (*it)->GetTable() ).GetTableName() == refTableName )
{
refTable = const_cast<DatabaseTable *>( &(*it)->GetTable() )->GetTableName();
found2 = true;
}
}
int deleteProp, updateProp;
FK_ONUPDATE actionUpdate;
FK_ONDELETE actionDelete;
Constraint::constraintAction action = constraint->GetOnDelete();
if( action == Constraint::restrict )
{
deleteProp = 1;
actionDelete = RESTRICT_DELETE;
}
if( action == Constraint::cascade )
{
deleteProp = 2;
actionDelete = CASCADE_DELETE;
}
if( action == Constraint::setNull )
{
deleteProp = 3;
actionDelete = SET_NULL_DELETE;
}
if( action == Constraint::noAction )
{
deleteProp = 0;
actionDelete = NO_ACTION_DELETE;
}
if( action == Constraint::setDefault )
{
deleteProp = 4;
actionDelete = SET_DEFAULT_DELETE;
}
action = constraint->GetOnUpdate();
if( action == Constraint::restrict )
{
updateProp = 1;
actionUpdate = RESTRICT_UPDATE;
}
if( action == Constraint::cascade )
{
updateProp = 2;
actionUpdate = CASCADE_UPDATE;
}
if( action == Constraint::setNull )
{
updateProp = 3;
actionUpdate = SET_NULL_UPDATE;
}
if( action == Constraint::noAction )
{
updateProp = 0;
actionUpdate = NO_ACTION_UPDATE;
}
if( action == Constraint::setDefault )
{
updateProp = 4;
//.........这里部分代码省略.........
示例2: OnDropTable
void DatabaseCanvas::OnDropTable(wxCommandEvent &event)
{
ShapeList list;
bool isTable;
int answer;
MyErdTable *erdTable = NULL;
DatabaseTable *table = NULL;
wxString name;
ConstraintSign *sign = NULL;
Constraint *constraint = NULL;
DrawingDocument *doc = (DrawingDocument *) m_view->GetDocument();
Database *db = doc->GetDatabase();
std::vector<std::wstring> errors, localColumns, refColumn;
std::vector<FKField *> newFK;
std::wstring command;
int match = 0;
GetSelectedShapes( list );
if( list.size() == 1 )
isTable = true;
else
isTable = false;
for( ShapeList::iterator it = list.begin(); it != list.end(); it++ )
{
MyErdTable *tbl = wxDynamicCast( (*it), MyErdTable );
if( tbl )
erdTable = tbl;
ConstraintSign *s = wxDynamicCast( (*it), ConstraintSign );
if( s )
sign = s;
}
if( isTable )
{
table = &( const_cast<DatabaseTable &>( erdTable->GetTable() ) );
name = const_cast<DatabaseTable &>( erdTable->GetTable() ).GetTableName();
}
else
{
constraint = sign->GetConstraint();
constraint->GetLocalColumns( localColumns );
constraint->GetRefColumns( refColumn );
match = constraint->GetPGMatch();
}
int eventId = event.GetId();
if( eventId == wxID_DROPOBJECT )
{
wxString message = _( "You are about to delete " );
if( isTable )
message += _( "table " ) + name + _( ". Are you sure?" );
else
{
message += _( "foreign key " );
wxString fkName = constraint->GetName();
if( !fkName.empty() )
message += fkName;
else
message += _( " on " ) + const_cast<DatabaseTable *>( constraint->GetFKTable() )->GetTableName() + _( " references " ) + constraint->GetRefTable() + _( ". Are you sure?" );
}
answer = wxMessageBox( message, _( "Database" ), wxYES_NO | wxNO_DEFAULT );
}
else
answer = wxYES;
if( answer == wxYES )
{
if( isTable && ( ( eventId == wxID_DROPOBJECT && !db->DeleteTable( name.ToStdWstring(), errors ) ) || eventId != wxID_DROPOBJECT ) )
{
if( m_realSelectedShape == m_selectedShape )
{
m_realSelectedShape = NULL;
ShapeList listShapes;
m_pManager.GetShapes( CLASSINFO( MyErdTable ), listShapes );
int size = listShapes.size();
if( listShapes.size() == 1 )
m_realSelectedShape = NULL;
else
{
MyErdTable *tableToRemove = (MyErdTable *) ( listShapes.Item( size - 1 )->GetData() );
if( tableToRemove == erdTable )
m_realSelectedShape = (MyErdTable *) ( listShapes.Item( size - 2 )->GetData() );
else
{
bool found = false;
int i;
for( i = 0; i < size - 1 || !found; i++ )
if( listShapes.Item( i )->GetData() == erdTable )
found = true;
m_realSelectedShape = listShapes.Item( i + 1 )->GetData();
}
}
}
m_pManager.RemoveShape( erdTable );
/* for( ShapeList::iterator it = listShapes.begin(); it != listShapes.end() || !nextShapeFound; ++it )
{
CommentFieldShape *shape = wxDynamicCast( (*it), CommentFieldShape );
if( m_showComments )
{
shape->SetText( const_cast<Field *>( shape->GetFieldForComment() )->GetComment() );
}
else
{
shape->SetText( wxEmptyString );
//.........这里部分代码省略.........