TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 20 janv. 2004 à 14:45
private void CopyDataTable(DataTable myDataTable){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = myDataTable.Copy();
// Insert code to work with the copy.
}
cs_Cameleon69
Messages postés98Date d'inscriptionlundi 31 décembre 2001StatutMembreDernière intervention 7 août 20052 20 janv. 2004 à 14:54
Marche pas plus je ne comprends pas, cela devrait pourtant fonctionner.
TableA est vide, il n'y a que la structure.
J'ai pas mal chercher sur le net et sur MSDN mais rien je ne trouve pas de solution.
J'ai changer le Clone en Copy mais cela ne fait rien. Que cette fonction soit interne ou externe cela ne change rien au problème.
Je ne comprends pas.
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 22 janv. 2004 à 00:45
bonjour,
pour une simple copie mémoire d'une DataTable, il n'y a rien d'autre à faire que ça :
créer un projet muni d'une connexion sur la table access et générer le Dataset (dsTest) sur le DataAdapter
ajouter deux boutons et deux datagrid (pour "voir" le résultat de la copie)
cs_Cameleon69
Messages postés98Date d'inscriptionlundi 31 décembre 2001StatutMembreDernière intervention 7 août 20052 22 janv. 2004 à 12:57
Bonjour
Oui mais ce que je veux c'est que ma table soit cloner non pas en mémoire mais que cela la crée dans mon fichier mdb, sur lequel j'ai fait ma connexion.
C'est la précisemment que j'ai un probleme, je ne vois pas où je dois faire une sorte de commit pour que la modification faite en mémoire puisse être répercuté sur mon fichier.
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 22 janv. 2004 à 19:12
bonjour,
essaie donc ce bout de code :
il utilise un DA pour la table source et un autre popur la table cible... mais un seul Dataset
Il est très important de remplir le Dataset avec AcceptChangesDuringFill, sinon tous les Rows sont à l'état "Unchanged" et aucune mise à jour n'est faite lors de l'Update !!!
Il est bien sur aussi très important de créer l'insertCommand pour le DACible
{
OleDbConnection cnx =null;
try
{
cnx = new OleDbConnection(@"Data Source=""D:\test.mdb"";
Provider=""Microsoft.Jet.OLEDB.4.0""");
OleDbDataAdapter daSource = new OleDbDataAdapter ("Select * from Test", cnx);
daSource.AcceptChangesDuringFill = false;//important
DataSet ds = new DataSet();
daSource.Fill(ds, "Test");
if (ds.Tables["Test"].Rows.Count==0)
{ MessageBox.Show("Dataset Vide"); return ; }
OleDbDataAdapter daCible = new OleDbDataAdapter ("Select * from Test2", cnx);
OleDbCommandBuilder cb = new OleDbCommandBuilder (daCible);
daCible.InsertCommand = cb.GetInsertCommand();
//daCible.UpdateCommand = cb.GetUpdateCommand();
//daCible.DeleteCommand = cb.GetDeleteCommand();
cnx.Open();
daCible.Update(ds, "Test");
}
finally { cnx.Close(); }
}