Je suis à la recherche d'un bout de code qui me permette lorsque je
sélectionnne dans ma combobox1 la ville, que ca me mette automatiquement le
code postale dans ma combobox2 et vice-versa.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
TroXsA
Bonjour
C'est relativement simple a faire, il suffit de dire si telle ville est sélectionné c'est le code postal est 35000 (vise versa) Bien sur si on a 500 villes a faire c'est un peu pierreux a faire, je pense qu'un fichier XML serait le plus adapté. Je pense qu'il n'existe pas de bout de code dans c'ette exemples.
Je pourrais le faire peut etre si j'ai un peux de temps :)
--
Mail : http://cerbermail.com/?rIXgaw9Xsl Site : http://troxsa.info
Bonjour
C'est relativement simple a faire, il suffit de dire si telle ville est
sélectionné c'est le code postal est 35000 (vise versa)
Bien sur si on a 500 villes a faire c'est un peu pierreux a faire, je pense
qu'un fichier XML serait le plus adapté.
Je pense qu'il n'existe pas de bout de code dans c'ette exemples.
Je pourrais le faire peut etre si j'ai un peux de temps :)
--
Mail : http://cerbermail.com/?rIXgaw9Xsl
Site : http://troxsa.info
C'est relativement simple a faire, il suffit de dire si telle ville est sélectionné c'est le code postal est 35000 (vise versa) Bien sur si on a 500 villes a faire c'est un peu pierreux a faire, je pense qu'un fichier XML serait le plus adapté. Je pense qu'il n'existe pas de bout de code dans c'ette exemples.
Je pourrais le faire peut etre si j'ai un peux de temps :)
--
Mail : http://cerbermail.com/?rIXgaw9Xsl Site : http://troxsa.info
The Ploum
Bonjour Nils,
Ton problème est plus compliqué qu'il n'y parait !
Admettons que tu dispose d'une table contenant toutes les communes et le code postal associé à chacune d'elles, tu vas alors avoir environs 36 600 lignes dans ta table. Le problème c'est qu'il n'y a pas 36 600 codes postaux différents, mais seulement 6 300 !
Autrement dit, il est relativement facile de trouver un code postal à partir d'un nom de ville (à la condition qu'il soit correctement orthographié). Dans ton cas, c'est encore plus facile puisque tu veux les présenter dans une combobox. En affectant la valeur "DropDownList" à la propriété "DropDownStyle" de ta combobox contentant les villes, l'utilisateur sera obligé de choisir une valeur présente dans la combobox, donc pas d'erreur d'orthographe possible. Comme à une ville donnée correspond un seul code postal, il est facile d'affecter un code postal à partir d'une ville.
En revanche, pour chaque code postal tu as potentiellement 6 villes "possibles" en moyenne (36 600 / 6 300). Tu peux donc "au mieux" proposer un choix de n villes possibles pour un code postal donné. Il faudra donc filtrer les villes affichées dans la combobox d'après le code postal fourni. Bien sûr, lorsque la requête ne trouve qu'une seule ville elle peut être affichée automatiquement. Ce type de fichier de référence (codes postaux-communes) existe et est en vente sur le site du Service National de l'Adresse (SNA) de La Poste (www.laposte.fr/sna), ainsi que chez différents fournisseurs.
Voyons maintenant l'implémentation. Disons que tu dispose d'un dataset nommé "myDataset" et qu'il contient une table "Contacts" et une table "Communes". Les deux tables possèdent un champ "CodePostal" et un champ "Ville". Ton formulaire affiche deux combobox "cbCodePostal" et "cbVille". Comme nous venons de le voir, il va faloir filtrer les villes dans certains cas. Comme tu ne précise pas si tu es en VS 2003 ou en VS 2005, il faudra choisr une source de données pour les villes disposant d'une propriété permettant de filter. "RowFilter" pour un DataView en VS 2003, ou "Filter" pour un BindingSource en VS 2005. Nous aurons donc "dvVilles" en VS 2003 ou "bsVilles" en VS 2005, qui va pointer sur la table Communes de myDataset. Mais l'idée générale reste la même, dans les deux environnements. Le "décor" étant planté voici les deux cas possibles...
1) Le cas de la recherche d'un code postal à partir d'une ville donnée :
Propriétés principales de la combobox cbVille. - DataSource = dvVilles ou bsVilles - DisplayMember = Ville ' Affiche les villes de la table Communes - ValueMember = CodePostal ' Retient le code postal correspondant dans la table des Communes - SelectedValue (DataBindings) = Contacts.CodePostal
Sur l'évènement ValueMemberChanged de cbVille tu peux affecter le code postal comme ceci : cbCodePostal.SelectedValue = cbVille.ValueMember Mais ATTENTION, en faisant cela tu vas aussi déclecher l'évènement ValueMemberChanged de cbCodePostal et créer ainsi une référence circulaire ! Il faudra donc plutôt écrire :
' S'il n'y a pas de code postal sélectionné dans cbCodePostal If cbCodePostal.SelectedValue Is Nothing Then ' Sélectionner le code postal correspondant à la ville choisie cbCodePostal.SelectedValue = cbVille.ValueMember End If
2) Le cas de la recherche d'une ville à partir d'un code postal donné :
Propriétés principales de la combobox cbCodePostal. - DataSource = dvVilles ou bsVilles - DisplayMember = CodePostal ' Affiche les codes postaux de la table Communes - ValueMember = CodePostal ' Retient le code postal sélectionné dans la table des Communes - SelectedValue (DataBindings) = Contacts.CodePostal
Sur l'évènement ValueMemberChanged de cbCodePostal tu peux rechercher les villes correspondantes comme ceci :
Dim strFiltre as string
' Attention la valeur du code postal doit être entre guillements simples ( ' ) ! strFiltre = "CodePostal = '" & cbCodePostal.SelectedValue.ToString() & "'"
Dès lors, la combobox cbVille ne contient plus que les villes correspondant au code postal fourni. Tu peux affiner encore en testant le nombre de villes trouvées.
Voilà pour les grandes lignes, en espérant t'avoir aidé.
Ploum.
"bluewin" a écrit :
Bonjour,
Je suis à la recherche d'un bout de code qui me permette lorsque je sélectionnne dans ma combobox1 la ville, que ca me mette automatiquement le code postale dans ma combobox2 et vice-versa.
Merci de votre aide Nils
Bonjour Nils,
Ton problème est plus compliqué qu'il n'y parait !
Admettons que tu dispose d'une table contenant toutes les communes et le
code postal associé à chacune d'elles, tu vas alors avoir environs 36 600
lignes dans ta table. Le problème c'est qu'il n'y a pas 36 600 codes postaux
différents, mais seulement 6 300 !
Autrement dit, il est relativement facile de trouver un code postal à partir
d'un nom de ville (à la condition qu'il soit correctement orthographié). Dans
ton cas, c'est encore plus facile puisque tu veux les présenter dans une
combobox. En affectant la valeur "DropDownList" à la propriété
"DropDownStyle" de ta combobox contentant les villes, l'utilisateur sera
obligé de choisir une valeur présente dans la combobox, donc pas d'erreur
d'orthographe possible. Comme à une ville donnée correspond un seul code
postal, il est facile d'affecter un code postal à partir d'une ville.
En revanche, pour chaque code postal tu as potentiellement 6 villes
"possibles" en moyenne (36 600 / 6 300). Tu peux donc "au mieux" proposer un
choix de n villes possibles pour un code postal donné. Il faudra donc filtrer
les villes affichées dans la combobox d'après le code postal fourni. Bien
sûr, lorsque la requête ne trouve qu'une seule ville elle peut être affichée
automatiquement.
Ce type de fichier de référence (codes postaux-communes) existe et est en
vente sur le site du Service National de l'Adresse (SNA) de La Poste
(www.laposte.fr/sna), ainsi que chez différents fournisseurs.
Voyons maintenant l'implémentation. Disons que tu dispose d'un dataset nommé
"myDataset" et qu'il contient une table "Contacts" et une table "Communes".
Les deux tables possèdent un champ "CodePostal" et un champ "Ville". Ton
formulaire affiche deux combobox "cbCodePostal" et "cbVille". Comme nous
venons de le voir, il va faloir filtrer les villes dans certains cas. Comme
tu ne précise pas si tu es en VS 2003 ou en VS 2005, il faudra choisr une
source de données pour les villes disposant d'une propriété permettant de
filter. "RowFilter" pour un DataView en VS 2003, ou "Filter" pour un
BindingSource en VS 2005. Nous aurons donc "dvVilles" en VS 2003 ou
"bsVilles" en VS 2005, qui va pointer sur la table Communes de myDataset.
Mais l'idée générale reste la même, dans les deux environnements. Le "décor"
étant planté voici les deux cas possibles...
1) Le cas de la recherche d'un code postal à partir d'une ville donnée :
Propriétés principales de la combobox cbVille.
- DataSource = dvVilles ou bsVilles
- DisplayMember = Ville ' Affiche les villes de la table Communes
- ValueMember = CodePostal ' Retient le code postal correspondant dans la
table des Communes
- SelectedValue (DataBindings) = Contacts.CodePostal
Sur l'évènement ValueMemberChanged de cbVille tu peux affecter le code
postal comme ceci : cbCodePostal.SelectedValue = cbVille.ValueMember
Mais ATTENTION, en faisant cela tu vas aussi déclecher l'évènement
ValueMemberChanged de cbCodePostal et créer ainsi une référence circulaire !
Il faudra donc plutôt écrire :
' S'il n'y a pas de code postal sélectionné dans cbCodePostal
If cbCodePostal.SelectedValue Is Nothing Then
' Sélectionner le code postal correspondant à la ville choisie
cbCodePostal.SelectedValue = cbVille.ValueMember
End If
2) Le cas de la recherche d'une ville à partir d'un code postal donné :
Propriétés principales de la combobox cbCodePostal.
- DataSource = dvVilles ou bsVilles
- DisplayMember = CodePostal ' Affiche les codes postaux de la table Communes
- ValueMember = CodePostal ' Retient le code postal sélectionné dans la
table des Communes
- SelectedValue (DataBindings) = Contacts.CodePostal
Sur l'évènement ValueMemberChanged de cbCodePostal tu peux rechercher les
villes correspondantes comme ceci :
Dim strFiltre as string
' Attention la valeur du code postal doit être entre guillements simples ( '
) !
strFiltre = "CodePostal = '" & cbCodePostal.SelectedValue.ToString() & "'"
Dès lors, la combobox cbVille ne contient plus que les villes correspondant
au code postal fourni. Tu peux affiner encore en testant le nombre de villes
trouvées.
Voilà pour les grandes lignes, en espérant t'avoir aidé.
Ploum.
"bluewin" a écrit :
Bonjour,
Je suis à la recherche d'un bout de code qui me permette lorsque je
sélectionnne dans ma combobox1 la ville, que ca me mette automatiquement le
code postale dans ma combobox2 et vice-versa.
Ton problème est plus compliqué qu'il n'y parait !
Admettons que tu dispose d'une table contenant toutes les communes et le code postal associé à chacune d'elles, tu vas alors avoir environs 36 600 lignes dans ta table. Le problème c'est qu'il n'y a pas 36 600 codes postaux différents, mais seulement 6 300 !
Autrement dit, il est relativement facile de trouver un code postal à partir d'un nom de ville (à la condition qu'il soit correctement orthographié). Dans ton cas, c'est encore plus facile puisque tu veux les présenter dans une combobox. En affectant la valeur "DropDownList" à la propriété "DropDownStyle" de ta combobox contentant les villes, l'utilisateur sera obligé de choisir une valeur présente dans la combobox, donc pas d'erreur d'orthographe possible. Comme à une ville donnée correspond un seul code postal, il est facile d'affecter un code postal à partir d'une ville.
En revanche, pour chaque code postal tu as potentiellement 6 villes "possibles" en moyenne (36 600 / 6 300). Tu peux donc "au mieux" proposer un choix de n villes possibles pour un code postal donné. Il faudra donc filtrer les villes affichées dans la combobox d'après le code postal fourni. Bien sûr, lorsque la requête ne trouve qu'une seule ville elle peut être affichée automatiquement. Ce type de fichier de référence (codes postaux-communes) existe et est en vente sur le site du Service National de l'Adresse (SNA) de La Poste (www.laposte.fr/sna), ainsi que chez différents fournisseurs.
Voyons maintenant l'implémentation. Disons que tu dispose d'un dataset nommé "myDataset" et qu'il contient une table "Contacts" et une table "Communes". Les deux tables possèdent un champ "CodePostal" et un champ "Ville". Ton formulaire affiche deux combobox "cbCodePostal" et "cbVille". Comme nous venons de le voir, il va faloir filtrer les villes dans certains cas. Comme tu ne précise pas si tu es en VS 2003 ou en VS 2005, il faudra choisr une source de données pour les villes disposant d'une propriété permettant de filter. "RowFilter" pour un DataView en VS 2003, ou "Filter" pour un BindingSource en VS 2005. Nous aurons donc "dvVilles" en VS 2003 ou "bsVilles" en VS 2005, qui va pointer sur la table Communes de myDataset. Mais l'idée générale reste la même, dans les deux environnements. Le "décor" étant planté voici les deux cas possibles...
1) Le cas de la recherche d'un code postal à partir d'une ville donnée :
Propriétés principales de la combobox cbVille. - DataSource = dvVilles ou bsVilles - DisplayMember = Ville ' Affiche les villes de la table Communes - ValueMember = CodePostal ' Retient le code postal correspondant dans la table des Communes - SelectedValue (DataBindings) = Contacts.CodePostal
Sur l'évènement ValueMemberChanged de cbVille tu peux affecter le code postal comme ceci : cbCodePostal.SelectedValue = cbVille.ValueMember Mais ATTENTION, en faisant cela tu vas aussi déclecher l'évènement ValueMemberChanged de cbCodePostal et créer ainsi une référence circulaire ! Il faudra donc plutôt écrire :
' S'il n'y a pas de code postal sélectionné dans cbCodePostal If cbCodePostal.SelectedValue Is Nothing Then ' Sélectionner le code postal correspondant à la ville choisie cbCodePostal.SelectedValue = cbVille.ValueMember End If
2) Le cas de la recherche d'une ville à partir d'un code postal donné :
Propriétés principales de la combobox cbCodePostal. - DataSource = dvVilles ou bsVilles - DisplayMember = CodePostal ' Affiche les codes postaux de la table Communes - ValueMember = CodePostal ' Retient le code postal sélectionné dans la table des Communes - SelectedValue (DataBindings) = Contacts.CodePostal
Sur l'évènement ValueMemberChanged de cbCodePostal tu peux rechercher les villes correspondantes comme ceci :
Dim strFiltre as string
' Attention la valeur du code postal doit être entre guillements simples ( ' ) ! strFiltre = "CodePostal = '" & cbCodePostal.SelectedValue.ToString() & "'"
Dès lors, la combobox cbVille ne contient plus que les villes correspondant au code postal fourni. Tu peux affiner encore en testant le nombre de villes trouvées.
Voilà pour les grandes lignes, en espérant t'avoir aidé.
Ploum.
"bluewin" a écrit :
Bonjour,
Je suis à la recherche d'un bout de code qui me permette lorsque je sélectionnne dans ma combobox1 la ville, que ca me mette automatiquement le code postale dans ma combobox2 et vice-versa.