begin process at 2012 02 17 01:06:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Modules

 > ENREGISTRER UNE NOUVELLE SAISIE DANS UN COMBOBOX.

ENREGISTRER UNE NOUVELLE SAISIE DANS UN COMBOBOX.


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Modules Source .NET ( DotNet ) Classé sous :combobox, liste, enregistrement, dataset, dataview Niveau :Débutant Date de création :27/08/2006 Date de mise à jour :27/08/2006 21:44:06 Vu / téléchargé :14 875 / 4 470

Auteur : Gwendal3

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Le sub contenu dans le module1 permet d'enregistrer dans une table (ici Access) une valeur entrée dans un combobox, tout en vérifiant que celle-ci n'existe pas déjà. Vous pouvez appeler ce sub sur tous les combobox ou vous souhaitez offrir à l'utilisateur la possibilité d'enregistrer une nouvelle valeur.

L'appel
CtrlEnregSaisieCbo(ByVal ChampCtrl As ComboBox, ByVal SqlFiltre As String)

ChampCtrl = Me.NomDuCombobox
SqlFiltre = "SELECT NomDeLaTable.NomDuChampRechercheEtDAjout, NomDeLaTable.AutresChamps FROM NomDeLaTable ORDER BY NomDeLaTable.NomDuChampATrier;"

Source

  • Imports System
  • Imports System.Data
  • Imports System.Data.OleDb
  • Module module1
  • Sub CtrlEnregSaisieCbo(ByVal ChampCtrl As ComboBox, ByVal SqlFiltre As String)
  • Dim Connection As New OleDb.OleDbConnection
  • Try
  • If ChampCtrl.Text <> "" Then
  • '' -> PARAMETRE DE CONNECTION
  • ' Connection
  • Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  • "Data Source =" & Application.StartupPath & "\Source\Voiture.mdb;"
  • '' -> EXTRACTION DU NOM DE LA TABLE ET DU NOM DU CHAMP DE RECHERCHE
  • ' Format de SqlFiltre : SELECT NomDeLaTable.NomDuChampRecherche, NomDeLaTable.AutresChamps FROM NomDeLaTable;"
  • Dim NomTable As String
  • Dim NomChamp As String
  • 'Recherche de la position du 1er espace
  • Dim PositionEspace As Integer
  • PositionEspace = SqlFiltre.IndexOf(" ")
  • 'Recherche de la position du point
  • Dim PositionPt As Integer
  • PositionPt = SqlFiltre.IndexOf(".")
  • 'Recherche de la position de FROM
  • Dim PositionVirg As Integer
  • PositionVirg = SqlFiltre.IndexOf(",")
  • 'Extraction du nom de la table
  • NomTable = SqlFiltre.Substring(PositionEspace + 1, PositionPt - PositionEspace - 1)
  • 'Extraction du nom du champ de la table
  • NomChamp = SqlFiltre.Substring((PositionPt + 1), PositionVirg - PositionPt - 1)
  • '' -> AJOUTER
  • ' DataAdapter, DataSet, DataTable, DataView
  • 'Connection
  • Connection.Open()
  • ' Création du DataAdapter, DataSet, DataTable, Création du DataView avec son filtre
  • Dim DtAdapter = New OleDb.OleDbDataAdapter(SqlFiltre, Connection)
  • Dim DtSet As New DataSet
  • DtAdapter.Fill(DtSet, NomTable)
  • Dim DtTable As DataTable
  • DtTable = DtSet.Tables(NomTable)
  • Dim dtView As New DataView(DtTable)
  • dtView.RowFilter = NomChamp & " = '" & ChampCtrl.Text.Replace("'", "''") & "'"
  • ' Vérifier dans la table l'existance de la saisie de l'utilisateur
  • If dtView.Count = 0 Then
  • 'Création de la messagebox
  • Dim Message As String
  • Dim Titre As String
  • Dim Bouton As MessageBoxButtons
  • Dim Icone As MessageBoxIcon
  • Dim Resultat As String
  • Message = ChampCtrl.Text & " n'est pas enregistré." & _
  • vbCr & "Voulez-vous l'enregistrer ?"
  • Titre = "Sélection incorrecte"
  • Bouton = MessageBoxButtons.YesNo
  • Icone = MessageBoxIcon.Exclamation
  • Resultat = MessageBox.Show(Message, Titre, Bouton, Icone)
  • If Resultat = vbYes Then
  • '' -> ENREGISTREMENT DE LA VALEUR SAISIE
  • Dim NewLigne As DataRow
  • ' Création de la nouvelle ligne
  • NewLigne = DtSet.Tables(NomTable).NewRow
  • ' Remplir les champs
  • NewLigne(NomChamp) = ChampCtrl.Text
  • ' Ajout de la ligne à la table
  • DtSet.Tables(NomTable).Rows.Add(NewLigne)
  • Dim CmdBuild As OleDbCommandBuilder
  • CmdBuild = New OleDb.OleDbCommandBuilder(DtAdapter)
  • DtAdapter.InsertCommand = CmdBuild.GetInsertCommand()
  • DtAdapter.Update(DtSet, NomTable)
  • '' -> ACTUALISER LES DONNEES DE LA LISTE
  • ' Enregistrer la valeur saisie
  • Dim saisie As String
  • saisie = ChampCtrl.Text
  • ' Création du DataAdapter, DataSet
  • Dim DtAdapterActu = New OleDb.OleDbDataAdapter(SqlFiltre, Connection)
  • Dim DtSetActu As New DataSet
  • DtAdapterActu.Fill(DtSetActu, NomTable)
  • ' Remplissage de la liste
  • ChampCtrl.DisplayMember = NomChamp
  • ChampCtrl.ValueMember = "ID_" & NomChamp
  • ChampCtrl.DataSource = DtSetActu.Tables(NomTable)
  • ChampCtrl.Refresh()
  • ChampCtrl.Text = saisie
  • 'CODE POUVANT ETRE SUPPRIME
  • '''''''''''''''''''''
  • Form1.txtInfos.Text = "Nom de la Table: " & NomTable & vbCrLf & _
  • "Nom du champ: " & NomChamp & vbCrLf & _
  • "Nom de la liste: " & ChampCtrl.Name & vbCrLf & _
  • "Valeur de la liste: " & ChampCtrl.Text & vbCrLf & _
  • "Index de la sélection: " & ChampCtrl.SelectedIndex & vbCrLf & _
  • "Valeur de la sélection: " & ChampCtrl.SelectedValue
  • ''''''''''''''''''''
  • Else
  • ChampCtrl.Text = ""
  • 'CODE POUVANT ETRE SUPPRIME
  • '''''''''''''''''''''
  • Form1.txtInfos.Text = ""
  • ''''''''''''''''''''
  • End If
  • End If
  • End If
  • Catch ex As Exception
  • 'Message d'erreur
  • MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
  • Finally
  • 'Fermer la connection
  • Connection.Close()
  • End Try
  • End Sub
  • End Module
