Utilisation de MS Visual Studio 2012 Express, Utilisation de C# .NET 4.0.C# raccourcir la fonction datatable
Salut les gars, Je crois que c'est simple.
J'ai lancé un programme à la demande de mon patron, mais maintenant il me semble que j'ai beaucoup plus de temps libre.
Je vais par le code en essayant de le rendre plus compact, plus propre, etc.
Je cette une fonction .....
public void RunMonth()
{
//** top 10 listings*********************//
SetTxtBox1(DateTime.Now.ToString() + " ==== END OF MONTH REPORTS starting.........\r\n");
SetTxtBox1(" **************************************************************************************\r\n");
try
{
VRMtableDESC = querys.TopVRM("DESC");
SetTxtBox1(DateTime.Now.ToString() + " ==== VRM Top has been loaded\r\n");
}
catch
{
SetTxtBox1(DateTime.Now.ToString() + " ==== VRM Top has FAILED\r\n");
}
}
"VRMtableDESC" est un datatable, l'un des 18 datatables environ. Pour chaque datatable, cette instruction try est exécutée.
Maintenant que vous pouvez dire cela est actuellement répété 18 fois pour chaque table. à la place je voudrais faire une boucle dans les tables à la place et les remplir avec des données.
est-il un moyen de faire cela? J'aurais besoin d'une sorte de collection pour les datatables et les appels query.function aussi loin que je sache. Jusqu'à présent, j'ai frappé un vide donc j'espère que quelque chose est manquant.
Merci à l'avance
:::: MISE À JOUR :::: Ok donc je l'ai mis en place ce à ce jour ....
foreach (DataTable tbl in MyDataSet.Tables)
{
tbl.TableName.Equals(querys.TopVRM(""));
}
la méthode equals doit être dynamique dans sa sélection de méthode aussi .... des idées?
:: Mise à jour (31/10/12) ::
Salut à nouveau, Im obtenir une erreur, l'erreur commune "objet n'a pas été envoyé à l'instance d'objet"
il apears sur la fusion dans la boucle foreach.
J'ai débogué mon appel de requête et semble bien.
var tables = new SortedDictionary<string, Func<DataTable>>()
{
{"VRMtableDESC", () => querys.TopVRM("DESC")},
{"VRMtableASC", () => querys.BotVRM("ASC")},
{"SpectableDESC",() => querys.TopSpec("DESC")},
{"SpectableASC", () => querys.botSpec("ASC")},
{"ParttableDESC",() => querys.TopPart("DESC")},
{"ParttableASC",() => querys.BotPart("ASC")},
{"MantableDESC", () => querys.TopManual("DESC")},
{"MantableASC", () => querys.BotMan("ASC")}, //why is this first to run?????
{"UsersLockedTbl",() => querys.UserLocked()},
{"NewUsersTbl", () => querys.NewUsers()},
{"VRMtotaltblTOP", () => querys.VRMtotalTOP("")},
{"PARTtotaltblTOP", () => querys.PARTtotalTOP("")},
{"SPECtotaltblTOP", () => querys.SPECtotalTOP("")},
{"MANtotaltblTOP", () => querys.MANtotalTOP("")},
{"VRMtotaltblBOT", () => querys.VRMtotalBOT("")},
{"PARTtotaltblBOT", () => querys.PARTtotalBOT("")},
{"SPECtotaltblBOT", () => querys.SPECtotalBOT("")},
{"MANtotaltblBOT", () => querys.MANtotalBOT("")},
};
foreach(var kvp in tables)
{
try
{
MyDataSet.Tables[kvp.Key].Merge(kvp.Value());//error occurs here
SetTxtBox1(String.Format("{0} ==== {1} has been Loaded\r\n", DateTime.Now.ToString(), kvp.Key));
}catch(Exception e)
{
SetTxtBox1(String.Format("{0} ==== {1} has FAILED\r\n", DateTime.Now.ToString(), kvp.Key));
MessageBox.Show("error:::" + e);
}
}
AutoRunApp();
toute aide serait géniale.
MISE À JOUR ::
Heres mon appel de requête de la "bunchofquerys" class
public DataTable BotMan(string order)
{
SqlConnection conn = new SqlConnection(myConnString32);
SqlCommand vrm = new SqlCommand();
//BindingSource bindme = new BindingSource();
SqlDataAdapter adapt1 = new SqlDataAdapter(vrm);
// DataSet dataSet1 = new DataSet();
DataTable table1 = new DataTable();
try
{
vrm.Connection = conn;
vrm.CommandType = CommandType.StoredProcedure;
if (order.Equals("DESC"))
{
vrm.CommandText = "dbo.TopManual";
}
vrm.CommandText = "dbo.BotManual";
vrm.CommandTimeout = 360;
vrm.Parameters.AddWithValue("@OrderBy", order);
adapt1.Fill(table1);
return table1;
}
catch (Exception e)
{
MessageBox.Show("eeror::zomg::: " + e);
}
return table1;
}
La collection naturelle pour un DataTable est le DataSet. http://msdn.microsoft.com/en-us/library/aeskbwf7.aspx –
En effet, j'ai un ensemble de données et j'ai ajouter les tables vierges. Mais je ne sais pas comment ajouter les requêtes à chaque table à l'intérieur de l'ensemble de données. – lemunk
actuellement j'ai un foreach (tbl datatable dans myDataSet.tables) mais c'est le contexte de code que je dois itterate par ce que je ne suis pas sûr sur, syntaxe etc – lemunk