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

Windows Forms Discussion :

Connection multi tables


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut Connection multi tables
    Bonjours,
    J'aimerai connecter une base Access avec ADO.NET avec une reqête MultiTables.

    Je me connect de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    sSQL = "SELECT * FROM Tireurs T, Societe S WHERE T.T_IdSociete = S.S_IdSociete ORDER BY T_Nom, T_Prenom;"
    Cl25m_Connection = New OleDbConnection
    Cl25m_Connection''Ouvrir la connection
    Cl25m_Connection.Open()
    Cl25m_Command = New OleDbCommand(sSQL)
    Cl25m_DataAdapter = New OleDbDataAdapter(Cl25m_Command)
    Cl25m_Command.Connection = Cl25m_Connection
    Cl25m_DataAdapter.Fill(Cl25m_DataSet, "Tireurs")
    Cl25m_DataTable = Cl25m_DataSet.Tables("Tireurs")
     
    ''Ajout
    Cl25m_Lignes = Cl25m_DataSet.Tables("Tireurs").NewRow()
    Cl25m_Lignes("T_Nom") = Me.txtNom.Text
    Cl25m_DataSet.Tables("Tireurs").Rows.Add(Cl25m_Lignes)
    MONCommandBuilder = New OleDbCommandBuilder(Cl25m_DataAdapter)
    Cl25m_DataSet.Clear()
    Cl25m_DataAdapter.Fill(Cl25m_DataSet, "Tireurs")
    Cl25m_DataTable = Cl25m_DataSet.Tables("Tireurs")
    Lorsque je fais un ajout j'ai un message d'erreur qui me dit que le multitable n'est pas géré

    Merci d'avance
    FikoU

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 169
    Points : 25 099
    Points
    25 099
    Par défaut
    le pauvre access ne doit pas trop s'y retrouver en effet
    je sais meme pas si sql server gère l'ajout sur une "vue" ...

    fai une requete d'insert ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Merci,

    Je débute en VB.NET
    Avec ADODB sous VB6 le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM Tireurs T, Societe S WHERE T.T_IdSociete = S.S_IdSociete ORDER BY T_Nom, T_Prenom;"
    fonctionnai

    Comment dans mon cas tu applique une requête ?

    FikoU

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    J'ai eu un doute et je suis allé revoir mon code VB6 de l'an passé

    Requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sSql = sSql & "SELECT " & T_CibleVersoix
    sSql = sSql & "FROM  Tireurs T, CibleVersoix A, Societe S "
    sSql = sSql & "WHERE T.T_IdSociete = S.S_IdSociete AND T.T_IdTireur = A.CV_IdTireur "   ''AND A.CV_Distance = '" & sDistance & "'" & " "
    sSql = sSql & "ORDER BY A.CV_Total DESC, A.CV_Cp1 DESC, A.CV_Cp2 DESC, A.CV_CP3 DESC, A.CV_CP4 DESC, A.CV_CP5, A.CV_CP6 DESC, A.CV_CP7 DESC, A.CV_CP8 DESC, T.T_Categorie ASC, T.T_DateNaiss ASC"
    Ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    adoRSSoc.AddNew
    adoRSSoc!CV_IdTireur = iIdTireur
    adoRSSoc!CV_Cp1 = Val(txtCoup(0).Text)
    ........
    adoRSSoc!CV_Appui = Val(txtAppui.Text)
    adoRSSoc!CV_Licence = adoRSSoc!T_Licence
    adoRSSoc.Update
    Fonctionnai nickel en ADO.NET on ne peut pas faire ça

    FikoU

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Juillet 2004
    Messages : 155
    Points : 151
    Points
    151
    Par défaut
    Dans ta requête, * ne precise pas les champs de la table que tu desir avoir. Je pense qu'il faut preciser les champs comme ceci:
    sSQL = "SELECT T.T_Nom,S.S_IdSociete FROM Tireurs T, Societe S WHERE T.T_IdSociete = S.S_IdSociete ORDER BY T_Nom, T_Prenom;"

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Salut et merci,
    Je précise les champs dans la variable T_CibleVersoix.
    FikoU

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Juillet 2004
    Messages : 155
    Points : 151
    Points
    151
    Par défaut
    Si je comprend bien, T_CibleVersoix n'est rien d'autre que la prescision de tes champ?

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Juillet 2004
    Messages : 155
    Points : 151
    Points
    151
    Par défaut
    Je suppose que c'est un enregistrement tu veux faire. Pourquoi ne pas utiliser un update dans ce cas?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Oui,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public Const T_CibleVersoix = "T_IdTireur, T_IdSociete, T_Nom, T_Prenom, T_DateNaiss, T_Licence, T_Categorie, CV_IdTireur, " & _
          "CV_Cp1, CV_Cp2, CV_Cp3, CV_Cp4, CV_Cp5, CV_Cp6, CV_Cp7, CV_Cp8, CV_Total, CV_Cat, CV_Appui, CV_Licence, S_IdSociete, S_NomSociete "
    FikoU

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Juillet 2004
    Messages : 155
    Points : 151
    Points
    151
    Par défaut
    Dans
    Public Const T_CibleVersoix = "T_IdTireur, T_IdSociete, T_Nom, T_Prenom, T_DateNaiss, T_Licence, T_Categorie, CV_IdTireur, " & _
    "CV_Cp1, CV_Cp2, CV_Cp3, CV_Cp4, CV_Cp5, CV_Cp6, CV_Cp7, CV_Cp8, CV_Total, CV_Cat, CV_Appui, CV_Licence, S_IdSociete, S_NomSociete "
    Tu ne precise pas la table qui est rattachachée à chaque champ comme
    T.T_Nom
    par exemple.
    Et comme je l'ai dis plus haut dans le cas des enregistrements dans une base, le Update est mieux adapté et le select dans le cas de la lecture

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    OK et merçi,

    Je vais tester tout ça.
    Je dois dire que je nage avec ADO.NET et ses DataAdapter, DataSet ect.
    J'ai vu sur ce site un bon tuto ADO.NET
    Avec tout ça mon appli n'avance pas

    Encore Merci

    FikoU

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Juillet 2004
    Messages : 155
    Points : 151
    Points
    151
    Par défaut
    sSQL = "SELECT * FROM Tireurs T, Societe S WHERE T.T_IdSociete = S.S_IdSociete ORDER BY T_Nom, T_Prenom;"
    Cl25m_Connection = New OleDbConnection
    Cl25m_Connection''Ouvrir la connection
    Cl25m_Connection.Open()
    Cl25m_Command = New OleDbCommand(sSQL)
    Cl25m_DataAdapter = New OleDbDataAdapter(Cl25m_Command)
    Cl25m_Command.Connection = Cl25m_Connection
    Cl25m_DataAdapter.Fill(Cl25m_DataSet, "Tireurs")
    Cl25m_DataTable = Cl25m_DataSet.Tables("Tireurs")

    ''Ajout
    Cl25m_Lignes = Cl25m_DataSet.Tables("Tireurs").NewRow()
    Cl25m_Lignes("T_Nom") = Me.txtNom.Text
    Cl25m_DataSet.Tables("Tireurs").Rows.Add(Cl25m_Lignes)
    MONCommandBuilder = New OleDbCommandBuilder(Cl25m_DataAdapter)

    Cl25m_DataSet.Clear()
    Cl25m_DataAdapter.Fill(Cl25m_DataSet, "Tireurs")
    Cl25m_DataTable = Cl25m_DataSet.Tables("Tireurs")
    Est-ce qu'il ne manque pas un update dans ton code?
    Comme:
    Cl25m_DataAdapter.Update(Cl25m_DataSet, "Tireurs")
    Ensuite ton enregistrement se fait uniquement sur T_Nom pourquoi ne pas faire simple comme ça:
    sSQL = "SELECT T_Nom FROM Tireurs ORDER BY T_Nom, T_Prenom;"

    Cl25m_Connection = New OleDbConnection
    Cl25m_Connection''Ouvrir la connection
    Cl25m_Connection.Open()
    Cl25m_Command = New OleDbCommand(sSQL)
    Cl25m_DataAdapter = New OleDbDataAdapter(Cl25m_Command)
    Cl25m_Command.Connection = Cl25m_Connection
    Cl25m_DataAdapter.Fill(Cl25m_DataSet, "Tireurs")
    Cl25m_DataTable = Cl25m_DataSet.Tables("Tireurs")

    ''Ajout
    Cl25m_Lignes = Cl25m_DataSet.Tables("Tireurs").NewRow()
    Cl25m_Lignes("T_Nom") = Me.txtNom.Text
    Cl25m_DataSet.Tables("Tireurs").Rows.Add(Cl25m_Lignes)
    MONCommandBuilder = New OleDbCommandBuilder(Cl25m_DataAdapter)
    Cl25m_DataAdapter.Update(Cl25m_DataSet, "Tireurs")
    Cl25m_DataSet.Clear()
    Cl25m_DataAdapter.Fill(Cl25m_DataSet, "Tireurs")
    Cl25m_DataTable = Cl25m_DataSet.Tables("Tireurs")

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 311
    Points : 96
    Points
    96
    Par défaut
    Bonjour,
    OK je vais faire comme ça.
    Une petit et dernière question :
    Est il possible de récupérer le NumeroAuto avant le
    FikoU

Discussions similaires

  1. Création d'un état multi-tables
    Par rossy dans le forum Access
    Réponses: 1
    Dernier message: 21/10/2005, 14h40
  2. requete multi table - multi champ
    Par Jean-Matt dans le forum Oracle
    Réponses: 6
    Dernier message: 14/10/2005, 17h18
  3. connecter des tables
    Par edith dans le forum Access
    Réponses: 1
    Dernier message: 05/10/2005, 09h38
  4. Sélection multi table avec condition
    Par iuz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 05/05/2004, 15h04
  5. UPDATE multi-tables sous SQL Server
    Par Cybernet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 25/03/2004, 15h34

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