Tuto VB/Access
Fermé
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
-
5 juin 2008 à 11:53
Rikkunter - 22 août 2008 à 16:18
Rikkunter - 22 août 2008 à 16:18
A voir également:
- Tuto VB/Access
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Tuto chromecast - Guide
- Convertisseur youtube en mp3 tuto - Guide
- Tuto tableau croisé dynamique - Guide
284 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 09:07
4 juil. 2008 à 09:07
As-tu passé le code pas à pas pour voir ce que récupère les 2 requêtes ? le problème vient peut être de la.
Arrêt le code aussi avant le ModfrmForm3.AjId et regarde dans la base si l'addnew a bien fonctionné.
Arrêt le code aussi avant le ModfrmForm3.AjId et regarde dans la base si l'addnew a bien fonctionné.
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:17
4 juil. 2008 à 09:17
Le nouvel enregistrement n'est pas créé avec le AddNew.
Donc la valeur récupérée par "SELECT max(num_ligne) from calcul_ligne" est celle du dernier enregistrement, mais pas celui que je veux. Mon sub ajout fonctionne bien, mais comme l'enregistrement n'est pas créé, l'id est ajouté à la mauvaise ligne.
En fait, c'est bizarre parce que je ne peux voir le dernier enregistrement que lorsque je ferme ma fenêtre.
Donc la valeur récupérée par "SELECT max(num_ligne) from calcul_ligne" est celle du dernier enregistrement, mais pas celui que je veux. Mon sub ajout fonctionne bien, mais comme l'enregistrement n'est pas créé, l'id est ajouté à la mauvaise ligne.
En fait, c'est bizarre parce que je ne peux voir le dernier enregistrement que lorsque je ferme ma fenêtre.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 09:23
4 juil. 2008 à 09:23
as tu essayé de faire:
Form3.adoData3.Recordset.AddNew Form3.adoData3.Recordset![valeur] = Trim(Me.txtval.Text) Form3.adoData3.Recordset![ja] = Trim(Me.txtJa.Text) Form3.adoData3.Recordset.UpDate
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:26
4 juil. 2008 à 09:26
Tu es un génie. :)
Merci encore une fois de ton aide.
Merci encore une fois de ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 09:29
4 juil. 2008 à 09:29
Eh oui ... dommage que tu sois le seul à le reconnaitre ... mdrrrrrrrr
C'est toujours avec plaisir ...
;o)
C'est toujours avec plaisir ...
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:33
4 juil. 2008 à 09:33
Hu ? Oô
Je ne voudrais pas remettre en cause ta suprême intelligence, mais en fait ça ne marche pas.
J'ai pas tout compris là.
Ca a marché un coup et ça ne marche plus. S'quoi cette merde ? oô
Je ne voudrais pas remettre en cause ta suprême intelligence, mais en fait ça ne marche pas.
J'ai pas tout compris là.
Ca a marché un coup et ça ne marche plus. S'quoi cette merde ? oô
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 09:45
4 juil. 2008 à 09:45
Arrfff c'était trop beau .... m'enfin j'aurai rêvé 2 à 3 minutes ... ^^
refait la boucle pas à pas pour bien voir ce qui se passe et vérifie en base que tout se passe bien ..
refait la boucle pas à pas pour bien voir ce qui se passe et vérifie en base que tout se passe bien ..
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:49
4 juil. 2008 à 09:49
Je comprend de moins en moins.
Lorsque j'ai les points d'arrêt, pas de problème ça marche niquel. Mais dès que je les enlève, l'enregistrement est ajouté mais pas l'id.
Bizarre, vous avez dit bizarre .... Oô
EDIT : j'ai l'impression qu'il attend quelque chose.
Lorsque j'ajoute un nouvel enregistrement, l'id est ajouté.
Lorsque j'ai les points d'arrêt, pas de problème ça marche niquel. Mais dès que je les enlève, l'enregistrement est ajouté mais pas l'id.
Bizarre, vous avez dit bizarre .... Oô
EDIT : j'ai l'impression qu'il attend quelque chose.
Lorsque j'ajoute un nouvel enregistrement, l'id est ajouté.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 09:50
4 juil. 2008 à 09:50
oula ... tout se passe bien quand tu le fais pas à pas ??? et ça se passe mal en mode normal ?
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:53
4 juil. 2008 à 09:53
Cf mon EDIT du message précédent.
Il ajoute l'id quand je rajoute un enregistrement.
Ex :
num - id - val - ja
42 - 0 - 12 - 12
Je rajoute un enregistrement :
42 - 9 - 12 - 12
43 - 0 - 56 - 45
Mais l'id qu'il rajoute est bon. :S
Il ajoute l'id quand je rajoute un enregistrement.
Ex :
num - id - val - ja
42 - 0 - 12 - 12
Je rajoute un enregistrement :
42 - 9 - 12 - 12
43 - 0 - 56 - 45
Mais l'id qu'il rajoute est bon. :S
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 09:56
4 juil. 2008 à 09:56
Mais quand tu fais pas à pas, ça marche bien ?
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 09:56
4 juil. 2008 à 09:56
J'ai pas testé, mais avec les points d'arrêt oui.
Atta je teste en pas à pas et je te redis ça.
EDIT : oui, ça marche en pas à pas.
Atta je teste en pas à pas et je te redis ça.
EDIT : oui, ça marche en pas à pas.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 10:04
4 juil. 2008 à 10:04
c'est que le système va plus vite que la base. Mets un sleep 2000 apreès Form3.adoData3.Recordset.UpDate.
et test
;o)
et test
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 10:12
4 juil. 2008 à 10:12
Euh .... je veux bien.
Mais ça marche comment ? :P
J'ai essayé avec un sleep 2000, un sleep (2000) mais il me met "procédure non définie".
Ce n'est pas une fonction prédéfinie ?
Mais ça marche comment ? :P
J'ai essayé avec un sleep 2000, un sleep (2000) mais il me met "procédure non définie".
Ce n'est pas une fonction prédéfinie ?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 10:14
4 juil. 2008 à 10:14
ben voui .... sleep permet de faire une pause en principe ... hummm je vais fouiller sur le net.
je re
;o)
je re
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 10:15
4 juil. 2008 à 10:15
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 10:17
4 juil. 2008 à 10:17
pfffff, il faut déclaré l'api ... j'chu nul aussi des fois
Declare Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
4 juil. 2008 à 10:19
4 juil. 2008 à 10:19
Ouaip et là ça fonctionne. :)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 juil. 2008 à 10:22
4 juil. 2008 à 10:22
en fait, le code VB s'exécute plus vite que la mise à jour de la base. Il faut savoir qu'une liaison ADODB est plus rapide qu'une liaison faite avec un objet.
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
7 juil. 2008 à 08:22
7 juil. 2008 à 08:22
Salut Polux, comment vas tu ?
Il me semble que tu m'as déjà donné cette réponse mais je n'arrive pas à la retrouver.
J'ai une erreur : "Cette opération n'est pas autorisée si l'objet est ouvert" dans (sur le 1er update) :
Est ce que tu as une idée d'où peut provenir l'erreur ?
Merci
Il me semble que tu m'as déjà donné cette réponse mais je n'arrive pas à la retrouver.
J'ai une erreur : "Cette opération n'est pas autorisée si l'objet est ouvert" dans (sur le 1er update) :
Public Function InsertionTop(ByVal topDeb As String, ByVal topFin As String) As Boolean Dim Vrai As Boolean Dim query As String Dim ValueId As Long ModESEnt_STD.initTableEnt_STD query = "SELECT max(id_std) from ent_std" Set rs = New ADODB.Recordset Vrai = ModuleBdD.OpenRecordset(query, rs) ValueId = rs.Fields(0) 'Set rs = Nothing 'Set rs = New ADODB.Recordset If Vrai = True Then rs.Open "Update ent_std Set top_debut = '" & topDeb & "' Where id_std= " & ValueId, ModuleBdD.cnx Else MsgBox "Un problème est survenu durant l'insertion du top début" End If If Vrai = True Then rs.Open "Update ent_std Set top_fin = '" & topFin & "' Where id_std= " & ValueId, ModuleBdD.cnx Else MsgBox "Un problème est survenu durant l'insertion du top fin" End If End Function
Est ce que tu as une idée d'où peut provenir l'erreur ?
Merci
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 juil. 2008 à 08:32
7 juil. 2008 à 08:32
Salut, ça va merci et toi ?
Il faut peut être fermer le recordset et en ouvrir un autre à chaque opération. Attention, "Set rs = Nothing" ne ferme pas le recordset. Il libère l'objet rs, c'est comme un destructeur en POO ou java. Le "Set rs = new ADODB.Recordset" étant l'instanciation du constructeur de la classe ADODB.
Il faut faire, je pense:
Set rs = new ADODB.Recordset
rs.open ...
...
rs.Close
Set rs = Nothing
pour chaque commande sql.
;o)
Il faut peut être fermer le recordset et en ouvrir un autre à chaque opération. Attention, "Set rs = Nothing" ne ferme pas le recordset. Il libère l'objet rs, c'est comme un destructeur en POO ou java. Le "Set rs = new ADODB.Recordset" étant l'instanciation du constructeur de la classe ADODB.
Il faut faire, je pense:
Set rs = new ADODB.Recordset
rs.open ...
...
rs.Close
Set rs = Nothing
pour chaque commande sql.
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
7 juil. 2008 à 08:44
7 juil. 2008 à 08:44
Impec.
Je te remercie.
Ps : 'tain comment je suis mort moi. :(
Si je cumule les 3 dernières nuits j'ai pas dormi plus de 10h, pis je conduisais sur 700 bornes.
Mais bon, la Japan Expo était franchement exceptionnelle. On a déjà décidé d'y retourner mais en cosplay cette fois. :)
Je te remercie.
Ps : 'tain comment je suis mort moi. :(
Si je cumule les 3 dernières nuits j'ai pas dormi plus de 10h, pis je conduisais sur 700 bornes.
Mais bon, la Japan Expo était franchement exceptionnelle. On a déjà décidé d'y retourner mais en cosplay cette fois. :)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 juil. 2008 à 08:48
7 juil. 2008 à 08:48
Bah t'inkiète ... la semaine est faite pour qu'on se repose du week end, sinon à quoi elle servirait ? hein ?
;o)
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
7 juil. 2008 à 14:12
7 juil. 2008 à 14:12
Ouaip, j'suis bien d'accord. :)
Euh ... j'ai encore un petit problème. :P
Je récupère certaines info dans ma table avec un recordset et j'aimerais pouvoir les traiter dans l'ordre, d'abord le premier ...
J'ai vu qu'il existait des méthodes pour ça (MoveFirst, MoveNext ...) mais j'ai une erreur sur le premier MoveFirst du type : "Erreur de compilation : méthode ou variable attendue."
Est ce que tu aurais une idée de la provenance de cette erreur ?
Merci
Euh ... j'ai encore un petit problème. :P
Je récupère certaines info dans ma table avec un recordset et j'aimerais pouvoir les traiter dans l'ordre, d'abord le premier ...
J'ai vu qu'il existait des méthodes pour ça (MoveFirst, MoveNext ...) mais j'ai une erreur sur le premier MoveFirst du type : "Erreur de compilation : méthode ou variable attendue."
Public Sub stand(ByVal valueId As Long) Dim query, id_seq As String Dim Vrai As Boolean Dim tmps, tmpstot As Long Dim is_std As Long Dim idseq As Long ModESSeq_std.initTableSeq_STD query = "SELECT * from seq_std where id_std = " & valueId Set rs = New ADODB.Recordset Vrai = ModuleBdD.OpenRecordset(query, rs) Vrai = rs.MoveFirst While Vrai = True is_std = ModESSeq_std.getis_std If is_std = 0 Then Vrai = rs.MoveNext If Vrai = False Then tmps = ModESCal.calcM1 tmpstot = tmpstot + tmps End If Else idseq = ModESSeq_std.getIdSeq valueId = ModESSeq_std.searchIdByItem(id_seq, idseq) stand (valueId) End If Vrai = rs.MoveNext If Vrai = False Then tmps = ModESCal.calcM1 tmpstot = tmpstot + tmps End If Wend MsgBox "tmpstot : " & tmpstot End Sub
Est ce que tu aurais une idée de la provenance de cette erreur ?
Merci
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 juil. 2008 à 14:23
7 juil. 2008 à 14:23
Si tu as gardé les méthodes de lecture (LirePremier, LireSuivant etc ...) dans le moduleBdd, elles sont faites pour ça.
Il suffit de leur passer le recordset en paramètre. Dans le module de données ModESSeq_std, tu dois également avoir les méthodes LirePremier LireSuivant etc ... qui ensuite passent par le moduleBdd.
Il faut faire :
;o)
Il suffit de leur passer le recordset en paramètre. Dans le module de données ModESSeq_std, tu dois également avoir les méthodes LirePremier LireSuivant etc ... qui ensuite passent par le moduleBdd.
Il faut faire :
vrai = ModESSeq_std.LirePremier(rs) While vrai = True is_std = ModESSeq_std.getis_std If is_std = 0 Then vrai = ModESSeq_std.LireSuivant(rs) .... etc vrai = ModESSeq_std.LireSuivant(rs) wend
;o)
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
7 juil. 2008 à 14:26
7 juil. 2008 à 14:26
Ah voui, pas bête. ^^
Merci. :)
Merci. :)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
7 juil. 2008 à 14:34
7 juil. 2008 à 14:34
Merci ... ôO
MrSlave
Messages postés
2587
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 août 2011
146
7 juil. 2008 à 14:38
7 juil. 2008 à 14:38
ôO
Keskispas ? Oô
Ps : erf, maintenant j'ai vrai = false. xD
/me mène l'enquête.
Keskispas ? Oô
Ps : erf, maintenant j'ai vrai = false. xD
/me mène l'enquête.