begin process at 2012 02 10 03:14:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Base de données

 > 

problème d'Update dans DataSet


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème d'Update dans DataSet

dimanche 22 mai 2005 à 21:22:23 | problème d'Update dans DataSet

falcon16

Salut à tous,

bon j'en viens à vous parce que après une aprem complète à plancher là dessus, je n'y comprends plus rien ...
J'explique mon problème. J'ai une table qui s'appelle Avenant, et qui contient 5 champs :
la clé primaire, nom du champ : i_avIndex, type int, taille 4 octets
un entier, i_avCode, type int, taille 4 octets
un libellé, s_avLibelle, type varchar, longueur 50
un entier, i_avModifPar, type int, longueur 4
une date, d_avModifLe, type datetime, longueur 8

j'affiche cette table dans un datagrid via un dataset et un sqldataadapter ( la table est dans une base sous MS SQL Server 2000 )
Pour le select, l'insert et le delete tout va bien, mais pour l'update j'ai une erreur de type sql : erreur de syntaxe près de 'update'

Voici mon code :

// mes attributs
private SqlCommand m_sqlCmdSelect, m_sqlCmdInsert, m_sqlCmdUpdate, m_sqlCmdDelete;
private SqlDataAdapter m_sqlDataAdapter;
private DataSet m_ds;
private string m_strTable;
private int m_iIdUser;

[...]

// code d'instantiation des objets
this.m_sqlDataAdapter = new SqlDataAdapter();
this.m_strTable = "Avenant";
this.m_sqlCmdSelect = new SqlCommand("SELECT i_avIndex, i_avCode AS Code, s_avLibelle AS Libellé FROM Avenant;",this.m_sqlConnect);
this.m_sqlCmdSelect.CommandType = CommandType.Text;

this.m_sqlCmdInsert = new SqlCommand("INSERT INTO Avenant( i_avCode, s_avLibelle, i_avModifPar, d_avModifLe ) VALUES (@i_avCode, @s_avLibelle, " + this.m_iIdUser + ", '" + System.DateTime.Now + "' ); SELECT i_avIndex, i_avCode AS Code, s_avLibelle AS Libellé FROM Avenant WHERE i_avIndex = @@IDENTITY;",this.m_sqlConnect);
this.m_sqlCmdInsert.Parameters.Add(new SqlParameter("@i_avCode", SqlDbType.Int, 4, "Code"));
this.m_sqlCmdInsert.Parameters.Add(new SqlParameter("@s_avLibelle", SqlDbType.VarChar, 50, "Libellé"));

this.m_sqlCmdUpdate = new SqlCommand(@"UDPATE Avenant SET i_avCode = @i_avCode, s_avLibelle = @s_avLibelle, i_avModifPar = " + this.m_iIdUser + ", d_avModifLe = '" + System.DateTime.Now + "' WHERE i_avIndex = @Original_i_avIndex; SELECT i_avIndex, i_avCode AS Code, s_avLibelle AS Libellé FROM Avenant WHERE i_avIndex = @i_avIndex;",this.m_sqlConnect);
this.m_sqlCmdUpdate.Parameters.Add(new SqlParameter("@i_avCode", SqlDbType.Int, 4, "Code"));
this.m_sqlCmdUpdate.Parameters.Add(new SqlParameter("@s_avLibelle", SqlDbType.VarChar, 50, "Libellé"));
this.m_sqlCmdUpdate.Parameters.Add(new SqlParameter("@Original_i_avIndex", SqlDbType.Int, 4, ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "i_avIndex", DataRowVersion.Original, null));
this.m_sqlCmdUpdate.Parameters.Add(new SqlParameter("@i_avIndex", SqlDbType.Int, 4, "i_avIndex"));

this.m_sqlCmdDelete = new SqlCommand("DELETE FROM Avenant WHERE i_avIndex = @i_avIndex", this.m_sqlConnect);
this.m_sqlCmdDelete.Parameters.Add(new SqlParameter("@i_avIndex", SqlDbType.Int, 4, "i_avIndex"));
this.m_sqlDataAdapter.TableMappings.AddRange(new DataTableMapping[] {new DataTableMapping("Table",this.m_strTable,new DataColumnMapping[] { new DataColumnMapping("i_avIndex", "i_avIndex"), new DataColumnMapping("Code", "Code"), new DataColumnMapping("Libellé", "Libellé") })});

//on utilise le dataadapter pour remplir le dataset
//on attribue la command au SelectCommand
this.m_sqlDataAdapter.SelectCommand = this.m_sqlCmdSelect;
this.m_sqlDataAdapter.UpdateCommand = this.m_sqlCmdUpdate;
this.m_sqlDataAdapter.InsertCommand = this.m_sqlCmdInsert;
this.m_sqlDataAdapter.DeleteCommand = this.m_sqlCmdDelete;