Imports System
Imports System.Data
Imports System.Data.OleDb

Module module1

    Sub CtrlEnregSaisieCbo(ByVal ChampCtrl As ComboBox, ByVal SqlFiltre As String)

        Dim Connection As New OleDb.OleDbConnection

        Try
            If ChampCtrl.Text <> "" Then

                '' -> PARAMETRE DE CONNECTION

                ' Connection
                Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                              "Data Source =" & Application.StartupPath & "\Source\Voiture.mdb;"

                '' -> EXTRACTION DU NOM DE LA TABLE ET DU NOM DU CHAMP DE RECHERCHE
                ' Format de SqlFiltre : SELECT NomDeLaTable.NomDuChampRecherche, NomDeLaTable.AutresChamps FROM NomDeLaTable;"

                Dim NomTable As String
                Dim NomChamp As String

                'Recherche de la position du 1er espace
                Dim PositionEspace As Integer
                PositionEspace = SqlFiltre.IndexOf(" ")
                'Recherche de la position du point
                Dim PositionPt As Integer
                PositionPt = SqlFiltre.IndexOf(".")
                'Recherche de la position de FROM
                Dim PositionVirg As Integer
                PositionVirg = SqlFiltre.IndexOf(",")

                'Extraction du nom de la table
                NomTable = SqlFiltre.Substring(PositionEspace + 1, PositionPt - PositionEspace - 1)
                'Extraction du nom du champ de la table
                NomChamp = SqlFiltre.Substring((PositionPt + 1), PositionVirg - PositionPt - 1)

                '' -> AJOUTER
                ' DataAdapter, DataSet, DataTable, DataView

                'Connection
                Connection.Open()

                ' Création du DataAdapter, DataSet, DataTable, Création du DataView avec son filtre
                Dim DtAdapter = New OleDb.OleDbDataAdapter(SqlFiltre, Connection)

                Dim DtSet As New DataSet
                DtAdapter.Fill(DtSet, NomTable)

                Dim DtTable As DataTable
                DtTable = DtSet.Tables(NomTable)

                Dim dtView As New DataView(DtTable)
                dtView.RowFilter = NomChamp & " = '" & ChampCtrl.Text.Replace("'", "''") & "'"

                ' Vérifier dans la table l'existance de la saisie de l'utilisateur 
                If dtView.Count = 0 Then

                    'Création de la messagebox
                    Dim Message As String
                    Dim Titre As String
                    Dim Bouton As MessageBoxButtons
                    Dim Icone As MessageBoxIcon
                    Dim Resultat As String

                    Message = ChampCtrl.Text & " n'est pas enregistré." & _
                              vbCr & "Voulez-vous l'enregistrer ?"
                    Titre = "Sélection incorrecte"
                    Bouton = MessageBoxButtons.YesNo
                    Icone = MessageBoxIcon.Exclamation

                    Resultat = MessageBox.Show(Message, Titre, Bouton, Icone)

                    If Resultat = vbYes Then

                        '' -> ENREGISTREMENT DE LA VALEUR SAISIE

                        Dim NewLigne As DataRow
                        ' Création de la nouvelle ligne 
                        NewLigne = DtSet.Tables(NomTable).NewRow
                        ' Remplir les champs
                        NewLigne(NomChamp) = ChampCtrl.Text
                        ' Ajout de la ligne à la table
                        DtSet.Tables(NomTable).Rows.Add(NewLigne)

                        Dim CmdBuild As OleDbCommandBuilder
                        CmdBuild = New OleDb.OleDbCommandBuilder(DtAdapter)
                        DtAdapter.InsertCommand = CmdBuild.GetInsertCommand()
                        DtAdapter.Update(DtSet, NomTable)

                        '' -> ACTUALISER LES DONNEES DE LA LISTE

                        ' Enregistrer la valeur saisie
                        Dim saisie As String
                        saisie = ChampCtrl.Text

                        ' Création du DataAdapter, DataSet
                        Dim DtAdapterActu = New OleDb.OleDbDataAdapter(SqlFiltre, Connection)

                        Dim DtSetActu As New DataSet
                        DtAdapterActu.Fill(DtSetActu, NomTable)

                        ' Remplissage de la liste
                        ChampCtrl.DisplayMember = NomChamp
                        ChampCtrl.ValueMember = "ID_" & NomChamp
                        ChampCtrl.DataSource = DtSetActu.Tables(NomTable)
                        ChampCtrl.Refresh()
                        ChampCtrl.Text = saisie

                        'CODE POUVANT ETRE SUPPRIME
                        '''''''''''''''''''''
                        Form1.txtInfos.Text = "Nom de la Table: " & NomTable & vbCrLf & _
                                              "Nom du champ: " & NomChamp & vbCrLf & _
                                              "Nom de la liste: " & ChampCtrl.Name & vbCrLf & _
                                              "Valeur de la liste: " & ChampCtrl.Text & vbCrLf & _
                                              "Index de la sélection: " & ChampCtrl.SelectedIndex & vbCrLf & _
                                              "Valeur de la sélection: " & ChampCtrl.SelectedValue


                        ''''''''''''''''''''

                    Else
                        ChampCtrl.Text = ""

                        'CODE POUVANT ETRE SUPPRIME
                        '''''''''''''''''''''
                        Form1.txtInfos.Text = ""
                        ''''''''''''''''''''

                    End If

                End If

            End If

        Catch ex As Exception
            'Message d'erreur
            MessageBox.Show(ex.ToString, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)

        Finally
            'Fermer la connection
            Connection.Close()

        End Try

    End Sub

End Module

 Conclusion

Je débute en VB, soyez indulgent :-P.... Je prend quand même les critiques, les modifis, les erreurs, et les solutions, ... bref tout ce qui fait avancer.

Merci à VbFrance, ou j'ai pu trouver des sources afin de comprendre certains fonctionnements de VB.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

27 août 2006 20:05:32 :
Aucune j'ai fermé mon navigateur trop vite... Le balo ! ;-)
27 août 2006 21:44:08 :
La première version ne comportait qu'une seule table avec qu'une liste. J'ai ajouté deux autres tables avec les listes qui vont avec.

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) COMBOBOX FAÇON ERRORPROVIDER
Source avec Zip Source avec une capture Source .NET (Dotnet) CLASSE D'ACCÈS AUX DONNÉES, DAL (GESTION VÉHICULE)

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) CRYPTAGE ET DECRYPTAGE par jerichez
Source avec Zip Source avec une capture Source .NET (Dotnet) EXEMPLE MODBUS POUR MODULES ADAM, BECKHOFF, WAGO par mnmsjaune
Source avec Zip Source .NET (Dotnet) CRÉER SON PROPRE DESIGNER COMME CELUI DE VISUAL STUDIO par ShareVB
Source avec Zip Source .NET (Dotnet) CONVERSION UTM VERS LAT/LONG par BarresLTD
Source avec Zip CPROPGROUP : COLLECTION FAITE MAISON par Flocreate

 Sources en rapport avec celle ci

ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH... par kerisolde
Source avec Zip Source avec une capture 2COMBOBOX SAVE 1FICHIER .DAT par eckostreet
Source avec Zip Source avec une capture CONTROLE PERMETTANT LA SELECTION A PARTIR D'UNE LISTE PLUS I... par asimengo
Source .NET (Dotnet) FILTRER UN DATASET VIA UN DATAVIEW.ROWFILTER PUIS LE SAUVER ... par Patrice99
Source avec Zip Source avec une capture Source .NET (Dotnet) ALIMENTER UN COMBO AVEC DATASET SQL SERVER COMME UN DATACOMB... par jpeman

