| « SMO#3 : Analyse récursive des dépendances | SMO Sample # 2 : Récupérer les tables dépendantes » |
SMO Sample #2bis : Recherche des dépendances et restitution
Toujour sur le périmètre de la recherche des dépendances de tables, je fait un petit point intermédiaire de manière à les restituer dans mon IHM. Le plus simple est de les afficher dans un treeview.
Pour résumer, lorsque du clic sur le bouton "Analyse" de l'UI,

Je force pour l'analyse sur une base Sample de MS comme suit :
___
private void analyseToolStripMenuItem_Click(object sender, EventArgs e)
{
bool state = false;
#region comments
//if (UserMenuItem.Text == "" && PasswordMenuItem.Text == "")
//{
// state = _tp.ConnectToDatabase(ServerMenuItem.Text,
// dbListCombo.SelectedText,
// ServerAuthMode.Integrated,
// null, null);
//}
//else
//{
// state = _tp.ConnectToDatabase(ServerMenuItem.Text,
// dbListCombo.SelectedText,
// ServerAuthMode.Integrated,
// UserMenuItem.Text, PasswordMenuItem.Text);
//}
#endregion
state = _tp.ConnectToDatabase(@".\BILAB2008","AdventureWorks",ServerAuthMode.Integrated,null,null);
_tp.TableName = "SalesOrderHeader";
_tp.Schema = "Sales";
_tp = _tp.AnalyseDatabaseBy("SalesOrderHeader","Sales");
TreeNode treeNode = new TreeNode();
/* convert TreePath Tree into a TreeNode for display */
this.AdaptTablePath(ref treeNode, _tp);
DatabaseTreeView.Nodes.Add(treeNode);
}
>
L'élément clef pour alimenter notre Trevview est l'objet treeNode. Nous l'alimentons en récurisif :
____
>
e="margin: 0px;">private void AdaptTablePath(ref TreeNode node, TablePath tablePath)
{
node.Text = tablePath.TableName;
if (tablePath.Childs != null)
{
foreach (TablePath tp in tablePath.Childs)
{
TreeNode childNode = new TreeNode(tp.TableName);
AdaptTablePath(ref childNode, tp);
node.Nodes.Add(childNode);
}
}
}
____