begin process at 2010 02 10 05:24:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

SQL Server

 > 

Linq2SQL - Un update foireux


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

Linq2SQL - Un update foireux

lundi 17 novembre 2008 à 09:05:04 | Linq2SQL - Un update foireux

yannickiwi

Bonjour, J'essaie de faire un update dans sql server avec linq2sql. Le code se compile, aucune erreur se passe, la mise à jour ne se fait pas. Voici donc le code: [code] private static void editClientAcheteurs(string edit_id, string titre, string nom, string prenom, string tel_priv, string tel_prof, string natel, string fax, string email, string email_prof, string adresse, string adressDeux, string societe) { DataClasses1DataContext db = new DataClasses1DataContext(); Int32 idClient = Convert.ToInt32("" + edit_id + ""); ; xdb_client xdbclient = db.xdb_clients.Single(c => c.id == idClient); try { db.SubmitChanges(); } catch (Exception edex) { MessageBox.Show(edex.Message, "erreur", MessageBoxButtons.OK, MessageBoxIcon.Information); } }[/code] Je vous remercie de l'attention porté à mon message.
lundi 17 novembre 2008 à 09:10:50 | Re : Linq2SQL - Un update foireux

yannickiwi

Désolé, c'est les premières fois que j'utilis le forum ^^. Voici le code: http://pastebin.com/m4a75d815
lundi 17 novembre 2008 à 10:44:37 | Re : Linq2SQL - Un update foireux

nhervagault

Administrateur CodeS-SourceS
Salut,

Il semble manquer des choses dans ton code
Tu fais une selection Single
Mais pas modification dans ton code
xdbclient.AdresseDexu = adressDeux;

Donc ca  semble normal

Ptits conseils
===============
Sinon la signature de ta methode devrait plus rensemblée a
editClientAcheteurs(Client client)
{

}

Dans ce cas tu ne modifies pas les signatures a chaque fois que tu ajoutes un champ sur client
;-)

Mais le datacontext en Singleton (il ne sera instancier qu'une seule fois)



Convert.ToInt32("" + edit_id + ""); Pourquoi ne pas faire Convert.ToInt32(edit_id ) directement?


Bon coding
lundi 17 novembre 2008 à 10:54:33 | Re : Linq2SQL - Un update foireux

yannickiwi

Salut, Merci pour ta réponse. J'ai éditer le convert...mais pour le reste: voici le code qui appelle ma fonction: editClientAcheteurs(edit_id, titre, nom, prenom, tel_priv, tel_prof, natel, fax, email, email_prof, adress_une, adress_deux, societe, clientAcheteur); Evidemment tout celà est pris de formulaire... c'est la raison pour laquelle j'ai fais de cette manière. Comment écrire le code pour qu'il fasse la modification? Moi je me suis dis "xdb.AdressDeux prends la valeur de adresseDeux" donc ca jouait, mais apparemment non :) Meilleures salutations
lundi 17 novembre 2008 à 11:19:26 | Re : Linq2SQL - Un update foireux

nhervagault

Administrateur CodeS-SourceS
J'ai pas compris ce te veux de plus? (la touche entrée de ton clavier ne fonctionne pas??)

IHM

xdb_client c = new xdb_client(); // ou reprise d'un client
c.titre = TextBox1.Text;
....
c.age = Integer.Parse(TextBox2.Text); // faire les cast pour remplir correctement l'objet
//Sauvegarde
ClientSave(c);

public void ClientSave(xdb_client c)
{
var db = db.GetInstance(); //Singleton a coder
xdb_client xdbclient = db.xdb_clients.Single(c => c.id == idClient);
c.id = idClient;
xdbclient = c;
db.SubmitChanges();
}


C'est pas correct. Ca va te donner une idée?

lundi 17 novembre 2008 à 16:27:29 | Re : Linq2SQL - Un update foireux

yannickiwi

xdb_client c = new xdb_client(); // ou reprise d'un client c.titre = TextBox1.Text; c. ne contient aucun champs de ma table, il manquerait quelque chose?
lundi 17 novembre 2008 à 18:41:07 | Re : Linq2SQL - Un update foireux

