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

VB.NET Discussion :

Tentative non valide de lecture lorsque aucune donnée n'est présente - VB.NET [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 46
    Par défaut Tentative non valide de lecture lorsque aucune donnée n'est présente - VB.NET
    Salut tout le monde,
    Je veux importer des données à partir d'une base de données SQL Server et les enregistrer sous 3 BD SQL différentes "Chacune selon une requete spécifiée"
    J'ai écrit ce code VB :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim CnxExcel As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & TextBox1.Text & ";Extended Properties=""Excel 12.0 XML;HDR=YES"";")
            Dim CnxSQLBDQ1 As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale_Query1;Integrated security=True")
            Dim CnxSQLBDQ2 As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale_Query2;Integrated security=True")
            Dim CnxSQLBDQ3 As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale_Query3;Integrated security=True")
            Dim CnxSQL As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale;Integrated security=True")
            Dim da As New OleDbDataAdapter
            Dim ds As New DataSet
     
            Dim cmd As New OleDbCommand("Select * from [Globale$]", CnxExcel)
            da.SelectCommand = cmd
            da.Fill(ds, "Globale")
     
            DataGridView1.DataSource = ds.Tables("Globale")
     
            Dim InterTest As New SqlBulkCopy(CnxSQL)
            CnxSQL.Open()
            InterTest.DestinationTableName = "dbo.Globale"
            InterTest.WriteToServer(ds.Tables("Globale"))
     
     
            CnxSQLBDQ1.Open()
            Dim Q1 As String = "SELECT * FROM Globale Where Maille<=500 AND [PP(m)]>=0.4 AND [BPL/B(%)]>=40 "
            Dim CQ1 As SqlCommand = New SqlCommand(Q1, CnxSQLBDQ1)
            Dim ReaderQ1 As SqlDataReader
            ReaderQ1 = CQ1.ExecuteReader()
            ReaderQ1.Read()
            ReaderQ1.GetValue(0)
            Dim InterQ1 As New SqlBulkCopy(CnxSQLBDQ1)
            InterQ1.DestinationTableName = "Globale1"
            InterQ1.WriteToServer(ReaderQ1)
            CnxSQLBDQ1.Close()
     
            CnxSQLBDQ2.Open()
            Dim Q2 As String = "SELECT * FROM Global Where Maille>=800 AND Maille<=2000 AND [PP(m)]>=0.4 AND [BPL/B(%)]>=40 "
            Dim CQ2 As SqlCommand = New SqlCommand(Q2, CnxSQLBDQ2)
            Dim ReaderQ2 As SqlDataReader
            ReaderQ2 = CQ2.ExecuteReader()
            ReaderQ2.Read()
            ReaderQ2.GetValue(0)
            Dim InterQ2 As New SqlBulkCopy(CnxSQLBDQ2)
            InterQ2.DestinationTableName = "Globale2"
            InterQ2.WriteToServer(ReaderQ2)
            CnxSQLBDQ2.Close()
     
     
            CnxSQLBDQ3.Open()
            Dim Q3 As String = "SELECT * FROM Global Where Maille>2000 AND [PP(m)]>=0.4 AND [BPL/B(%)]>=40 "
            Dim CQ3 As SqlCommand = New SqlCommand(Q3, CnxSQLBDQ3)
            Dim ReaderQ3 As SqlDataReader
            ReaderQ3 = CQ3.ExecuteReader()
            ReaderQ3.Read()
            ReaderQ3.GetValue(0)
            Dim InterQ3 As New SqlBulkCopy(CnxSQLBDQ3)
            InterQ3.DestinationTableName = "Globale3"
            InterQ3.WriteToServer(ReaderQ3)
            CnxSQLBDQ3.Close()
        End Sub
    Mais quand je lance l'application, une erreur se produit ! comme vous voyez ci-dessous :
    Nom : Captuthre.JPG
Affichages : 3716
Taille : 72,2 Ko
    Aidez moi SVP ! Merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Juste après le ExecuteReaderil faut tester si la requête a renvoyée des lignes avec HasRows.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            ReaderQ1 = CQ1.ExecuteReader()
            If (ReaderQ1.HasRows) Then
                ' traitement ...
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 46
    Par défaut
    Merci Rv26T pour ta réponse, en fait j'ai chaangé le nom de la table globale depuis SQL et sur le CODE, mais une autre message d'erreur qui s'affiche :
    Nom : Caplinture.JPG
