Base de données ACCESS clonage de table

cs_Cameleon69 Messages postés 98 Date d'inscription lundi 31 décembre 2001 Statut Membre Dernière intervention 7 août 2005 - 21 janv. 2004 à 09:37
cs_xxslayerxx Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 12 juillet 2008 - 12 juil. 2008 à 02:52
Bonjour voici un extrait du code que j'utilise pour me connecter à ma base access puis essayer de faire un clonage d'une structure de table, sans succès ma table n'étant pas enregistrée dans mon fichier mdb:
//connexion
connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Mode=ReadWrite";
oConn = new OleDbConnection(this.connStr);
oConn.Open();
//test si table existe
DataTable dt;
string table = "2004";
dt = oConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,new Object[] {null,null,null,"TABLE"});
bool bTableExist = true;
foreach(DataRow row in dt.Rows)
{
if (row.ItemArray[2].ToString() != table)
{
bTableExist = false;
}
}
bool ToReturn = true;
if (!bTableExist)
{
try
{
DataTable Source = new DataTable("ref");
DataTable cloneTable = new DataTable(table);
cloneTable = Source.Clone();

}
catch
{
ToReturn = false;
}
}
return ToReturn;

Il n'y a aucune exception de retournée, la table existe bien mais quand je quitte celle-ci n'a pas été enregistrée dans mon fichier mdb, je cherche depuis hier mais je n'ai rien trouvé, une validation avant de quitter pour accepter les changements, rien, s'il vous plait aider moi ... :sad)

4 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
21 janv. 2004 à 17:13
nulle part tu luis dis de copier la table dans la base.
POur copier une table de ta base dans ta base, il faut le faire avec des requetes SQL je pense.

::|The S@ib|::
MVP C#.NET
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
25 janv. 2004 à 21:47
bonjour,

je crois avoir déja répondu à cette même question très récemment. Voici une solution:
Il s'agit de remplir un Dataset à partir d'un DataAdapteur pointant sur la table source et d'utiliser un autre DataAdapteur pointant sur la table cible pour faire l'update
L'idée est de profiter du Dataset pour manipuler les enregistrements avant copie.

void CopieTable()
{
OleDbConnection cnx =null;
try
{
cnx = new OleDbConnection(@"Data Source=""D:\copieTable\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(); }
}
0
cs_xxslayerxx Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 12 juillet 2008
11 juil. 2008 à 13:09
tré bien 9.5/10
ca marche bien
0
cs_xxslayerxx Messages postés 5 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 12 juillet 2008
12 juil. 2008 à 02:52
Dynamic SQL generation is not supported against a SelectCommand that does not return any base table information.
voila ce ke génére le code
0
Rejoignez-nous
A voir également