OVH Cloud OVH Cloud

URGENT SVP

1 réponse
Avatar
Daryl
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

1 réponse

Avatar
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