A voir également:
- Tuto VB/Access
- Tuto tableau croisé dynamique - Guide
- Tuto torrent - Guide
- Tuto chromecast - Guide
- Tuto rufus windows 11 - Guide
- Tuto table des matières word - Guide
284 réponses
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é.
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.
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Eh oui ... dommage que tu sois le seul à le reconnaitre ... mdrrrrrrrr
C'est toujours avec plaisir ...
;o)
C'est toujours avec plaisir ...
;o)
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ô
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 ..
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é.
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)
ben voui .... sleep permet de faire une pause en principe ... hummm je vais fouiller sur le net.
je re
;o)
je re
;o)
pfffff, il faut déclaré l'api ... j'chu nul aussi des fois
Declare Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)
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)
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
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)
Bah t'inkiète ... la semaine est faite pour qu'on se repose du week end, sinon à quoi elle servirait ? hein ?
;o)
;o)
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
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)