nhervagault

Administrateur CodeS-SourceS
Je ne connais pas ton code
Normalement c'est une classe qui appartient a ton modele
ne connaissant pas ton modele je ne peut guere t'aider

Bon courage
mardi 18 novembre 2008 à 08:53:59 | Re : Linq2SQL - Un update foireux

yannickiwi

Salut,


Dans mon schemas, j'ai les tables xdb_clients (celle concernée actuellement), xdb_adress et xdb_objets(pas encore créé celle dernière).

Voici un exemple de code du form_load, vu que c'est la forme d'edition et d'ajout:

DataClasses1DataContext

db = newDataClasses1DataContext();
mbTitre.SelectedIndex = 0;

if (!string.IsNullOrEmpty(edit_id))
{
var editClient = from t in db.xdb_clients where t.id.ToString() == edit_id select t;

xdb_client xdbClient = editClient.First();

txtNom.Text = xdbClient.lastName;
txtPrenom.Text = xdbClient.firstName;
txtSociete.Text = xdbClient.societe;
txtTelPriv.Text = xdbClient.tel_prive;
txtTelProf.Text = xdbClient.tel_prof;
txtNatel.Text = xdbClient.natel;
txtEmail.Text = xdbClient.email;
txtEmailProf.Text = xdbClient.email_prof;
txtFax.Text = xdbClient.fax;
}

et le code d'une des forme d'enregistrement:


...

string titre = cmbTitre.SelectedItem.ToString();
string nom = txtNom.Text;
string prenom = txtPrenom.Text;
string societe = txtSociete.Text;
string tel_priv = txtTelPriv.Text;
string tel_prof = txtTelProf.Text;
string natel = txtNatel.Text;
string fax = txtFax.Text;
string email = txtEmail.Text;
string email_prof = txtEmailProf.Text;
string adress_une = txtAdresseUne.Text;
string adress_deux = txtAdressDeux.Text;

if (!string.IsNullOrEmpty(edit_id))
{
editClientAcheteurs(edit_id, titre, nom, prenom, tel_priv, tel_prof, natel, fax, email, email_prof, adress_une, adress_deux, societe, clientAcheteur);
}
else
{
saveClientAcheteurs(titre, nom, prenom, tel_priv, tel_prof, natel, fax, email, email_prof, adress_une, adress_deux, societe, clientAcheteur);
}

...

Si il manque quelque chose, dis le moi :)
mardi 18 novembre 2008 à 19:41:26 | Re : Linq2SQL - Un update foireux

nhervagault

Administrateur CodeS-SourceS
Voila un exemple, il y a peut etre mieux en passant par du binding.

C'est basé sur la table categorie de Northwind et c'est fonctionnel pour la mise a jour ;-)

        private void Form1_Load(object sender, EventArgs e)
        {
            var cat = (from c in model.Categories
                      select c).First();
            textBox1.Text = cat.CategoryName;
            textBox2.Text = cat.Description;
            textBox3.Text = cat.CategoryID.ToString();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            var id = Int32.Parse(textBox3.Text);
            var cat =  (from c in model.Categories
                        where c.CategoryID == id
                      select c).First();

            cat.CategoryName = textBox1.Text;
            cat.Description = textBox2.Text;
            model.SubmitChanges();
        }

 private NorthwindDataContext model = new NorthwindDataContext();


mercredi 19 novembre 2008 à 09:27:01 | Re : Linq2SQL - Un update foireux

yannickiwi

Salut mon ami !

 

Merci à toi de m'aider !

 

En reprenant ton exemple, mon code est maintenant comme ça (pour les boutons):

DataClasses1DataContext

db = new DataClasses1DataContext ();

xdb_adress xdbAdress = new xdb_adress ();

var editClient = ( from t in db.xdb_clients

where t.id.ToString() == edit_id

select t).First();

editClient.titre = cmbTitre.SelectedItem.ToString();

editClient.lastName = txtNom.Text;

editClient.firstName = txtPrenom.Text;

editClient.societe = txtSociete.Text;

editClient.tel_prive = txtTelPriv.Text;

