Pb de mise à jour automatique vb
Résolu
nague29
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Voilà j'ai un souci qui me tracasse depuis pas mal de temps maintenant. Je vais essayer de vous l'expliquer clairement :
à partir d'une application vb6 je porte des modifications sur une base de données existante access. J'arrive à m'y connecté sans aucun souci, mes modifications marchent également (modifier nom d'un produit, supprimer, ajouter...).Tout cela fonctionne sauf que les modifications apportées ne prennent pas effet automatiquement. Je suis alors obliger de quitter mon application vb et de la relancer et là par contre les produits ou famille de produits se sont bien rajouter dans mes combobox ou listbox.
Je serais vraiment heureux si quelqu'un avait la patience de m'aider et de trouver la solution pour que les modifications apportées se fassent tout de suite en direct. Pour vous aider à y voir plus clair je vous montre un bout de code qui sert à ajouter par exemple une famille de produit dans ma listbox :
Private Sub btn_ajou_Click()
Dim ajou As String
Dim cnn As New ADODB.Connection
Dim maj As String
' Connexion à la base de donnée
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Raito-Kun\Mes documents\Numérim\calcul stock\numérim.mdb"
' Ajout d'un champ de type "String"
ajou = InputBox("Saisissez le nom de la nouvelle famille :")
cnn.Execute "INSERT INTO famille(famille) VALUES('" & (ajou) & "')"
cnn.Close
End Sub
et voici le code qui charger ma listbox au chargement du form (au cas où):
Private Sub Form_Load()
'/////////On remplie la listbox famille et la combo/////////////'
Dim oADO As ADODB.Connection
Dim ors As ADODB.Recordset
Dim strPWD As String
Dim strSQL As String
Set oADO = New ADODB.Connection
'Dans le cas d'une DB avec un mot de passe
With oADO
.Provider = "Microsoft.jet.oledb.4.0;"
.Mode = adModeShareDenyNone
.ConnectionString = "C:\Documents and Settings\Raito-Kun\Mes documents\Numérim\calcul stock\numérim.mdb"
.Open
End With
Set ors = New ADODB.Recordset
strSQL = "SELECT famille FROM famille ORDER BY id_famille"
With ors
.CursorLocation = adUseClient
.Open strSQL, oADO, adOpenForwardOnly, adLockOptimistic
.Properties.Refresh
.MoveLast
.MoveFirst
Do While Not .EOF
Lst_fam.AddItem .Fields("famille").Value
.MoveNext
Loop
.Close
End With
oADO.Close
Set ors = Nothing
Set oADO = Nothing
'/////////////////C'est fini pour la listbox et la combo!!!!!/////////////////////'
End Sub
voilà j'espère que j'ai été assez clair et que je ne vous embête pas trop avec mes problème qui peuvent paraitre bête mais je suis débutant en vb
Je vous remercie d'avance de votre aide précieuse.
nague29
Voilà j'ai un souci qui me tracasse depuis pas mal de temps maintenant. Je vais essayer de vous l'expliquer clairement :
à partir d'une application vb6 je porte des modifications sur une base de données existante access. J'arrive à m'y connecté sans aucun souci, mes modifications marchent également (modifier nom d'un produit, supprimer, ajouter...).Tout cela fonctionne sauf que les modifications apportées ne prennent pas effet automatiquement. Je suis alors obliger de quitter mon application vb et de la relancer et là par contre les produits ou famille de produits se sont bien rajouter dans mes combobox ou listbox.
Je serais vraiment heureux si quelqu'un avait la patience de m'aider et de trouver la solution pour que les modifications apportées se fassent tout de suite en direct. Pour vous aider à y voir plus clair je vous montre un bout de code qui sert à ajouter par exemple une famille de produit dans ma listbox :
Private Sub btn_ajou_Click()
Dim ajou As String
Dim cnn As New ADODB.Connection
Dim maj As String
' Connexion à la base de donnée
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Raito-Kun\Mes documents\Numérim\calcul stock\numérim.mdb"
' Ajout d'un champ de type "String"
ajou = InputBox("Saisissez le nom de la nouvelle famille :")
cnn.Execute "INSERT INTO famille(famille) VALUES('" & (ajou) & "')"
cnn.Close
End Sub
et voici le code qui charger ma listbox au chargement du form (au cas où):
Private Sub Form_Load()
'/////////On remplie la listbox famille et la combo/////////////'
Dim oADO As ADODB.Connection
Dim ors As ADODB.Recordset
Dim strPWD As String
Dim strSQL As String
Set oADO = New ADODB.Connection
'Dans le cas d'une DB avec un mot de passe
With oADO
.Provider = "Microsoft.jet.oledb.4.0;"
.Mode = adModeShareDenyNone
.ConnectionString = "C:\Documents and Settings\Raito-Kun\Mes documents\Numérim\calcul stock\numérim.mdb"
.Open
End With
Set ors = New ADODB.Recordset
strSQL = "SELECT famille FROM famille ORDER BY id_famille"
With ors
.CursorLocation = adUseClient
.Open strSQL, oADO, adOpenForwardOnly, adLockOptimistic
.Properties.Refresh
.MoveLast
.MoveFirst
Do While Not .EOF
Lst_fam.AddItem .Fields("famille").Value
.MoveNext
Loop
.Close
End With
oADO.Close
Set ors = Nothing
Set oADO = Nothing
'/////////////////C'est fini pour la listbox et la combo!!!!!/////////////////////'
End Sub
voilà j'espère que j'ai été assez clair et que je ne vous embête pas trop avec mes problème qui peuvent paraitre bête mais je suis débutant en vb
Je vous remercie d'avance de votre aide précieuse.
nague29
A voir également:
- Pb de mise à jour automatique vb
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Logiciel de sauvegarde automatique gratuit - Guide
- Réponse automatique thunderbird - Guide
3 réponses
Bonjour,
Voilà ce que je propose :
En fait, l'initialisation du listbox et du combo se fait sur le Load de la Form. J'ai juste modifier le Form_Load qui fait appel à la procédure RefreshForm() pour initialiser le listbox et combo. Cette procédure est également appelée à la fin du traitement d'insertion dans btn_ajou_click().
;o)
Voilà ce que je propose :
Private Sub btn_ajou_Click() Dim ajou As String Dim cnn As New ADODB.Connection Dim maj As String ' Connexion à la base de donnée cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Raito-Kun\Mes documents\Numérim\calcul stock\numérim.mdb" ' Ajout d'un champ de type "String" ajou = InputBox("Saisissez le nom de la nouvelle famille :") cnn.Execute "INSERT INTO famille(famille) VALUES('" & (ajou) & "')" cnn.Close RefreshForm End Sub Private Sub Form_Load() RefreshForm End Sub Public Sub RefreshForm() '/////////On remplie la listbox famille et la combo/////////////' Dim oADO As ADODB.Connection Dim ors As ADODB.Recordset Dim strPWD As String Dim strSQL As String Set oADO = New ADODB.Connection 'Dans le cas d'une DB avec un mot de passe With oADO .Provider = "Microsoft.jet.oledb.4.0;" .Mode = adModeShareDenyNone .ConnectionString = "C:\Documents and Settings\Raito-Kun\Mes documents\Numérim\calcul stock\numérim.mdb" .Open End With Set ors = New ADODB.Recordset strSQL = "SELECT famille FROM famille ORDER BY id_famille" With ors .CursorLocation = adUseClient .Open strSQL, oADO, adOpenForwardOnly, adLockOptimistic .Properties.Refresh .MoveLast .MoveFirst Do While Not .EOF Lst_fam.AddItem .Fields("famille").Value .MoveNext Loop .Close End With oADO.Close Set ors = Nothing Set oADO = Nothing '/////////////////C'est fini pour la listbox et la combo!!!!!/////////////////////' End Sub
En fait, l'initialisation du listbox et du combo se fait sur le Load de la Form. J'ai juste modifier le Form_Load qui fait appel à la procédure RefreshForm() pour initialiser le listbox et combo. Cette procédure est également appelée à la fin du traitement d'insertion dans btn_ajou_click().
;o)
Salut Polux31 !
C'est génial ça marche ! franchement je ne sais pas comment te remercier. Tu peux pas savoir comment ça me faisait galérer ce truc !
Juste un truc : lorsque je faisait ajouter et bien il me mettait la liste à jour (niquel), mais en double !
Donc j'ai tout simplement fait :
lst_fam.clear
Avant la connexion à la base de données dans le form_refresh et ça marche impeccable ! Mais bon dis-moi si c'est une bêtise de faire un clear mais là je ne pense pas car au final ce sont bien les familles issues de ma base de données.
Donc grâce à mon sauveur polux31 mon problème est résolu!
Merci 1000 fois !!
au fait merci également de la rapidité de ton intervention ça fait plaisir et tu m'a bien expliquer en plus comment ta fait donc mes respect
C'est génial ça marche ! franchement je ne sais pas comment te remercier. Tu peux pas savoir comment ça me faisait galérer ce truc !
Juste un truc : lorsque je faisait ajouter et bien il me mettait la liste à jour (niquel), mais en double !
Donc j'ai tout simplement fait :
lst_fam.clear
Avant la connexion à la base de données dans le form_refresh et ça marche impeccable ! Mais bon dis-moi si c'est une bêtise de faire un clear mais là je ne pense pas car au final ce sont bien les familles issues de ma base de données.
Donc grâce à mon sauveur polux31 mon problème est résolu!
Merci 1000 fois !!
au fait merci également de la rapidité de ton intervention ça fait plaisir et tu m'a bien expliquer en plus comment ta fait donc mes respect
Content de t'avoir aidé.
Tu as raison, il faut bien mettre lst_fam.clear en tout début de la procédure ResfreshForm(), c'est là sa place ...
Ma contribution a été mineure, je n'ai fait que modifier 2 choses et en plus j'ai oublié le lst_fam.clear ... tout le mérite te revient.
Bon courage pour la suite.
;o)
Tu as raison, il faut bien mettre lst_fam.clear en tout début de la procédure ResfreshForm(), c'est là sa place ...
Ma contribution a été mineure, je n'ai fait que modifier 2 choses et en plus j'ai oublié le lst_fam.clear ... tout le mérite te revient.
Bon courage pour la suite.
;o)