Commentaires et avis

Commentaire de KFECREM le 23/09/2006 09:17:04

Bonjour.
Je suis débutant sur ACCESS (1an1/2)et je suis interressé par ce programme, j'ai décompressé le zip mais à l'ouverture de la base "voiture" rien ne se passe.
Alors question totalement stupiude.
Que dois-faire de tout les fichiers ?
Dans l'attente d'un sérieux coup de main je vous souhaite la bonne journée.
Merci
KFECREM

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

items des comboBox sous VBA [ par pearl ] j'ai initialisé mon form en ajoutant une liste d'item à mon combo.N'ayant pas la liste complete de tous les items, je voudrais que quand l'utilisateur Combo Box [ par riton ] Tout le monde connaît le contrôle COMBOBOX !!!Pour faire défiler la liste on utilise la souris ou la touche F4. Mais si on veut faire défiler la liste Important:Liste deroulante dans un Combobox [ par banton_two ] Messieurs, je vous prie d'accepter mes excuses pour ce petit derangement mais je voudrais savoir si vous vous y connaissez bien an VBA et si vous seri aidez-moi! trier des données dans une liste [ par sony22 ] A partir d'un ou plusieurs chiffres tapées dans un textbox(départements)trier dans une colonne les données correspondantes et afficher dans un combobo Rien dans la liste de la Combobox [ par Nico ] N'y arrivant pas avec une Datacombo, j'essaie maintenant avec une Combobox mais j'obtiens ce message: Variable objet non définie... Kess'ki manque ? L data et combobox,forcer le positionnemnt d'un data [ par skaferadics ] comment faire pour forcer le placment d'un data?c'est a dire le faire aller sur l'enregistrement 5 par exemple!en fait j'ai une combobox avec une list ComboBox modifiable [ par Patrik ] Salut,Je suis à la recherche du code source me permettant De gérer le contrôle ComboBox ayant une liste (propiété List ; ou résultat d'une requête SQL Liste de choix [ par filou ] Salut le forum,Je veux faire une petite liste de selection non modifiable par l'utilisateur (saisie d'informations) J'ai essayé avec une combobox ! Av mettre un combobox avec une liste de fichiers [ par chico79 ] Bonjour,comment on fais si on veut créer un combobox avec la liste des fichiers qu'on a dans un répertoire qu'on précise auparavntexemple :un combobox Fichier->Tableau->ComboBox [ par iubito ] Bonjour @ tous !Voilà g 1 truc à faire que je sais bien faire en Access (base de données+formulaire+VBA) mais pas en VB pur.J'ai dans un fichier .txt


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,108 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales