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 :

Problème avec FillSchema


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut Problème avec FillSchema
    Bonjour à tous,

    J'essaie tant bien que mal de me sortir de ce pétrin mais rien à y faire c'est la galère. Je lutte depuis maintenant 3 semaines sur un problème d'affichage de données d'environ 15000 enregistrements pour une DataGrid.
    Après mainte et mainte recherche et message on m'a orienté vers le mode virtuel (ce qui me semble le plus approprié) et aujourd'hui me revoilà pour énième problème qui est le suivant :

    Pour info j'ai récupéré le code source sur le msdn de microsoft (implémenter le mode virtuel dans le contrôle DataGridView Windows Forms)

    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
    Public ReadOnly Property Columns() As DataColumnCollection
            Get
                ' Return the existing value if it has already been determined.
                If columnsValue IsNot Nothing Then
                    Return columnsValue
                End If
     
                ' Retrieve the column information from the database.
                command.CommandText = "SELECT * FROM " & tableName
                'Dim adapter As New SqlDataAdapter()
                Dim adapter As New OdbcDataAdapter
                adapter.SelectCommand = command
                Dim table As New DataTable()
                table.Locale = System.Globalization.CultureInfo.InvariantCulture
                adapter.FillSchema(table, SchemaType.Source)
                columnsValue = table.Columns
                Return columnsValue
            End Get
        End Property
    Cette fonction (me semble t-il) récupère les noms de champs contenu dans la table, j'utilise une bdd interbase (*.gdb) le code que j'ai récupéré est pour sql server donc j'essaie de l'adapter mais avec mon p'tit cerveau c'est pas gagné. Le problème vient de la ligne que j'ai mis en rouge "adapter.FillSchema(table, SchemaType.Source)" j'ai un message d'erreur qui est le suivant "FillSchema : la propriété SelectCommand.Connection n'a pas été initialisée.".

    Merci d'avance à tous.

    PS : Je débute en .Net et à part m'arracher les cheveux c'est tout ce que j'arrive à faire. Elle est ou l'astuce pour devenir un vrai développeur ? Il faut avoir un BAC +10 ou s'appeler heinstein ?

    Jb_One73

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Jb_One73 Voir le message
    "FillSchema : la propriété SelectCommand.Connection n'a pas été initialisée.".
    ben il faut l'initialiser
    Tu dois sans doute avoir une variable de type OdbcConnection quelque part (appelons là cnx), il faut l'affecter à la propriété Connection de la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command.Connection = cnx
    Citation Envoyé par Jb_One73 Voir le message
    PS : Je débute en .Net et à part m'arracher les cheveux c'est tout ce que j'arrive à faire. Elle est ou l'astuce pour devenir un vrai développeur ? Il faut avoir un BAC +10 ou s'appeler heinstein ?
    Tu pourrais commencer par là
    http://dotnet.developpez.com/cours/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 256
    Par défaut
    Tout d'abord merci tomlev pour tes réponses j'ai effectué la modif et cela à bien fonctionné en revanche maintenant j'ai un nouveau problème.
    Est-ce que tu pourrais me donner un nouveau coup de main ?

    Voici le code en question :
    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
    Public Function SupplyPageOfData( _
            ByVal lowerPageBoundary As Integer, ByVal rowsPerPage As Integer) _
            As DataTable Implements IDataPageRetriever.SupplyPageOfData
     
            ' Store the name of the ID column. This column must contain unique 
            ' values so the SQL below will work properly.
            If columnToSortBy Is Nothing Then
                columnToSortBy = Me.Columns(0).ColumnName
            End If
     
            If Not Me.Columns(columnToSortBy).Unique Then
                Throw New InvalidOperationException(String.Format( _
                    "Column {0} must contain unique values.", columnToSortBy))
            End If
     
            ' Retrieve the specified number of rows from the database, starting
            ' with the row specified by the lowerPageBoundary parameter.
            command.CommandText = _
                "Select Top " & rowsPerPage & " " & _
                CommaSeparatedListOfColumnNames & " From " & tableName & _
                " WHERE " & columnToSortBy & " NOT IN (SELECT TOP " & _
                lowerPageBoundary & " " & columnToSortBy & " From " & _
                tableName & " Order By " & columnToSortBy & _
                ") Order By " & columnToSortBy
            adapter.SelectCommand = command
     
            Dim table As New DataTable()
            table.Locale = System.Globalization.CultureInfo.InvariantCulture
            adapter.Fill(table)
            Return table
     
        End Function
    Le problème vient lors de l'éxecution de "adapter.Fill(table)" j'ai le message suivant :
    "ERROR [HY000] [ODBC Firebird Driver][Firebird]Dynamic SQL Error SQL error code = -104 Token unknown - line 1, char 12 16"

    C'est pas simple, je crois que j'essaie de faire des choses qui sont plus pour les développeurs confirmés que par un débutant.

    Je te remercie d'avance.

    Jb_One73

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    à mon avis c'est le mot-clé TOP qui n'est pas reconnu... ce n'est pas du SQL standard, tu es sûr que ça existe sous Firebird ?

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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