begin process at 2010 02 10 05:34:21
  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 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 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 Propriétés et Control personnalisé [ par Claudebf ] Salut à tous------------ Je rencontre deux problèmes liés lors de la conception d'un control personnalisé. Le premier est celui-ci : J'ai des couleurs workflow rehosting execution [ 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'uti Problème de cast [ par Leucistic ] Bonjour, Voici le bout de code où ce qui est en rouge génère l'erreur suivante :Impossible de convertir implicitement le type 'int' en 'byte'. Une con manipulation des fichiers [ par verbeyst ] Bonjour j'ai ds une BD sql server entre autres une table contenant quelques infos sur des fichiers, précisément l'historiques des évènements concern Update du dataset [ par jcnormandin ] Bonjour, je suis débutant en C# et j'ai un problème avec l'update d'un dataset avec System.Data.SqlClient. Je suis capable de remplir mon dataset avec replissage de combobox [ par nehla ] salutj'ai créer plusieurs combobox en c# et je veux les remplir par la meme information.voici le code de creation de ces comboboxint x=24;           


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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,733 sec (3)

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