//on construit le dataset
this.m_ds = new DataSet(this.m_strTable);
((System.ComponentModel.ISupportInitialize)(this.m_ds)).BeginInit();
this.m_ds.DataSetName = "m_ds";
this.m_ds.Locale = new System.Globalization.CultureInfo("fr-FR");
this.m_ds.Clear();

//On rempli le dataset
this.m_sqlDataAdapter.Fill(this.m_ds,this.m_strTable);

// on masque la 1ere colonne qui correspond à l'index SQL
this.m_ds.Tables[this.m_strTable].Columns[0].ColumnMapping = MappingType.Hidden;

//on affecte le datasource du datagrid afin de visualiser les données
this.DataSource = this.m_ds.Tables[this.m_strTable];

// code utilisé pour mettre à jour après modifications
public bool Recharger()
{
   bool l_bRet;
   try
   {
      this.m_sqlDataAdapter.Update(this.m_ds, this.m_strTable);
      l_bRet = true;
   }
   catch( SqlException ex )
   {
      switch (ex.Number)
      {
         case 547: MessageBox.Show("Vous ne pouvez supprimer cette valeur car elle est actuellement utilisée dans la base","Erreur",MessageBoxButtons.OK,MessageBoxIcon.Error);
         break;

         default : MessageBox.Show(ex.ToString());
         break;
      }
      l_bRet = false;
   }
   finally
   {
      this.m_ds.Clear();
      this.m_sqlDataAdapter.Fill(this.m_ds,this.m_strTable);
   }
   return l_bRet;
}


J'ai testé en créant tout à l'aide du designer de Visual ( vu que j'ai pompé ce code en fait ) et j'ai exactement la même chose, sauf que ça marche alors que mon code ne marche pas ... :'(
Merci d'avance de vos réponses ..

lundi 23 mai 2005 à 09:28:12 | Re : problème d'Update dans DataSet

stampeed

bon c'est bon laissez tomber ...
j'ai ajouté le dataset, et le dataadpater à partir du designer et j'ai un poil retouché les requêtes et c'est bon ça marche, mais c'est à n'y rien comprendre ...

bref ...

lundi 23 mai 2005 à 12:03:22 | Re : problème d'Update dans DataSet

falcon16

pardon, j'ai posté avec le compte d'un collègue ( on bosse ensemble sur le même projet ... )



Cette discussion est classée dans : code, ds, sqldataadapter, avindex, avcode


Répondre à ce message

Sujets en rapport avec ce message

datagrid [ par mapo62 ] bonjour,Quand on crée une arborescence dans un DataGrid, est il possible de dérouler l'arobrescence automatiquement dès le remplissage de la grille sa code du bouton update (valider ou activer) [ par manou_slai ] slt,en faite, j'ai un datagrid avec des données, la dernière colonne de cette datagrid conntient des checkbox et un bouton au dessous , je dois coche workflow execution rehosting [ par Selmih ] Bonjour tout le monde Je sius entrain de developper une app windows form ds laquel j'ai rehost  workflow designer ,donc avec des taches prédefint l'ut Le code qui cause problème [ par polinevol ] Oui, le code... le voici :string strConn = @"Data Source=""C:\comptoir.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";User ID=Admin";OleDbConnection Conne Effectuer un insert avec le SqlDataAdapter [ par disciplined ] Bonjour, Mon souci doit être très simple, a tel point que personne n'a trouvé utile d'expliciter le point qui me bloque. Je n'ai pas trouvé la solutio requete pour faire recherche c# [ par yesman0222 ] bonjour, j'ai une datagridview je veux ajouter une requête dont la clause where est : j'ai copier coller le même code pour afficher la table j'ai fai Besoin d' aide sur Crystal report Pleasee!!!! [ par hindouch ] Bonsoir , je dois générer un rapport sous crystal report,j ai suivi tt les étape , ca ne génére aucune erreur et le fichier ne s affiche pas j ai de DataSet modification de données [ par Shaun20 ] Bonjour, Voila j'ai un petit souci, j'ai une liste d'UF ou sont stocké des ordinateurs et imprimantes, cette liste d'UF est appelée par une méthode WPF : Problème de AutoSize [ par cboulas ] [code=html][/code]Salut la communauté, Voilà j'ai un petit soucis (XAML), j'ai un DockPanel qui contient diverses controles docké. jusque là c'est ok Listbox et Dataset [ par bridierb ] Bonjour, Je souhaiterais afficher dans une Listbox les noms et les prénoms des enfants de ma famille. J'ai créé une base Access (famille)dans laquell


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,686 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales