Mettre données dans les contrôles par fonction récursive

Contenu du snippet

Cette fonction m'est très utile dans mes programmes d'accès aux bases de données, alors je vous la donne. Biensûr il y a moyen de l'améliorer.
Voilà vous donner tout simplement le contrôle où se situe vos différent textbox et autre, la phrase sql globale de recherches de vos données et vous maintenant une variable du nom de strConnection qui n'est autre que la chaîne de connection à votre base de données. Vous lancez la procédure et hop les données s'affichent comme par miracle sans se prendre la tête de noter 36000 lignes de codes. Une ligne de code est suffisant !

Désolé pour les commentaires, je suis pas très fortiche pour ça !

Ah j'allais oublier de vous informer que cette procédure est récursive ! A vous d'en voir l'uitilité !

Source / Exemple :


Public strConnection as string="user id=sa;password=;initial  catalog=NomBaseDeDonnées;server=ServeurBaseDeDonnées"

Public Sub GetField(ByVal Ctrl As Object, ByVal strSQL As String)
        Dim DS As New DataSet()
        Try
            'Recherche dans la base de données
            Dim DBCon As New SqlClient.SqlConnection(strConnection)
            Dim Query As New SqlClient.SqlDataAdapter(strSQL, DBCon)
            Query.Fill(DS)
            Query.Dispose()
            DBCon.Close()
            DBCon.Dispose()
            If DS.Tables(0).Rows.Count > 0 Then
                Dim C As Control
                'Affiche les données suivants le control
                For Each C In Ctrl
                    Select Case C.GetType.ToString
                        Case "System.Windows.Forms.TextBox"
                            Dim TB As TextBox = C
                            If Not (TypeOf (DS.Tables(0).Rows(0).Item(TB.Name)) Is DBNull) Then
                                TB.Text = DS.Tables(0).Rows(0).Item(TB.Name)
                            Else
                                TB.Text = ""
                            End If
                        Case "System.Windows.Forms.ComboBox"
                            Dim CB As ComboBox = C
                            If Not (TypeOf (DS.Tables(0).Rows(0).Item(CB.Name)) Is DBNull) Then
                                Dim I As Integer
                                If CB.Items.Count > 0 Then
                                    For I = 0 To CB.Items.Count - 1
                                        If CB.Items(I).ToString.IndexOf(DS.Tables(0).Rows(0).Item(CB.Name), 0) <> -1 Then CB.SelectedIndex = I
                                    Next I
                                End If
                            End If
                        Case "System.Windows.Forms.CheckBox"
                            Dim CB As CheckBox = C
                            If Not (TypeOf (DS.Tables(0).Rows(0).Item(CB.Name)) Is DBNull) Then
                                If DS.Tables(0).Rows(0).Item(cb.Name) = True Then
                                    CB.Checked = True
                                Else
                                    CB.Checked = False
                                End If
                            End If
                        Case "System.Windows.Forms.ListBox"
                            Dim LB As ListBox = C
                            If Not (TypeOf (DS.Tables(0).Rows(0).Item(LB.Name)) Is DBNull) Then
                                If LB.Items.Count > 0 Then
                                    Dim I As Integer
                                    For I = 0 To LB.Items.Count - 1
                                        If LB.Items(I).ToString.IndexOf(DS.Tables(0).Rows(0).Item(LB.Name)) <> -1 Then
                                            LB.SelectedIndex = I
                                        End If
                                    Next I
                                End If
                            End If
                    End Select
                    GetField(C.Controls, strSQL)
                Next
            End If
        Catch Err As Exception
            MsgBox(Err.Message, MsgBoxStyle.Exclamation, "Erreur")
        Finally
            DS.Dispose()
        End Try
    End Sub

Private Sub Button1_Click(ByVal sender As Object, ByVal e as System.EventArgs) Handles Button1.Click
    GetField(GroupBox1.Controls,"Select * From Employes Where EmployeId=1")
End Sub

Conclusion :


La dernière fonction montre un exemple d'utilisation. Très simple non !?!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.