Doublon fatal d'un champ dans Datagrid

Résolu
Signaler
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009
-
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009
-
Bonjour à tous.
Voila mon problème  : je programme une application windows sous visual studio 2005 en vb.net avec un bdd access 2000(pas le choix).
Du coup par l'intermédiaire d'un DataAdapter je charge plusieurs tables dans un Dataset puis j'affiche le résultats dans un Datagrid.
Mais o maman que se passe-t-il?
Un des champs se répète pour chaque requete....

Je suis sous win XP Pro, Visual studio 2005, Access 2000.
Je vous remerci d'avance pour vos réponses car là, je commence à atteindre le fond.

Voici mon code :

-----------------------------------
Public Class Report1

    Private Sub Report_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim oDataset As DataSet = New DataSet("oDataset")

        'Chaque Système de Gestion de base de Données(SGBD) a des erreurs spécifiques
        'Pour les détecter il faut utiliser les types d'erreurs spécifiques : dans notre cas 'OleDbException
        'Exemple :
        'Try
        'MyConnection.Open()
        'Catch es As OleDbException
        'MsgBox(ex.Message)
        'End Try
        Try
            Dim oConnection As OleDb.OleDbConnection New OleDb.OleDbConnection("Provider Microsoft.Jet.OLEDB.4.0;" & "Data source = C:\Documents and Settings\edi\Bureau\Tahar's\AP\APDotVbClip\Test.mdb;")

            'Si la propriété EnforceConstraints du DataSet est à False,
            'les contraintes ne sont pas appliquées au dataset,
            'donc l'ordre des adapteurs n'a pas d'importance.
            oDataset.EnforceConstraints = False     'litéralement : Ne pas prendre en charge les contraintes

            'Déclaration et création de l'objet DataAdapter
            'et remplissage du dataset grâce aux requetes
            'Dim oAdapt As New OleDb.OleDbDataAdapter("SELECT [CLIP_XDOSCLI].[XBPC_0], [CLIP_XDOSCLI].[XCODBANK_0], " & _
            '"[CLIP_XBANQUE].[XBQNAM_0], [CLIP_XDOSCLI].[XCODPRO_0], [CLIP_SPACKD].[ITMDES1_0], [CLIP_XDOSCLI].[XDCNUM_0], " & _
            '"[CLIP_XDOSCLI].[XCOMDAT_0], [CLIP_XDOSCLI].[XREFCLI_0], [CLIP_SDELIVERY].[DLVDAT_0], [CLIP_XDOSCLI].[XDELIVDEM_0], " & _
            '"[CLIP_XDOSCLI].[XBATRET_0], [CLIP_XDOSCLI].[XDATBL_0], [CLIP_XDOSCLI].[XQTEDEM_0], [CLIP_SINVOICED].[QTY_0], " & _
            '"[CLIP_XDOSCLI].[XMONTANT_0], [CLIP_XDOSCLI2].[XNBFEUIL_0], [CLIP_XDOSCLI2].[XRECT1_0], [CLIP_XDOSCLI2].[XRECT2_0], " & _
            '"[CLIP_XDOSCLI2].[XRECT3_0], [CLIP_XDOSCLI2].[XRECT4_0], [CLIP_XDOSCLI2].[XRECT5_0], [CLIP_XDOSCLI2].[XRECT6_0], " & _
            '"[CLIP_XDOSCLI2].[XVERS1_0], [CLIP_XDOSCLI2].[XVERS2_0], [CLIP_SDELIVERY].[NETWEI_0], [CLIP_SDELIVERY].[SDHNUM_0] " & _
            '"FROM [CLIP_XDOSCLI], [CLIP_SPACKD], [CLIP_SINVOICED], [CLIP_SDELIVERY], [CLIP_XDOSCLI2] " & _
            '"WHERE [CLIP_SDELIVERY].[XDCNUM_0] = [CLIP_XDOSCLI].[XDCNUM_0] AND " & _
            '"[CLIP_SDELIVERY].[XDCNUM_0] = [CLIP_XDOSCLI2].[XDCNUM_0] AND " & _
            '"[CLIP_SDELIVERY].[XBQNUM_0] = [CLIP_XBANQUE].[XBQNUM_0] AND " & _
            '"[CLIP_SDELIVERY].[SDHNUM_0] = [CLIP_SINVOICED].[SDHNUM_0] AND " & _
            '"[CLIP_SINVOICED].[XBQNUM_0] = [CLIP_XDOSCLI].[XBQNUM_0] AND " & _
            '"[CLIP_XDOSCLI].[XNUMDEB_0] = [CLIP_SPACKD].[XNUMDEB_0]; ", oConnection)

            Dim oAdaptBQ As New OleDb.OleDbDataAdapter("SELECT XBQNAM_0 FROM [CLIP_XBANQUE] ", oConnection)
            Dim oAdaptSDEL As New OleDb.OleDbDataAdapter("SELECT DLAVDAT_0, NETWEI_0, SDHNUM FROM [CLIP_SDELIVERY]", oConnection)
            Dim oAdaptSIN As New OleDb.OleDbDataAdapter("SELECT QTY_0 FROM [CLIP_SINVOICED]", oConnection)
            Dim oAdaptSPA As New OleDb.OleDbDataAdapter("SELECT ITMDES1_0 FROM [CLIP_SPACKD]", oConnection)
            Dim oAdaptXDOS As New OleDb.OleDbDataAdapter("SELECT XBPC_0, XCODBANK_0, XCODPRO_0, DISTINCT CLIP_XDOSCLI.XDCNUM_0, " & _
            "XCOMDAT_0, XREFCLI_0, XDELIVDEM_0, XBATDRET_0, XDATBL_0, XQTEDEM_0, XMONTANT_0 FROM [CLIP_XDOSCLI] GROUP BY CLIP_XDOSCLI.XDCNUM_0 ", oConnection)
            Dim oAdaptXDOS2 As New OleDb.OleDbDataAdapter("SELECT XNBFEUIL_0, XRECT1_0, XRECT2_0, XRECT3_0, " & _
            "XRECT4_0, XRECT5_0, XRECT6_0, XVERS1_0, XVERS2_0 FROM [CLIP_XDOSCLI2]", oConnection)

            'Création des colonnes pour les datarelations
            Dim dc1 As DataColumn
            Dim dc2 As DataColumn
            Dim dc3 As DataColumn
            Dim dc4 As DataColumn
            Dim dc5 As DataColumn
            Dim dc6 As DataColumn
            Dim dc7 As DataColumn
            Dim dc8 As DataColumn

            'Création d'une table contenat tous les champs requis
            'Dim oTable As DataTable = New DataTable("oCNCE")

            Dim oTableBQ As DataTable = New DataTable("oCNCE")
            Dim oTableSDEL As DataTable = New DataTable("oCNCE")
            Dim oTableSIN As DataTable = New DataTable("oCNCE")
            Dim oTableSPA As DataTable = New DataTable("oCNCE")
            Dim oTableXDOS As DataTable = New DataTable("oCNCE")
            Dim oTableXDOS2 As DataTable = New DataTable("oCNCE")

            'Remplissage de la datatable à partir de la requete sql
            'oAdapt.Fill(oTable)

            oAdaptBQ.TableMappings.Add("Table", "oTableBQ")
            oAdaptBQ.Fill(oDataset)
            oAdaptSDEL.TableMappings.Add("Table", "oTableSDEL")
            oAdaptSDEL.Fill(oDataset)
            oAdaptSIN.TableMappings.Add("Table", "oTableSIN")
            oAdaptSIN.Fill(oDataset)
            oAdaptSPA.TableMappings.Add("Table", "oTableSPA")
            oAdaptSPA.Fill(oDataset)
            oAdaptXDOS.TableMappings.Add("Table", "oTableXDOS")
            oAdaptXDOS.Fill(oDataset)
            oAdaptXDOS2.TableMappings.Add("Table", "oTableXDOS2")
            oAdaptXDOS2.Fill(oDataset)

            dc1 = oDataset.Tables("oTableBQ").Columns("XBQNUM_0")
            dc2 = oDataset.Tables("oTableSDEL").Columns("XBQNUM_0")
            dc3 = oDataset.Tables("oTableSDEL").Columns("XDCNUM_0")
            dc4 = oDataset.Tables("oTableXDOS").Columns("XDCNUM_0")
            dc5 = oDataset.Tables("oTableXDOS2").Columns("XDCNUM_0")
            dc6 = oDataset.Tables("oTableSDEL").Columns("SDHNUM_0")
            dc7 = oDataset.Tables("oTableSIN").Columns("SDHNUM_0")
            dc8 = oDataset.Tables("oTableSIN").Columns("XDCNUM_0")

            'Here we combined two datacolumns to the relations obj
            Dim DataRelation = New DataRelation("TabSDELandTabXDOS", dc3, dc4)
            oDataset.Relations.Add(DataRelation)
            Dim DataRelation1 = New DataRelation("TabSDELandTabXDOS2", dc3, dc5)
            oDataset.Relations.Add(DataRelation1)
            Dim DataRelation2 = New DataRelation("TabSDELandTabBQ", dc1, dc2)
            oDataset.Relations.Add(DataRelation2)
            Dim DataRelation3 = New DataRelation("TabSINandTabXDOS", dc8, dc4)
            oDataset.Relations.Add(DataRelation3)
            Dim DataRelation4 = New DataRelation("TabSINandTabSDEL", dc7, dc6)
            oDataset.Relations.Add(DataRelation4)

            'Fermeture de la connexion afin de ne pas monopoliser les ressources
            oConnection.Close()

            'Vérif si erreur
        Catch ex As Exception
            MsgBox("Erreur !!! " & ex.Message)
        End Try

        'Remplissage du datagrid avec la table
        DataGridViewReport2.DataSource = oDataset.DefaultViewManager

    End Sub

    '    Public Sub connection()
    'Dim oDataset As DataSet = New DataSet()
    'Chaque Système de Gestion de base de Données(SGBD) a des erreurs spécifiques
    'Pour les détecter il faut utiliser les types d'erreurs spécifiques : dans notre cas 'OleDbException
    'Exemple :
    'Try
    'MyConnection.Open()
    'Catch es As OleDbException
    'MsgBox(ex.Message)
    'End Try
    '   Try
    'Dim oConnection As OleDb.OleDbConnection New OleDb.OleDbConnection("Provider Microsoft.Jet.OLEDB.4.0; Data source = C:\Documents and Settings\edi\Bureau\Tahar's\AP\APDotVbClip\Test.mdb;") 'Jet OLEDB : Database Password = odbc;")

    'Si la propriété EnforceConstraints du DataSet est à False,
    'les contraintes ne sont pas appliquées au dataset,
    'donc l'ordre des adapteurs n'a pas d'importance.
    '       oDataset.EnforceConstraints = False     'litéralement : Ne pas prendre en charge les contraintes

    'Déclaration et création de l'objet DataAdapter
    'et remplissage du dataset grâce aux requetes
    'Dim oAdapterBanq As New OleDb.OleDbDataAdapter("SELECT XBQNAM_0, XDCNUM_0 FROM CLIP_XBANQUE WHERE XBQNAM_0 = ComboBoxBanque1.SelectedItem", oConnection)
    'Dim oDttBanq As New DataTable
    '        oAdapterBanq.Fill(oDataset, "XBANQUE")
    '        oDttBanq = oDataset.Tables("XBANQUE")

    'DataGridViewReport.SetOLEDBDataAdapter = oAdapterBanq
    'DataGridViewReport.SetDataSet = oDataset

    '    Dim oAdapterSdeliv As New OleDb.OleDbDataAdapter("SELECT NETWEI_0, SDHNUM_0, XDCNUM_0 FROM CLIP_SDELIVERY", oConnection)
    '           oAdapterSdeliv.Fill(oDataset, "SDELIVERY")
    'DataGridViewReport.SetOLEDBDataAdapter = oAdapterSdeliv
    'DataGridViewReport.SetDataSet = oDataset

    '  Dim oAdapterSdeliD As New OleDb.OleDbDataAdapter("SELECT XDCNUM_0 FROM CLIP_SDELIVERYD", oConnection)
    '         oAdapterSdeliD.Fill(oDataset, "SDELIVERYD")
    ''DataGridViewReport.SetOLEDBDataAdapter = oAdapterSdeliD
    ' DataGridViewReport.SetDataSet = oDataset

    'Dim oAdapterSinv As New OleDb.OleDbDataAdapter("SELECT QTY_0, XDCNUM_0 FROM CLIP_SINVOICED", oConnection)
    '       oAdapterSinv.Fill(oDataset, "SINVOICED")
    ' DataGridViewReport.SetOLEDBDataAdapter = oAdapterSinv
    ' DataGridViewReport.SetDataSet = oDataset

    'Dim oAdapterSpac As New OleDb.OleDbDataAdapter("SELECT ITMDES1_0, XNUMDEB_0 FROM CLIP_SPACKD", oConnection)
    '       oAdapterSpac.Fill(oDataset, "SPACKD")
    'DataGridViewReport.SetOLEDBDataAdapter = oAdapterSpac
    ' DataGridViewReport.SetDataSet = oDataset

    'Dim oAdapterXdos As New OleDb.OleDbDataAdapter("SELECT XBPC_0, XCODBANK_0, XDCNUM_0, XCOMDAT_0, XREFCLI_0, XDELIVDEM_0, DLVDAT_0, XBATRET_0, XDATBL_0, XQTEDEM_0, XMONTANT_0, XCODPRO_0, XNUMDEB_0 FROM CLIP_XDOSCLI", oConnection)    '       oAdapterXdos.Fill(oDataset, "XDOSCLI") 'Where VarAnnee ReturnAnnee(XCOMDAT_0) AND XCOMDAT_0 SelectByTrim(VarTrim)
    'DataGridViewReport.SetOLEDBDataAdapter = oAdapterXdos
    'DataGridViewReport.SetDataSet = oDataset

    'Dim oAdapterXdos2 As New OleDb.OleDbDataAdapter("SELECT XDCNUM_0, XNBFEUIL_0, XRECT1_0, XRECT2_0, XRECT3_0, XRECT4_0, XRECT5_0, XRECT6_0, XVERS1_0, XVERS2_0 FROM CLIP_XDOSCLI2", oConnection)
    '       oAdapterXdos2.Fill(oDataset, "XDOSCLI2")
    ' DataGridViewReport.SetOLEDBDataAdapter = oAdapterXdos2
    ' DataGridViewReport.SetDataSet = oDataset

    'Création du datarelation qui sert à relier les tables entres elles
    'Dim oRelation As DataRelation = oDataset.Relations.Add("Reporting", oDataset.Tables("CLIP_XDOSCLI").Columns("XDCNUM_0"), oDataset.Tables("CLIP_XBANQUE").Columns("SDCNUM_0"))
    'Dim oRelation2 As DataRelation = oDataset.Relations.Add("Reporting2", oDataset.Tables("CLIP_XDOSCLI").Columns("SDCNUM_0"), oDataset.Tables("CLIP_SDELIVERY").Columns("SDCNUM_0"))
    'Dim oRelation3 As DataRelation = oDataset.Relations.Add("Reporting3", oDataset.Tables("CLIP_XDOSCLI").Columns("SDCNUM_0"), oDataset.Tables("CLIP_SDELIVERYD").Columns("SDCNUM_0"))
    'Dim oRelation4 As DataRelation = oDataset.Relations.Add("Reporting4", oDataset.Tables("CLIP_XDOSCLI").Columns("SDCNUM_0"), oDataset.Tables("CLIP_SINVOICED").Columns("SDCNUM_0"))
    'Dim oRelation5 As DataRelation = oDataset.Relations.Add("Reporting5", oDataset.Tables("CLIP_XDOSCLI").Columns("SDCNUM_0"), oDataset.Tables("CLIP_XDOSCLI2").Columns("SDCNUM_0"))
    'Dim oRelation6 As DataRelation = oDataset.Relations.Add("Reporting6", oDataset.Tables("CLIP_XDOSCLI").Columns("XNUMDEB_0"), oDataset.Tables("CLIP_SPACKD").Columns("XNUMDEB_0"))

    'Fermeture de la connexion afin de ne pas monopoliser les ressources
    '            oConnection.Close()

    'Vérif si erreur
    '       Catch ex As Exception
    '          MsgBox("Erreur !!! " & ex.Message)
    '     End Try
    'End Sub

End Class

Et voici l'image de mon datagrid.... :

7 réponses

Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

Bon bah finalement j'ai migré ma base sur oracle et la magie tout marche nickel avec une seule requete sur un seul oracledataadapter!

Cordialement à moi même....
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

dsl tout ce qu'ilo y a après le 1er sub ne sert à rien...
C'est en commentaire dans mon code...
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

   
Voici le résultat, j'éspère que cela va s'afficher.
dsl d'avance je ne sais pas trop comment m'y prendre...
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

Excusez moi!
je me suis complètement planté ce code est un code alternatif à mon
problème...qui ne marche pas soit dit en passant et qui me renvoi comme erreur
"Aucune valeur donnée pour un ou plusieurs paramètres"...

Le "vrai" code est celui-ci :

-----------------------------------------------
Public Class Report

    Private Sub Report_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim oDataset As DataSet = New DataSet("oDataset")

      
        Try
            Dim oConnection As OleDb.OleDbConnection New OleDb.OleDbConnection("Provider Microsoft.Jet.OLEDB.4.0;" & "Data source = C:\Documents and Settings\edi\Bureau\Tahar's\AP\APDotVbClip\Test.mdb;") 'Jet OLEDB : Data Source Password = odbc;")
      
            oDataset.EnforceConstraints = False     'litéralement : Ne pas prendre en charge les contraintes

Dim oAdaptBQ As New OleDb.OleDbDataAdapter("SELECT * FROM [CLIP_XBANQUE] ", oConnection)
            Dim oAdaptSDEL As New OleDb.OleDbDataAdapter("SELECT * FROM [CLIP_SDELIVERY]", oConnection)
            Dim oAdaptSIN As New OleDb.OleDbDataAdapter("SELECT * FROM [CLIP_SINVOICED]", oConnection)
            Dim oAdaptSPA As New OleDb.OleDbDataAdapter("SELECT * FROM [CLIP_SPACKD]", oConnection)
            Dim oAdaptXDOS As New OleDb.OleDbDataAdapter("SELECT * FROM [CLIP_XDOSCLI]", oConnection)
            Dim oAdaptXDOS2 As New OleDb.OleDbDataAdapter("SELECT * FROM [CLIP_XDOSCLI2]", oConnection)

            'Création d'une table contenat tous les champs requis
            Dim oTable As DataTable = New DataTable("oCNCE")

            'Remplissage de la datatable à partir de la requete sql
            'oAdapt.Fill(oTable)

            oAdaptBQ.Fill(oTable)
            oAdaptSDEL.Fill(oTable)
            oAdaptSIN.Fill(oTable)
            oAdaptSPA.Fill(oTable)
            oAdaptXDOS.Fill(oTable)
            oAdaptXDOS2.Fill(oTable)

