Je me connecte en VB6 à une base ACCESS 97 en ADO 2.6 (provider =
microsoft.jet.oledb.4.0) j'exécute le code ci-dessous N fois. Lorsque je
demande le maximum de CD (valeur numérique), parfois il n'a pas pris en
compte la procédure d'ajout un enregistrement donc le max de CD demandé dans
la procédure N°1 n'est pas le bon maximum! Y-a-t-il un moyen d'être sûr que
la procédure n°2 a bien été intégrée dans la base afin que la procédure n°1
ressorte le bon maximum ?
Merci.
for NB_FOIS=1 to N
'/// Procédure n°1
MA_TABLE.Open "SELECT MAX(CD) AS MAXI_CD FROM TABLE", MA_BASE,
adOpenKeyset, adLockOptimistic
MAXI_CD=MA_TABLE("MAXI_CD") + 1
MA_TABLE.Close
'/// Procédure n°2
MA_TABLE.Open "SELECT * FROM TABLE WHERE CD=" & MAXI_CD, MA_BASE,
adOpenKeyset, adLockOptimistic
If (MA_TABLE.EOF And MA_TABLE.BOF) Then
'*Ajout
MA_TABLE.AddNew
MA_TABLE.Fields("CD") = MAXI_CD
MA_TABLE.Fields("LB") = "?"
MA_TABLE.Update
End If
MA_TABLE.Close
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
Bismark Prods
Avec DAO on faisait maBD.Update, en ADO c'est pareil !
Immediate Mode Immediate mode is in effect when the LockType property is set to adLockOptimistic or adLockPessimistic. In immediate mode, changes to a record are propagated to the data source as soon as you declare the work on a row complete by calling the Update method.
pour plus d'information le site de msdn : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/pg_ado_update_data_2.asp
"Daryl" a écrit dans le message de news:%
Bonjour,
Je me connecte en VB6 à une base ACCESS 97 en ADO 2.6 (provider > microsoft.jet.oledb.4.0) j'exécute le code ci-dessous N fois. Lorsque je demande le maximum de CD (valeur numérique), parfois il n'a pas pris en compte la procédure d'ajout un enregistrement donc le max de CD demandé
dans
la procédure N°1 n'est pas le bon maximum! Y-a-t-il un moyen d'être sûr
que
la procédure n°2 a bien été intégrée dans la base afin que la procédure
n°1
ressorte le bon maximum ?
Merci.
for NB_FOIS=1 to N
'/// Procédure n°1 MA_TABLE.Open "SELECT MAX(CD) AS MAXI_CD FROM TABLE", MA_BASE, adOpenKeyset, adLockOptimistic MAXI_CD=MA_TABLE("MAXI_CD") + 1 MA_TABLE.Close
'/// Procédure n°2 MA_TABLE.Open "SELECT * FROM TABLE WHERE CD=" & MAXI_CD, MA_BASE, adOpenKeyset, adLockOptimistic If (MA_TABLE.EOF And MA_TABLE.BOF) Then '*Ajout MA_TABLE.AddNew MA_TABLE.Fields("CD") = MAXI_CD MA_TABLE.Fields("LB") = "?" MA_TABLE.Update End If MA_TABLE.Close
Next N
Avec DAO on faisait maBD.Update, en ADO c'est pareil !
Immediate Mode
Immediate mode is in effect when the LockType property is set to
adLockOptimistic or adLockPessimistic. In immediate mode, changes to a
record are propagated to the data source as soon as you declare the work on
a row complete by calling the Update method.
pour plus d'information le site de msdn :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/pg_ado_update_data_2.asp
"Daryl" <ne-pas-repondre@fr.oleane.com> a écrit dans le message de
news:%23tOm5VUpDHA.1960@TK2MSFTNGP12.phx.gbl...
Bonjour,
Je me connecte en VB6 à une base ACCESS 97 en ADO 2.6 (provider > microsoft.jet.oledb.4.0) j'exécute le code ci-dessous N fois. Lorsque je
demande le maximum de CD (valeur numérique), parfois il n'a pas pris en
compte la procédure d'ajout un enregistrement donc le max de CD demandé
dans
la procédure N°1 n'est pas le bon maximum! Y-a-t-il un moyen d'être sûr
que
la procédure n°2 a bien été intégrée dans la base afin que la procédure
n°1
ressorte le bon maximum ?
Merci.
for NB_FOIS=1 to N
'/// Procédure n°1
MA_TABLE.Open "SELECT MAX(CD) AS MAXI_CD FROM TABLE", MA_BASE,
adOpenKeyset, adLockOptimistic
MAXI_CD=MA_TABLE("MAXI_CD") + 1
MA_TABLE.Close
'/// Procédure n°2
MA_TABLE.Open "SELECT * FROM TABLE WHERE CD=" & MAXI_CD, MA_BASE,
adOpenKeyset, adLockOptimistic
If (MA_TABLE.EOF And MA_TABLE.BOF) Then
'*Ajout
MA_TABLE.AddNew
MA_TABLE.Fields("CD") = MAXI_CD
MA_TABLE.Fields("LB") = "?"
MA_TABLE.Update
End If
MA_TABLE.Close
Avec DAO on faisait maBD.Update, en ADO c'est pareil !
Immediate Mode Immediate mode is in effect when the LockType property is set to adLockOptimistic or adLockPessimistic. In immediate mode, changes to a record are propagated to the data source as soon as you declare the work on a row complete by calling the Update method.
pour plus d'information le site de msdn : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/pg_ado_update_data_2.asp
"Daryl" a écrit dans le message de news:%
Bonjour,
Je me connecte en VB6 à une base ACCESS 97 en ADO 2.6 (provider > microsoft.jet.oledb.4.0) j'exécute le code ci-dessous N fois. Lorsque je demande le maximum de CD (valeur numérique), parfois il n'a pas pris en compte la procédure d'ajout un enregistrement donc le max de CD demandé
dans
la procédure N°1 n'est pas le bon maximum! Y-a-t-il un moyen d'être sûr
que
la procédure n°2 a bien été intégrée dans la base afin que la procédure
n°1
ressorte le bon maximum ?
Merci.
for NB_FOIS=1 to N
'/// Procédure n°1 MA_TABLE.Open "SELECT MAX(CD) AS MAXI_CD FROM TABLE", MA_BASE, adOpenKeyset, adLockOptimistic MAXI_CD=MA_TABLE("MAXI_CD") + 1 MA_TABLE.Close
'/// Procédure n°2 MA_TABLE.Open "SELECT * FROM TABLE WHERE CD=" & MAXI_CD, MA_BASE, adOpenKeyset, adLockOptimistic If (MA_TABLE.EOF And MA_TABLE.BOF) Then '*Ajout MA_TABLE.AddNew MA_TABLE.Fields("CD") = MAXI_CD MA_TABLE.Fields("LB") = "?" MA_TABLE.Update End If MA_TABLE.Close