NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005
-
10 juin 2005 à 09:42
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 2010
-
23 juin 2005 à 16:14
Bonjour,
J'aimerais savoir la synthaxe de programmation pour mettre à jour/modifier un champ d'une table d'une base de données Access 2002 car je ne sais pas du tout comment faire.
¤ Enoncé du projet ¤
J'aimerais donc récupérer une chaine que l'utilisateur entre dans une TextBox (nommé "txt_licence"). J'aimerais ensuite en cliquant sur un bouton mettre la base de donnée à jour en ajoutant le contenu de "txt_licence" dans une table nommé "Poste" pour le champ "Licence". Ce champ doit correspondre à la ligne du "CodePoste" concerné que l'utilisateur a choisi en cliquant sur une ListBox nommé "lst_poste", le champ "CodePoste" étant la clé primaire de la table "Poste".
Pour résumer on choisit donc dans le programme le CodePoste puis on entre une licence dans le txt_licence. A partir ce ces 2 éléments je veux mettre à jour le champ "Licence" de la table "Poste" pour le "CodePoste" concerné dans une base de données Access 2002 nommé "Gestionnaire de licence.mdb".
Quelqu'un pourrait-il me dire comment programmer ça sous VB6?
Message pour tof008: étant donné que tout le monde programme en ADO et me demande pourquoi j'utilise DAO (cf. Monsieur Gross ), je veux bien une réponse en ADO. Si j'ai pas programmé en ADO jusque là c'est parce que je ne sais pas comment ça marche mais bon, je crois que je vais m'y mettre donc commençons dès maintenant.
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 21 juin 2005 à 14:21
J'ai un problème bizarre avec VB.
Tu m'avais donc dit de mettre les fonctions dans un module. Pour l'instant toutes mes fonctions je les avais mise dans les forms, là je veux donc les mettre dans un module.
J'ai donc fait un couper/coller de mes fonctions dans le module et quand j'éxécute mon programme voilà l'erreur que j'obtiens:
"Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres"
Je ne comprends pas! J'ai juste fait un copier/coller!
L'erreur apparait au niveau de la requête (ligne avec un fond jaune).
Voilà mon code:
Public Sub ListService(req_ent)
Set req_ent = New Recordset
req_ent.Open "select distinct LibService from Service order by LibService", cnx, adOpenDynamic, adLockOptimistic
req_ent.MoveFirst
While req_ent.EOF = False
lst_service.AddItem req_ent!LibService
req_ent.MoveNext
Wend
End Sub
T'aurais une idée ?!?
Vous n’avez pas trouvé la réponse que vous recherchez ?
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 21 juin 2005 à 14:59
A priori oui. Voilà ce que je déclare dans le "Général":
Option Explicit
Dim cnx As New ADODB.Connection
Dim req_ent As New ADODB.Recordset
Et j'ai la fonction de connexion qui fonctionne dans mon module (qui ne nécessite pas de requête):
Public Sub Connexion(cnx)
Dim RS As New ADODB.Recordset
Set cnx = New ADODB.Connection 'connection à la base
cnx.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Gestionnaire_de_licences.mdb"
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 21 juin 2005 à 16:33
J'ai fait ce que tu m'as dit, ça m'a permis d'avancer dans mon problème mais j'ai une autre message d'erreur! Voici mon code désormais:
Public Sub ListService(req_ent)
Call Fonctions.Connexion(cnx) (Fonctions est le nom de mon module)
Set req_ent = New Recordset
req_ent.Open "select distinct LibService from Service order by LibService", cnx, adOpenDynamic, adLockOptimistic
req_ent.MoveFirst
While req_ent.EOF = False
lst_serviceA.AddItem req_ent!LibService
req_ent.MoveNext
Wend
Désormais j'ai le message d'erreur "Un objet est requis" au niveau de la ligne lst_serviceA.AddItem req_ent!LibService .
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 22 juin 2005 à 08:37
tu as pas un probleme au niveau de l'ecriture ? je sais pas si c'est normal le A à la fin... Ca doit etre un truc comme ca... En general s'il te demande un objet, c'est que tu as mal déclaré ou écris quelque chose...
lst_serviceA
Good luck
(Si la réponse vous convient, appuyez sur réponse acceptée...)
Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 22 juin 2005 à 11:49
Nan franchement le nom c'est normal, tout est OK. La preuve est que quand je ne passe pas la fonction dans le module et que je la mets directement dans le programme ça fonctionne. Et je fais que du copier/coller! Je pige pas le délire avec ce module.
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 22 juin 2005 à 14:04
Beh parce que c'est une fonction dans laquelle il y a une requête tout simplement. C'est une requête que je dois faire plusieurs fois donc je la mets dans une fonction pour éviter de la refaire à chaque fois.
T'as jamais fait de fonction avec une requête dedans?
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 22 juin 2005 à 15:40
Salut!
J'ai un problème dans mon programme. Dans celui-ci, j'ai une partie qui consiste à supprimer des enregistrements d'une table. Le truc c'est que une fois que l'enregistrement qu'on a sélectionné a été supprimé, je dois mettre ma ListBox à jour pour que l'enregistrement que l'on vient de supprimer n'apparaisse plus. Pour cela dans mon code, juste après avoir fait la suppression je refais le code pour consulté ma base de données et reremplir la ListBox en conséquence.
Le problème est que malgré cela, l'enregistrement que l'on vient de supprimer apparait toujours dans la ListBox. Et je crois avoir identifié le problème. En effet, j'ai l'impression que le programme à besoin d'un certain de latence pour effectuer la requête de suppression dans la table Access et comme il effetue le code pour remplir la ListBox tout de suite après, l'enregistrement n'a pas le temps d'être supprimer avant le reremplissage de la ListBox.
Donc j'aimerais savoir si tu sais comment régler ce problème. je pensais notamment à quelquechose qui permetterait de faire attendre le programme pendant 1 seconde par exemple. Genre il arrive à un sorte de timer au niveau du code VB, qu'il obligerait VB à attendre avant d'effectuer les codes qui suivent.
J'espère que j'atais assez clair. En espérant que tu pourras m'aider.
tof008
Messages postés695Date d'inscriptionjeudi 5 mai 2005StatutMembreDernière intervention 5 janvier 201033 23 juin 2005 à 09:01
fais tout simplement :
list1.refresh a la fin de ton remplissage, ou au moment du click sur la lstbox...ou alors tu fais un list1.clear puis le re remplissage...
(Si la réponse vous convient, appuyez sur réponse acceptée...)
Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
NeT_SlipKnoT
Messages postés62Date d'inscriptionsamedi 18 novembre 2000StatutMembreDernière intervention10 décembre 2005 23 juin 2005 à 15:01
J'ai déjà essayé Clear et Refresh mais ça ne change absolument rien. D'ailleurs je n'ai jamais compris l'utilité du lisbox.Refresh, ça n'a jamais rien changé au niveau de mon programme.
Mais comme j'ai dit et j'en ai parlé à Micka, le problème est qu'apparement il faut au programme un petit moment de latence pour supprimer l'enregistrement c'est pourquoi le fait de réremplir la ListBox tout de suite après la requête de suppression ça ne marche pas car il "voit" encore l'enregistrement que l'on vient de supprimer.
Ce qu'il faudarait, c'est de pouvoir dire au programme de s'arrêter genre 1 seconde avant de reprendre la suite du code.
C'est pas possible ça?
cs_Son_of_the_Sun
Messages postés49Date d'inscriptionjeudi 26 mai 2005StatutMembreDernière intervention13 août 2006 23 juin 2005 à 15:08
Dans ton interface y a-t-il un bouton OK qui te permet d'envoyer des informations ou quelque chose du genre?
Si oui tu peux éventuellement le rendre invisible tant que la modification n'est pas confirmée, et de ce fait créer un bouton "Confirmer" qui aurait le même code que ton bouton sélectionner...
C'est vraiment la solution de fortune mais bon... Comme dit je connais RIEN.
Solution plus barbare encore, comme tu avais dit, tu supprimes manuellement les valeurs sélectionnées... L'utilisateur n'y voit que du feu, mais c'est pas très propre.
En attendant, je suis blasé, j'ai un sacré problème en ASP si vous voulez jetter un coup d'oeil, ne serait-ce que pour rire...