'Remplissage du datagrid avec la table
            DataGridViewReport.DataSource = oTable

            'Fermeture de la connexion afin de ne pas monopoliser les ressources
            oConnection.Close()

            'Vérif si erreur
        Catch ex As Exception
            MsgBox("Erreur !!! " & ex.Message)
        End Try

    End Sub

End Class

En espérant que vous excuserez ma maladresse et que vous aurez la gentillesse
de me répondre.
PS : je n'arrive pas à afficher l'image du résultat dans mon datagrid....
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

ça n'intéresse parsonne??
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

toujours pas de personne pouvant m'aider??
Messages postés
38
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
4 mars 2009

bon, après maintes et maintes recherches je n'ai toujours pas trouver le moyen de mettre les champs des différentes tables au meme niveau et non séparé verticalement.
Si tout ce que j'ai mis fais peur je remet une partie du code sans commentaire:

Dim oDataset As DataSet = New DataSet("oDataset")
Try
            Dim oConnection As OracleConnection = New OracleConnection()
            oConnection.ConnectionString = "Server=OraOLEDB.Oracle; Data Source=*** ;USER ID=***; PASSWORD=***"

oConnection.Open()

Dim oAdaptBQ As New OleDb.OleDbDataAdapter("SELECT XBQNAM_0 FROM CLIP_XBANQUE ", oConnection)
           