editClient.tel_prof = txtTelProf.Text;

editClient.natel = txtNatel.Text;

editClient.fax = txtFax.Text;

editClient.email = txtEmail.Text;

editClient.email_prof = txtEmailProf.Text;

xdbAdress.adresse_1 = txtAdresseUne.Text;

xdbAdress.adresse_2 = txtAdressDeux.Text;

if (! string .IsNullOrEmpty(edit_id))

{

db.SubmitChanges();

}

else

{

saveClientAcheteurs(titre, nom, prenom, tel_priv, tel_prof, natel, fax, email, email_prof, adress_une, adress_deux, societe, clientAcheteur);

}

Je ne suis pas sur au niveau de la table adress vu que adress est lié à client... peut etre dois-je faire un inner join dans ma requete EDITCLIENT?
Je me dis ça car dans ma form principal, pour le datagridview j'ai:

var clientAcheteurs = ( from p in db.xdb_clients

join a in db.xdb_adresses

on p.adress equals a.id

where p.typeClients == "Acheteur"

select new

{

Nom = p.lastName,

Prnom = p.firstName,

Socit = p.societe,

Email = p.email,

Tlphone = p.natel,

Adresse = a.adresse_1,

AdresseSecondaire = a.adresse_2

}).Distinct();

this .gridStandard.DataSource = clientAcheteurs.ToList();

comme tu peux le voir je fais un join sur l'adresse :)



Sinon, comme tu peux le voir, si edit_id est égal à nul, il passe dans le else qui fait va dans la fonction saveClientAcheteurs. Mais voilà que les paramètre n'existe plus vu que j'ai utilisé ta méthode. Ma question est donc: Est-ce qu'il y a une manière plus rapide que de refaire chaque ligne du style:
string titre = ...
string name = ...
...
saveClientAcheteurs(.....); ?


Je te remercie de l'attention porté à mon message

Yannick


1 2

Cette discussion est classée dans : code, string, id, update, linq2sql


Répondre à ce message

Sujets en rapport avec ce message

Probleme d'insert db access [ par space ] Je suis desole de poser des questions aussi stupides mais bon je vois pas je suis callé. J'aimerais realise un insert dans une bd access et pour cela erreur d'update [ par Florynth ] Bon la je comprend rien !!!j'ai un code pour modifier en asp.net c# une base de donné via un formulaire... Pas comliqué c'est pour un forumvoici un bo Del string [ par JCpp ] Pour libérer de la mémoire, je voudrai effacer le contenu d'un stringExemple : string toto = "titi";devient toto = "";Et la même chose pour les autre CreateText() [ par JCpp ] Je voudrais enregistrer une page d'un site en format XML.J'ai trouvé une source qui mémorise le contenu de la page en «string»http://www.csharpfr.com/ int (ASCII) to char (ou string) [ par JuS ] Bonjour amis développeurs cshapriens,Je cherche à récupérer le caractère correspondant à un code ASCII.Comment faire ???//code ASCII du "A"int code = Appelle d'une méthode en ne connaissant que son nom [ par Arthenius ] hello tout le monde,je cherche à générer un menu de maniere dynamique en fonction des données stockées dans une de mes tables.je stock dans ma table l Performances / CIL [ par MorpionMx ] Bonjour a tous, J'ai envie de commencer la journée par une question de performance.Soit un programme minimaliste qui crée un entier i et qui l'affiche Update d'une table avec des TexBox d'un formulaire [ par viper48 ] Bonjour à tous , voila g un formulaire avec des TextBox et DropDownList.Etape 1: Compléter le formulaire et insérer dans la db sql server en cliquant Probleme procédures stockées [ par 238723 ] Bonjour j'ai un problème pour afficher le résultat d'un procédure stockées dans un TextBoxVoici un code qui marche en utilisant une requête:/*private Cryptage décryptage [ par maevacmoi ] Hello !Je dois créer pour aujourd'hui 15h une fonction C# permettant d'encrypter (et décrypter) un string avec une clef donnée (cf ci-dessous). J'ai t


Nos sponsors


Sondage...

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,328 sec (4)

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