cs_Cameleon69
Messages postés98Date d'inscriptionlundi 31 décembre 2001StatutMembreDernière intervention 7 août 2005
-
21 janv. 2004 à 09:37
cs_xxslayerxx
Messages postés5Date d'inscriptionvendredi 22 février 2008StatutMembreDernière intervention12 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)
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 200723 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.
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 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(); }
}