Dim oAdaptSDEL As New OleDb.OleDbDataAdapter("SELECT DLVDAT_0, NETWEI_0, SDHNUM_0 FROM [CLIP_SDELIVERY]", oConnection)

Dim oAdaptSIN As New OleDb.OleDbDataAdapter("SELECT QTY_0 FROM CLIP_SINVOICED", oConnection)

Dim oAdaptXDOS As New OleDb.OleDbDataAdapter("SELECT DISTINCT(XDCNUM_0), XBPC_0, XCODBANK_0, XCODPRO_0,
XCOMDAT_0, XREFCLI_0, XDELIVDEM_0, XBATDRET_0, XDATBL_0, XQTEDEM_0, XMONTANT_0 FROM CLIP_XDOSCLI ", oConnection)
         
 Dim oAdaptXDOS2 As New OleDb.OleDbDataAdapter("SELECT XNBFEUIL_0, XRECT1_0, XRECT2_0, XRECT3_0, XRECT4_0, XRECT5_0, XRECT6_0, XVERS1_0, XVERS2_0 FROM CLIP_XDOSCLI2", oConnection)

           Dim oTable As DataTable = New DataTable()
           oAdaptBQ.Fill(oTable)
            oAdaptSDEL.Fill(oTable)
            oAdaptSIN.Fill(oTable)
            oAdaptXDOS.Fill(oTable)
            oAdaptXDOS2.Fill(oTable)

            DataGridViewBq.DataSource = oTable

            oConnection.Close()

            Catch ex As Exception
            MsgBox("Erreur !!! " & ex.Message)
        End Try

    End Sub