Affichages : 3661
Taille : 65,3 Ko
    Voici le nouveau Code :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim CnxExcel As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & TextBox1.Text & ";Extended Properties=""Excel 12.0 XML;HDR=YES"";")
            Dim CnxSQLBDQ1 As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale_Query1;Integrated security=True")
            Dim CnxSQLBDQ2 As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale_Query2;Integrated security=True")
            Dim CnxSQLBDQ3 As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale_Query3;Integrated security=True")
            Dim CnxSQL As New SqlConnection("Data Source=AIMAN-PC;Initial Catalog=BD_Globale;Integrated security=True")
            Dim da As New OleDbDataAdapter
            Dim ds As New DataSet
     
            Dim cmd As New OleDbCommand("Select * from [Globale$]", CnxExcel)
            da.SelectCommand = cmd
            da.Fill(ds, "Globale")
     
            DataGridView1.DataSource = ds.Tables("Globale")
     
            Dim InterTest As New SqlBulkCopy(CnxSQL)
            CnxSQL.Open()
            InterTest.DestinationTableName = "GlobaleT"
            InterTest.WriteToServer(ds.Tables("Globale"))
     
     
            CnxSQLBDQ1.Open()
            Dim Q1 As String = "SELECT * FROM GlobaleT Where Maille<=500 AND [PP(m)]>=0.4 AND [BPL/B(%)]>=40 "
            Dim CQ1 As SqlCommand = New SqlCommand(Q1, CnxSQLBDQ1)
            Dim ReaderQ1 As SqlDataReader
            ReaderQ1 = CQ1.ExecuteReader()
     
            ReaderQ1.Read()
            ReaderQ1.GetValue(0)
            Dim InterQ1 As New SqlBulkCopy(CnxSQLBDQ1)
            InterQ1.DestinationTableName = "Globale1"
            InterQ1.WriteToServer(ReaderQ1)
     
            CnxSQLBDQ1.Close()
     
            CnxSQLBDQ2.Open()
            Dim Q2 As String = "SELECT * FROM GlobaleT Where Maille>=800 AND Maille<=2000 AND [PP(m)]>=0.4 AND [BPL/B(%)]>=40 "
            Dim CQ2 As SqlCommand = New SqlCommand(Q2, CnxSQLBDQ2)
            Dim ReaderQ2 As SqlDataReader
            ReaderQ2 = CQ2.ExecuteReader()
            ReaderQ2.Read()
            ReaderQ2.GetValue(0)
            Dim InterQ2 As New SqlBulkCopy(CnxSQLBDQ2)
            InterQ2.DestinationTableName = "Globale2"
            InterQ2.WriteToServer(ReaderQ2)
            CnxSQLBDQ2.Close()
     
     
            CnxSQLBDQ3.Open()
            Dim Q3 As String = "SELECT * FROM GlobaleT Where Maille>2000 AND [PP(m)]>=0.4 AND [BPL/B(%)]>=40 "
            Dim CQ3 As SqlCommand = New SqlCommand(Q3, CnxSQLBDQ3)
            Dim ReaderQ3 As SqlDataReader
            ReaderQ3 = CQ3.ExecuteReader()
            ReaderQ3.Read()
            ReaderQ3.GetValue(0)
            Dim InterQ3 As New SqlBulkCopy(CnxSQLBDQ3)
            InterQ3.DestinationTableName = "Globale3"
            InterQ3.WriteToServer(ReaderQ3)
            CnxSQLBDQ3.Close()
        End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Salut,

    Si InvalidObjectName s'affiche, c'est que le nom de ta table n'est pas bonne. Vérifie bien que la table est correctement orthographié et qu'elle existe !

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 46
    Par défaut
    Merci pour vos réponses ! Ce problème est résolu !
    Mais malheureusement, un autre s'affiche :
    J'ai des valeurs en unité "m3" sur un fichier Excel et je veux les importer sur SQL en unité "Millions m3"
    Aidez moi svp

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 137
    Par défaut
    Divise la valeur obtenue en m3 par 1 000 000, et tu auras une valeur en million de m3.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/05/2015, 01h31
  2. Réponses: 8
    Dernier message: 30/07/2013, 15h58
  3. Supprimer la structure lorsque qu'aucune donnée
    Par CyberMen dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 22/05/2008, 17h24
  4. Réponses: 0
    Dernier message: 21/01/2008, 11h02
  5. Problème avec XmlDocument [Données non valide]
    Par mobscene dans le forum C#
    Réponses: 1
    Dernier message: 29/08/2007, 23h16

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