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 le filter d'un recordset


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Problème avec le filter d'un recordset
    J'ai converti un programme de vb6 à vb.net, j'utilisai un propretybag pour cloner mes recordsets et ensuite un filter pour naviguer mes données
    et ensuite les afficher dans un gridview mais j'ai un problème en vb.net avec mon filter.
    En vb6 il parcourait mes données, mais en .net il reste toujours sur la même donnée et il se retrouve en boucle infini

    Mon problème est donc d'arranger mon filter pour qu'il puisse naviguer les données ID en se changeant par lui-même

    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
    Private Function GRD_AddLine(ByRef rrecRecord As ADODB.Recordset, ByVal vintOutlineLevel As Short) As Boolean
            On Error GoTo Error_GRD_AddLine
            Dim blnReturn As Boolean
            Dim intRow As Short
            Dim recRecord As New ADODB.Recordset
     
            blnReturn = True
     
            'ajoute le texte a mettre dans le tree
            grdCompte.AddItem(NullString)
            intRow = grdCompte.Rows - 1
     
            If rrecRecord.Fields("Header").Value = 1 Then
     
                'Indique que cette ligne est un header
                grdCompte.set_IsSubtotal(intRow, True)
     
                'Indique l'indentation de la ligne
                grdCompte.set_RowOutlineLevel(intRow, vintOutlineLevel)
                grdCompte.Cell(VSFlex7.CellPropertySettings.flexcpFontBold, intRow, 0, , grdCompte.Cols - 1) = True
     
            Else
                'do nothing
            End If
     
            'Feed la ligne
            grdCompte.TextMatrix(intRow, mintGRDCompte_col) = (rrecRecord.Fields("Description").Value
     
     
            If rrecRecord.Fields("Entete").Value = 1 Then
                Call CloneRecordSet(rrecRecord, recRecord)
     
                'Regarde si le compte courant est parent d'autres comptes. On doit donc ajouter tous ces comptes
                recRecord.Filter = NullString
     
    'Mon problème est ici ma valeur reste la même pourtant en vb6 elle changeait automatiquement
                recRecord.Filter = "ID_Parent=" & rrecRecord.Fields("ID").Value
     
     
                Do While Not recRecord.EOF
                    Call GRD_AddLine(recRecord, intOutlineLevel + 1)
                    recRecord.MoveNext()
                Loop
            Else
                'C'est fini !
            End If
     
    Exit_GRD_AddLine:
            recRecord = Nothing
            GRD_AddLine = blnReturn
            Exit Function
     
    Error_GRD_AddLine:
            blnReturn = False
            Resume Exit_GRD_AddLine
    End Function
    ----------


    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
    Public Function CloneRecordSet(ByRef robjToClone As ADODB.Recordset, ByRef robjCloned As Object) As Boolean
            On Error GoTo Error_CloneRecordSet
            Dim blnReturn As Boolean
     
            Dim oStr As New ADODB.Stream()
            robjToClone.Save(oStr)
            Dim resRecordset As New ADODB.Recordset()
     
            'ouvrir le stream object dans un nouveau recordset
            resRecordset.Open(oStr, , , robjToClone.LockType)
     
            'retourne le recordset cloned
            robjCloned = resRecordset
     
            resRecordset = Nothing
            blnReturn = True
     
    Exit_CloneRecordSet:
            CloneRecordSet = blnReturn
            Exit Function
     
    Error_CloneRecordSet:
            blnReturn = False
            Resume Exit_CloneRecordSet
    End Function
    Merci d'avoir lu
    Dernière modification par Deepin ; 05/04/2010 à 10h04. Motif: Balises [CODE]...[/CODE]

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    la solution la plus propre est ne pas coder en vb6 dans vb.net
    donc de tout réécrire plutôt que d'utiliser le soit disant assistant de migration

    sinon rester sur vb6
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. problème avec fonction filter et convert
    Par taumyy dans le forum MATLAB
    Réponses: 0
    Dernier message: 11/05/2011, 10h16
  2. Problème avec FileSystemWatcher Filter
    Par callo dans le forum C#
    Réponses: 8
    Dernier message: 03/12/2010, 15h19
  3. problème avec Me.Filter
    Par totor92290 dans le forum IHM
    Réponses: 5
    Dernier message: 27/04/2010, 17h22
  4. Réponses: 3
    Dernier message: 10/09/2008, 13h24
  5. Problème avec ADODB.Recordset
    Par Edouard Kaiser dans le forum ASP
    Réponses: 13
    Dernier message: 09/08/2005, 17h54

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