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

ASP.NET Discussion :

Datatable ne retourne rien, Gridview si


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut Datatable ne retourne rien, Gridview si
    Bonjour,

    J'ai un problème curieux en asp.net, VS2005, vb.net et SQL Server 2005 :

    J'exécute une requête dans une classe.
    Si je remplis un Gridview avec le résultat de ma requête depuis la classe, et que je l'affiche depuis la page de code behind, le Gridview affiche bien des données.

    Si je rempli un Datatable avec le résultat de ma requête depuis la classe (méthode load) et que je l'affiche dans un Gridview lié à ce Datatable depuis la page de code behind, le Datatable ne contient aucune donnée, comme si me requête ne retournait aucun résultat.
    Si je renvoie simplement le nombre de lignes du Datatable, j'obtiens 0.

    Pourtant, il s'agit bien de la MÊME REQUETE, qui ne contient pas d'erreur SQL et qui renvoie aussi des résultats si je l’exécute directement dans SQL Management Studio.

    Le code pour remplir le Datatable et l'afficher dans le code behind ne contient pas d'erreur non plus, car j'ai testé ce code avec d'autres requêtes.
    Certaines requêtes semblent fonctionner en renvoyant bien des résultats, d'autres ne renvoient aucun résultat alors qu'il y en a, avec un code SQL pourtant sans erreur.
    Pour info, dans mes requêtes, je fais un openquery sur un serveur lié.

    Quelqu'un aurait-il déjà rencontré ce problème ?

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Un peu de code?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    Je n'ai pas le code sous la main, je pourrai l'envoyer lundi.
    Je voulais savoir si quelqu'un avait déjà rencontré ce même problème.

  4. #4
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    CODE DE LA CLASSE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function Dossiers_En_CoursByID(ByVal Num_Personne As String)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /*exemple de requete qui renvoie bien des données  :*/
    sqlc = New SqlCommand("select * from OPENQUERY (NIW, 'SELECT DISTINCT DPRT.IDPART_CALCULE as ID_PARTENAIRE, ADCPTE.NCCOMP as NCCOMP " _
                 & "from ADDPRT_BO  DPRT, ADCPTE_BO  ADCPTE, ADDRPAFL_BO  DRPAFL_EL " _
                 & "where (DRPAFL_EL.IDELCO=ADCPTE.IDELCO) and (DPRT.IDPART=DRPAFL_EL.IDPART) and (DPRT.DFVAL is null) and (ADCPTE.DFFONC is null) " _
                 & "and (DRPAFL_EL.IDTYIAD in (''001'',''004'',''007'',''010'',''011'',''016'')) and (DPRT.CDPAIN in (''I'', '' '')) " _
                 & "and (DPRT.Numpart = 1) and (DRPAFL_EL.FLAGACTIF = 0) and (DPRT.IDPART_CALCULE = ''02584658719'') ') " _
                 & "inner join [DOSSIERS] on [DOSSIERS].[IDPART] = ID_PARTENAIRE ", Cnx)
    /*exemple de requete qui ne renvoie pas de données alors qu'il y en a :	*/	
     sqlc = New SqlCommand("select * from OPENQUERY (NIW,, 'select distinct DPRT.IDPART_CALCULE as ID_PARTENAIRE from ADDPRT_BO DPRT " _
                & "where (DPRT.IDPART_CALCULE = ''02584658719'') ') ", Cnx)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim sqldata As SqlDataReader = Nothing
          Cnx.Open()
     
          sqldata = sqlc.ExecuteReader()
     
          If Not (sqldata Is Nothing) AndAlso sqldata.Read() Then
              mLst_Dossiers.Load(sqldata)
          End If
     
          Return mLst_Dossiers
    End Function
    CODE PAGE DE CODE BEHIND :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim Dossier_exist As New Tb_DOSSIERS
    Lst_Doss.DataSource = Dossier_exist.Dossiers_En_CoursByID(row("IDPART"))
    Lst_Doss.DataBind()
    Lst_Doss.Visible = "true"

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Je n'utilise pas OPENQUERY (connais pas). Tu confirmes que lorsque tu passes tes requête dans SQL Server Management Studio, chacune te renvoi un jeu de résultats?

    Je te demande cela car j'ai l'impression qu'il y a une différence de syntaxe entre les deux. Dans la deuxième tu as ceci:Deux virgules l'une à la suite de l'autre ça pose pas pb?
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Par défaut
    La virgule est une erreur de copier coller, ce serait trop simple...
    Je te confirme que ces requêtes dans SQL Server Management Studio me renvoient chacune un jeu de résultats.

    J'ai réussi à me passer d'OPENQUERY, mais l'ai toujours le même soucis :

    Code sql : 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
    20
    21
    22
    23
    24
     
    /*exemple de requete qui renvoie bien des données  :*/
     sqlc = New SqlCommand("select distinct ADCPTE.NCCOMP as NUMCOMPTE, DPRT.NOMPART as NOM_PRENOM, DPPE.DANAIS as Date_Nais, " _
              & "DPRT.IDPART_CALCULE as ID_PARTENAIRE, EDS.NOM as Agence " _
              & "from NIW.DIVP10DTWH01J.dbo.ADDPPE DPPE, NIW.DIVP10DTWH01J.dbo.ADDORG DORG_DPRT, NIW.DIVP10DTWH01J.dbo.ADCPTE ADCPTE, NIW.DIVP10DTWH01J.dbo.ADDPRT DPRT, " _
              & "NIW.DIVP10DTWH01J.dbo.ADDRPAFL DRPAFL_EL, TRANSMISSION.dbo.DOSSIERS DOSS, TRANSMISSION.dbo.EDS EDS " _
              & "where (DRPAFL_EL.IDELCO=ADCPTE.IDELCO) and (DORG_DPRT.IDELST=DPRT.IDELST) and (DPRT.IDPART=DRPAFL_EL.IDPART) " _
              & "and DOSS.IDPART = DPRT.IDPART_CALCULE and EDS.UO = DORG_DPRT.IDEXEL " _
              & "and (DPPE.IDPART=DPRT.IDPART and DPPE.NUMPART=DPRT.NUMPART) and (DPRT.DFVAL is null) and (ADCPTE.DFFONC is null) and (DORG_DPRT.IDTYESD='6') " _
              & "and (DORG_DPRT.DFVAL is null) and (DRPAFL_EL.IDTYIAD in ('001','004','007','010','011','016')) and (DPRT.CDPAIN in ('I', ' ')) " _
              & "and (DORG_DPRT.DFVAL is null or DORG_DPRT.DFVAL > getdate ()) and (DPRT.Numpart = 1) and (DPRT.Numpart = 1) and (DPRT.Numpart = 1) " _
              & "and (DPRT.Numpart = 1) and (DPPE.NUMPART= 1) and (DRPAFL_EL.FLAGACTIF = 0) and (DPRT.IDPART_CALCULE = '00000030449634')", Cnx)
     
    /*exemple de requete qui ne renvoie pas de données alors qu'il y en a :	*/		  
    sqlc = New SqlCommand("select distinct ADCPTE.NCCOMP as NUMCOMPTE, DPRT.NOMPART as NOM_PRENOM, DPPE.DANAIS as Date_Nais, " _
              & "DPRT.IDPART_CALCULE as ID_PARTENAIRE, EDS.NOM as Agence " _
              & "from NIW.DIVP10DTWH01J.dbo.ADDPPE DPPE, NIW.DIVP10DTWH01J.dbo.ADDORG DORG_DPRT, NIW.DIVP10DTWH01J.dbo.ADCPTE ADCPTE, NIW.DIVP10DTWH01J.dbo.ADDPRT DPRT, " _
              & "NIW.DIVP10DTWH01J.dbo.ADDRPAFL DRPAFL_EL, TRANSMISSION.dbo.DOSSIERS DOSS, TRANSMISSION.dbo.EDS EDS " _
              & "where (DRPAFL_EL.IDELCO=ADCPTE.IDELCO) and (DORG_DPRT.IDELST=DPRT.IDELST) and (DPRT.IDPART=DRPAFL_EL.IDPART) " _
              & "and DOSS.IDPART = DPRT.IDPART_CALCULE and DOSS.NCCOMP = ADCPTE.NCCOMP and EDS.UO = DORG_DPRT.IDEXEL " _
              & "and (DPPE.IDPART=DPRT.IDPART and DPPE.NUMPART=DPRT.NUMPART) and (DPRT.DFVAL is null) and (ADCPTE.DFFONC is null) and (DORG_DPRT.IDTYESD='6') " _
              & "and (DORG_DPRT.DFVAL is null) and (DRPAFL_EL.IDTYIAD in ('001','004','007','010','011','016')) and (DPRT.CDPAIN in ('I', ' ')) " _
              & "and (DORG_DPRT.DFVAL is null or DORG_DPRT.DFVAL > getdate ()) and (DPRT.Numpart = 1) and (DPRT.Numpart = 1) and (DPRT.Numpart = 1) " _
              & "and (DPRT.Numpart = 1) and (DPPE.NUMPART= 1) and (DRPAFL_EL.FLAGACTIF = 0) and (DPRT.IDPART_CALCULE = '00000030449634')", Cnx)

    La seule différence entre ces 2 requêtes est la jointure en plus dans la 2eme : DOSS.NCCOMP = ADCPTE.NCCOMP.
    L'absence de résultats serait liée à cette jointure ?

Discussions similaires

  1. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  2. Fonction ne retournant rien ?
    Par bds2006 dans le forum Delphi
    Réponses: 8
    Dernier message: 05/06/2006, 14h47
  3. Erreur query ne retourne rien
    Par TeddyBEER dans le forum Outils
    Réponses: 3
    Dernier message: 28/04/2006, 15h09
  4. Si mysql ne retourne rien que faire ?
    Par pierrera dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/02/2006, 11h12
  5. SELECT qui ne retourne rien à cause d'anti-slash
    Par mikyfpc dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2005, 23h04

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