begin process at 2008 09 06 08:48:48
1 237 663 membres
60 nouveaux aujourd'hui
14 313 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Cloner la structure d'une table à partir d'une base access [ Archives / Au secours ] (Cameleon69)

Cloner la structure d'une table à partir d'une base access le 20/01/2004 14:26:31

Cameleon69
Membre Club

Bonjour

Je cherche comment cloner la structure dans une base de donénes MS ACCESS d'une table existante dans une nouvelle que je dois créer.

Exemple
-TableA (existe et possède des champs, table ref)

il faut que je duplique cette structure pour créer la TableB.

je fais quelque chose de ce style mais cela ne donne rien :


DataTable SourceTable = new DataTable("TableA");
DataTable NewTable;
NewTable = SourceTable.Clone();
NewTable.TableName = "TableB";


Quelqu'un peut-il m'aider SVP

Re : Cloner la structure d'une table à partir d'une base access le 20/01/2004 14:45:40

TheSaib
(Admin CS)
private void CopyDataTable(DataTable myDataTable){
// Create an object variable for the copy.
DataTable copyDataTable;
copyDataTable = myDataTable.Copy();
// Insert code to work with the copy.
}

ET çà ?

::|The S@ib|::
MVP C#.NET

Re : Cloner la structure d'une table à partir d'une base access le 20/01/2004 14:54:35

Cameleon69
Membre Club
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.

Re : Cloner la structure d'une table à partir d'une base access le 20/01/2004 14:59:25

TheSaib
(Admin CS)
CA devrait marcher , essaye avec une table remplie pour voir !


::|The S@ib|::
MVP C#.NET

Re : Cloner la structure d'une table à partir d'une base access le 20/01/2004 15:04:51

Cameleon69
Membre Club
non pas plus, rien a faire ???
il y a quelque chose que je dois mal faire pas possible autrement !!!

Re : Cloner la structure d'une table à partir d'une base access le 22/01/2004 00:45:08

vieuxLion
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)

private void btnCharger_Click(object sender, System.EventArgs e)
{
oleDbDataAdapter1.Fill(dsTest1, "Test");
dataGrid1.DataSource = dsTest1.Test;
}

private void btnCopier_Click(object sender, System.EventArgs e)
{
copieDataTable = dsTest1.Test.Copy();
dataGrid2.DataSource = copieDataTable;
}



Re : Cloner la structure d'une table à partir d'une base access le 22/01/2004 12:57:49

Cameleon69
Membre Club
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.

Re : Cloner la structure d'une table à partir d'une base access le 22/01/2004 19:12:18

vieuxLion
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(); }
}


Classé sous : access, base, table, structure, cloner

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Boutique

Boutique de goodies CodeS-SourceS