IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Update avec INNER JOIN


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 28
    Par défaut Update avec INNER JOIN
    Bonjour,

    j'ai une base de donnée access avec 2 table (table1 et table2)

    une colonne de la table1 contient le numéro qui represente un nom dans la table2.

    pour afficher les information dans une listview par exemple je fais un INNER JOIN Table2 ON Table1.Nom = Table2.N (par exemple)

    maintenant dans ma forme j’édite les information et je change le nom qui bien sur a son numéro dans la table2

    quand je fais un UPDATE comment faire pour inscrire le numéro du nom au lieu du nom qui de toute façon ne marchera pas vu que c'est du text alors que le champ et en numéro.

    par defaut, je vais en premier chercher le Numéro (N) du nouveau nom avant de faire un UPDATE, mais j'aurais aimé savoir s'il y avait un moyen de le faire plus rapidement avec un INNER JOIN par exemple.

    merci par avance.

  2. #2
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Trouvé sur le forum. Perso je n'ai pas encore essayé. je fais les updates des tables séparément. Mais la solution m’intéresse ;-)

    http://www.developpez.net/forums/d11...inture-update/
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 28
    Par défaut
    je crois ce n'est pas vraiment ce que je cherche :

    en complément de ce que j'ai dis plus haut, quand je récupere les données apres la SELECT: j'ai une donnée dans un comboBox qui est deja remplis au chargement par d'autre données.

    si je change le text de cette combobox et que j'enregistre avec un UPDATE, je ne dois pas envoyer le text qui est dans la combobox mais le numéro (ID) en relation avec le text (champ Nom par exemple)

    d'habitude ce que je fais c'est faire un SELECT ID du text choisi dans la table correspondante avant de faire un UPDATE dans la table qui m’intéresse ....

  4. #4
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    je ne sais pas si ton application est en Winform ou WPF, mais je ne saurais que de te conseiller de faire une recherche du coté du DataBinding. J'ai l'impression que tu réécris ce qui existe déjà dans le FrameWork (je parle ici au niveau des accès aux données, et je l'ai fais aussi à mes débuts).

    Je te conseille de voir (si tu ne connais pas encore bien sur) du coté des Dataset, DataAdapter , etc qui pourrait vraiment te simplifier la vie après une courte période d'apprentissage.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Algérie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 28
    Par défaut
    oui malheureusement pour le moment je ne connais que les requete SQL avec les DATEREADER ....

    donc j'ecris une requete pour afficher les données, une autre pour les inserer, une autre pour les mise a jours ....

    a mes debut je n'ai pas aimé le principe du databinding, je crois que j'ai du voir un tuto mal écrit !

    a ce propos, j'aimerai savoir si c'est vraiment beaucoup mieux de travailler avec les databinding, je sais que niveau code c'est beaucoup plus rapide a ecrir, mais niveau puissance, possibilité, je ne sais pas si on peut tout faire comme pour les requete SQL (je parle des longue requete compliqué)

    bon la méme si je commence a apprendre je n'aurai pas le temps de tout refaire, c'est un projet que j'ai commencé y a un moment avec 13 form deja et une base de donnée en 15 Table avec jointure. je me vois mal tout récrire

    sinon je suis en winform.

  6. #6
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Il n'y a pas de soucis pour utiliser un dataset avec des requêtes complexes. En fait un dataset est un ensemble entre autre de DataTable entre lesquelles tu peux aller jusqu'à recréer les différentes relations et donc recréer le schéma de ta DB mais en mémoire.

    Sur chaque DataTable constituant ce DataSet, tu peux utiliser des DataView (correspondant au vues des SGBD). Sur celle-ci tu peux appliquer un RowFilter qui correspond à la clause WHERE d'une requête.

    Et pour chaque composant visuel comme une ComboBox, DataGridView etc tu peux définir une DataTable ou DataView comme source.

    Dans ton cas, il y aurait donc ta connexion, puis un DataAdapter par table. Celui-ci comprend des propriétés représentant les requêtes SELECT, INSERT et UPDATE pour chaque table.

    Donc en gros tu charges tes données, tes différents composants graphiques sont liés aux DataTable ou DataView en fonction des besoins. Les modifications effectuées sont sauvées dans les DataTable du DataSet. Et lors d'une sauvegarde tu appelles la méthode Update sur les DataTable et le mécanisme enregistre le tout dans ta base de données.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par deado Voir le message
    Bonjour,

    j'ai une base de donnée access avec 2 table (table1 et table2)

    une colonne de la table1 contient le numéro qui represente un nom dans la table2.

    pour afficher les information dans une listview par exemple je fais un INNER JOIN Table2 ON Table1.Nom = Table2.N (par exemple)
    .
    La jointure habituellement ça se fait sur la clef primaire d'une des deux tables, ou en tout cas sur un champ qu'on ne modifie pas.

    Une jointure sur le nom, sauf cas particulier, ce n'est pas recommandé.

    Par ailleurs,une instruction UPDATE (ou DELETE ou INSERT) n'opére que sur une seule table en SQL, même si on peut être amené fréquemment à mettre une jointure pour les conditions de sélection des lignes affectées.

Discussions similaires

  1. Requête update avec inner join
    Par mattmax dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 23/05/2013, 14h53
  2. REQUETE UPDATE avec INNER JOIN
    Par vero81 dans le forum SQL
    Réponses: 1
    Dernier message: 07/08/2009, 16h45
  3. Problème avec UPDATE et INNER JOIN
    Par korbn dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2009, 20h52
  4. UPDATE avec INNER JOIN
    Par steelidol dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 03/03/2006, 23h56
  5. [Oracle] problème avec INNER JOIN
    Par Philofish dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/09/2005, 10h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo