OVH Cloud OVH Cloud

Pour specialiste VB - Write Conflict

2 réponses
Avatar
Sebastien
Hello

sur un meme Form qui recupere les datas d'une table via la macro CODE 1 (ci
joint), j'ai un prb de Write Conflict en sortant du formulaire apres avoir
Updater les datas via la macro CODE 2 (ci joint).
Je ne suis pas un spec en Code, j'ai simplement copie le code d'une autre DB
et je l'ai adapte en fonction de mes besoins. Je crois qu'il y a un probleme
au niveau du RecordSet mais je ne trouve pas.

Merci beaucoup, beaucoup pr votre aide, ca fait 3 jours que je suis dessus,
je pete u plomb !!

CODE 1 - Qui me permet de recuperer les datas de la tables

Private Sub cboREFERENCE_AfterUpdate()
Dim lrsdata As Recordset
Dim lsSql As String

'''''''''''''''''''''
On Error GoTo hError
'''''''''''''''''''''

Set gdbBase = CurrentDb()

lsSql = ""
lsSql = lsSql & "SELECT *"
lsSql = lsSql & "FROM ElectiveCorporateActions "
lsSql = lsSql & "WHERE REFERENCE = " & "'" & [cboREFERENCE] & "'"
Set lrsdata = gdbBase.OpenRecordset(lsSql)

If lrsdata.RecordCount = 0 Then
MsgBox "CA Reference " & cboREFERENCE & " doesn't exists.",
vbExclamation, "ELECTIVE CORPORATE ACTIONS"
Exit Sub
End If

'Find the record That matches the control

Me.RecordsetClone.FindFirst "[REFERENCE] = " & "'" & Me![cboREFERENCE] & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark

' Show ElectiveCorporate Actions data

txtABS = Me![ABS]
txtCTRLDATE = Me![CONTROLDATE]
cboCORPTYPE = Me![CORPTYPE]
txtDEADPARIS = Me![DEADPARIS]
txtDEADPARISINTER = Me![DEADPARISINTER]
txtDEADMADRID = Me![DEADMADRID]
txtDEADMADRIDINTER = Me![DEADMADRIDINTER]
cboDEPOSITARY = Me![DEPOSITARY]
txtDEPOSITARYDESCRIPTION = Me![DEPOSITARYDESCRIPTION]
txtEXDATE = Me![EXDATE]
txtGALNARRATIVE = Me![GALNARRATIVE]
txtISIN = Me![ISIN]
txtISINNAME = Me![ISINNAME]
txtMKTDEADLINE = Me![MKTDEADLINE]
txtOPECOLL = Me![OPECOLL]
cboPREADVISED = Me![PREADVISED]
txtRECORDDATE = Me![RECORDDATE]
txtREFPREADVICE = Me![REFPREADVICE]
cboSTATUS = Me![STATUS]
txtNARRATIVE = Me![STNARRATIVE]
txtINPUTDATE = Me![INPUTDATE]
'txtLASTUPDATE = Me![LASTUPDATE]

hnormal:
Exit Sub

hError:
MsgBox Err.Number & "-" & Err.Description, vbCritical, "ELECTIVE CORPORATE
ACTION"

End Sub

CODE 2 - Qui me permet de sauvegarder les changements de datas du from ds la
table

Private Sub CMD_Elective_Update_Click()
Dim lrsdata As Recordset
Dim lsSql As String
Dim lsText As String
Dim liReturn As Integer

''''''''''''''''''''
On Error GoTo hError
''''''''''''''''''''

Set gdbBase = CurrentDb()

' validating data...

If Not MFbValidationClient Then
Exit Sub

End If

'lookup if Corporate Action reference already exists

lsSql = ""
lsSql = lsSql & "SELECT * "
lsSql = lsSql & "FROM ElectiveCorporateActions "
lsSql = lsSql & "WHERE REFERENCE = " & "'" & [cboREFERENCE] & "'"
Set lrsdata = gdbBase.OpenRecordset(lsSql)


If lrsdata.RecordCount = 0 Then
MsgBox "CA Reference " & cboREFERENCE & " doesn't exists.",
vbExclamation, "ELECTIVE CA"
cboREFERENCE.SetFocus
Exit Sub
End If

'Confirmation action

lsText = lsText & "Corporate Action Reference..: " & cboREFERENCE & vbCrLf &
vbCrLf
lsText = lsText & "Isin code..............: " & txtISIN & vbCrLf & vbCrLf
lsText = lsText & "Do you want to UPDATE datas of this Corporate Action ?"
liReturn = MsgBox(lsText, vbYesNo + vbQuestion + vbDefaultButton1, "ELECTIVE
CA")
If liReturn = vbNo Then
MsgBox "Operation cancelled.", vbInformation, "ELECTIVE CA"
'cmdClear_Click
Exit Sub

'Saving Datas

Else
With lrsdata
.Edit
!REFERENCE = cboREFERENCE
!CORPTYPE = cboCORPTYPE
!STATUS = cboSTATUS
!STNARRATIVE = txtNARRATIVE
!PREADVISED = cboPREADVISED
!REFPREADVICE = txtREFPREADVICE
!OPECOLL = txtOPECOLL
!ISIN = txtISIN
!ISINNAME = txtISINNAME
!ABS = txtABS
!DEPOSITARY = cboDEPOSITARY
!DEPOSITARYDESCRIPTION = txtDEPOSITARYDESCRIPTION
!CONTROLDATE = txtCTRLDATE
!DEADPARISINTER = txtDEADPARISINTER
!DEADMADRIDINTER = txtDEADMADRIDINTER
!DEADPARIS = txtDEADPARIS
!DEADMADRID = txtDEADMADRID
!EXDATE = txtEXDATE
!RECORDDATE = txtRECORDDATE
!MKTDEADLINE = txtMKTDEADLINE
!GALNARRATIVE = txtGALNARRATIVE
!LASTUPDATE = txtLASTUPDATE
.Update

End With
cboREFERENCE.SetFocus

End If

MsgBox "Elective Corporate Action " & cboREFERENCE & " saved
successfully.", vbInformation, "ELECTIVE CA"

cmdClear_Click

lrsdata.Close

Exit Sub

hError:
MsgBox Err.Number & "-" & Err.Description, vbCritical, "ELECTIVE CA"

End Sub

MERCI BEAUCOUP

2 réponses

Avatar
J-Pierre
Salut Sébastien,

Tu sais, ça ne sert à rien de reposter si tu n'as pas de réponse.

Deux remarques:

1-Tu alignes beaucoup de code.....et l'activité préférée des gens qui répondent sur ce forum n'est sans doute pas de débugger
le code des autres, bon, disons que je parle pour moi. Et tu ne dis pas sur quelle instruction tu as le problème. Bon,
normalement, c'est .update qui merdoie, pardon, qui provoque l'erreur.
Tu devrais essayer de raccourcir tout ça au maximum, au moins pour tester.

2-Si je comprends bien (mais j'ai survolé tout ça), tu recherches un enregistrement spécifique, tu l'affiches, puis tu le mets
à jour. D'où sans doute ton problème car il est mis à jour à la fois par Access en automatique et par ta procédure. Mais si
c'est bien ce que tu cherches à faire, pourquoi utiliser du code VBA ? Tu peux, par exemple, filtrer les lignes de ton
recordSet pour ne montrer dans ton formulaire que la(les) ligne(s) qui t'intéresse(nt). Et Access mettra à jour tout seul
comme un grand.

J-Pierre

"Sebastien" a écrit dans le message de news:

Hello

sur un meme Form qui recupere les datas d'une table via la macro CODE 1 (ci
joint), j'ai un prb de Write Conflict en sortant du formulaire apres avoir
Updater les datas via la macro CODE 2 (ci joint).
Je ne suis pas un spec en Code, j'ai simplement copie le code d'une autre DB
et je l'ai adapte en fonction de mes besoins. Je crois qu'il y a un probleme
au niveau du RecordSet mais je ne trouve pas.

Merci beaucoup, beaucoup pr votre aide, ca fait 3 jours que je suis dessus,
je pete u plomb !!

CODE 1 - Qui me permet de recuperer les datas de la tables

Private Sub cboREFERENCE_AfterUpdate()
Dim lrsdata As Recordset
Dim lsSql As String

'''''''''''''''''''''
On Error GoTo hError
'''''''''''''''''''''

Set gdbBase = CurrentDb()

lsSql = ""
lsSql = lsSql & "SELECT *"
lsSql = lsSql & "FROM ElectiveCorporateActions "
lsSql = lsSql & "WHERE REFERENCE = " & "'" & [cboREFERENCE] & "'"
Set lrsdata = gdbBase.OpenRecordset(lsSql)

If lrsdata.RecordCount = 0 Then
MsgBox "CA Reference " & cboREFERENCE & " doesn't exists.",
vbExclamation, "ELECTIVE CORPORATE ACTIONS"
Exit Sub
End If

'Find the record That matches the control

Me.RecordsetClone.FindFirst "[REFERENCE] = " & "'" & Me![cboREFERENCE] & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark

' Show ElectiveCorporate Actions data

txtABS = Me![ABS]
txtCTRLDATE = Me![CONTROLDATE]
cboCORPTYPE = Me![CORPTYPE]
txtDEADPARIS = Me![DEADPARIS]
txtDEADPARISINTER = Me![DEADPARISINTER]
txtDEADMADRID = Me![DEADMADRID]
txtDEADMADRIDINTER = Me![DEADMADRIDINTER]
cboDEPOSITARY = Me![DEPOSITARY]
txtDEPOSITARYDESCRIPTION = Me![DEPOSITARYDESCRIPTION]
txtEXDATE = Me![EXDATE]
txtGALNARRATIVE = Me![GALNARRATIVE]
txtISIN = Me![ISIN]
txtISINNAME = Me![ISINNAME]
txtMKTDEADLINE = Me![MKTDEADLINE]
txtOPECOLL = Me![OPECOLL]
cboPREADVISED = Me![PREADVISED]
txtRECORDDATE = Me![RECORDDATE]
txtREFPREADVICE = Me![REFPREADVICE]
cboSTATUS = Me![STATUS]
txtNARRATIVE = Me![STNARRATIVE]
txtINPUTDATE = Me![INPUTDATE]
'txtLASTUPDATE = Me![LASTUPDATE]

hnormal:
Exit Sub

hError:
MsgBox Err.Number & "-" & Err.Description, vbCritical, "ELECTIVE CORPORATE
ACTION"

End Sub

CODE 2 - Qui me permet de sauvegarder les changements de datas du from ds la
table

Private Sub CMD_Elective_Update_Click()
Dim lrsdata As Recordset
Dim lsSql As String
Dim lsText As String
Dim liReturn As Integer

''''''''''''''''''''
On Error GoTo hError
''''''''''''''''''''

Set gdbBase = CurrentDb()

' validating data...

If Not MFbValidationClient Then
Exit Sub

End If

'lookup if Corporate Action reference already exists

lsSql = ""
lsSql = lsSql & "SELECT * "
lsSql = lsSql & "FROM ElectiveCorporateActions "
lsSql = lsSql & "WHERE REFERENCE = " & "'" & [cboREFERENCE] & "'"
Set lrsdata = gdbBase.OpenRecordset(lsSql)


If lrsdata.RecordCount = 0 Then
MsgBox "CA Reference " & cboREFERENCE & " doesn't exists.",
vbExclamation, "ELECTIVE CA"
cboREFERENCE.SetFocus
Exit Sub
End If

'Confirmation action

lsText = lsText & "Corporate Action Reference..: " & cboREFERENCE & vbCrLf &
vbCrLf
lsText = lsText & "Isin code..............: " & txtISIN & vbCrLf & vbCrLf
lsText = lsText & "Do you want to UPDATE datas of this Corporate Action ?"
liReturn = MsgBox(lsText, vbYesNo + vbQuestion + vbDefaultButton1, "ELECTIVE
CA")
If liReturn = vbNo Then
MsgBox "Operation cancelled.", vbInformation, "ELECTIVE CA"
'cmdClear_Click
Exit Sub

'Saving Datas

Else
With lrsdata
.Edit
!REFERENCE = cboREFERENCE
!CORPTYPE = cboCORPTYPE
!STATUS = cboSTATUS
!STNARRATIVE = txtNARRATIVE
!PREADVISED = cboPREADVISED
!REFPREADVICE = txtREFPREADVICE
!OPECOLL = txtOPECOLL
!ISIN = txtISIN
!ISINNAME = txtISINNAME
!ABS = txtABS
!DEPOSITARY = cboDEPOSITARY
!DEPOSITARYDESCRIPTION = txtDEPOSITARYDESCRIPTION
!CONTROLDATE = txtCTRLDATE
!DEADPARISINTER = txtDEADPARISINTER
!DEADMADRIDINTER = txtDEADMADRIDINTER
!DEADPARIS = txtDEADPARIS
!DEADMADRID = txtDEADMADRID
!EXDATE = txtEXDATE
!RECORDDATE = txtRECORDDATE
!MKTDEADLINE = txtMKTDEADLINE
!GALNARRATIVE = txtGALNARRATIVE
!LASTUPDATE = txtLASTUPDATE
.Update

End With
cboREFERENCE.SetFocus

End If

MsgBox "Elective Corporate Action " & cboREFERENCE & " saved
successfully.", vbInformation, "ELECTIVE CA"

cmdClear_Click

lrsdata.Close

Exit Sub

hError:
MsgBox Err.Number & "-" & Err.Description, vbCritical, "ELECTIVE CA"

End Sub

MERCI BEAUCOUP



Avatar
Sebastien
Excuse moi de t'avoir dérangé Jpierre. Je me debrouillerais autrement.
Merci
A+

"J-Pierre" wrote:

Salut Sébastien,

Tu sais, ça ne sert à rien de reposter si tu n'as pas de réponse.

Deux remarques:

1-Tu alignes beaucoup de code.....et l'activité préférée des gens qui répondent sur ce forum n'est sans doute pas de débugger
le code des autres, bon, disons que je parle pour moi. Et tu ne dis pas sur quelle instruction tu as le problème. Bon,
normalement, c'est .update qui merdoie, pardon, qui provoque l'erreur.
Tu devrais essayer de raccourcir tout ça au maximum, au moins pour tester.

2-Si je comprends bien (mais j'ai survolé tout ça), tu recherches un enregistrement spécifique, tu l'affiches, puis tu le mets
à jour. D'où sans doute ton problème car il est mis à jour à la fois par Access en automatique et par ta procédure. Mais si
c'est bien ce que tu cherches à faire, pourquoi utiliser du code VBA ? Tu peux, par exemple, filtrer les lignes de ton
recordSet pour ne montrer dans ton formulaire que la(les) ligne(s) qui t'intéresse(nt). Et Access mettra à jour tout seul
comme un grand.

J-Pierre

"Sebastien" a écrit dans le message de news:

Hello

sur un meme Form qui recupere les datas d'une table via la macro CODE 1 (ci
joint), j'ai un prb de Write Conflict en sortant du formulaire apres avoir
Updater les datas via la macro CODE 2 (ci joint).
Je ne suis pas un spec en Code, j'ai simplement copie le code d'une autre DB
et je l'ai adapte en fonction de mes besoins. Je crois qu'il y a un probleme
au niveau du RecordSet mais je ne trouve pas.

Merci beaucoup, beaucoup pr votre aide, ca fait 3 jours que je suis dessus,
je pete u plomb !!

CODE 1 - Qui me permet de recuperer les datas de la tables

Private Sub cboREFERENCE_AfterUpdate()
Dim lrsdata As Recordset
Dim lsSql As String

'''''''''''''''''''''
On Error GoTo hError
'''''''''''''''''''''

Set gdbBase = CurrentDb()

lsSql = ""
lsSql = lsSql & "SELECT *"
lsSql = lsSql & "FROM ElectiveCorporateActions "
lsSql = lsSql & "WHERE REFERENCE = " & "'" & [cboREFERENCE] & "'"
Set lrsdata = gdbBase.OpenRecordset(lsSql)

If lrsdata.RecordCount = 0 Then
MsgBox "CA Reference " & cboREFERENCE & " doesn't exists.",
vbExclamation, "ELECTIVE CORPORATE ACTIONS"
Exit Sub
End If

'Find the record That matches the control

Me.RecordsetClone.FindFirst "[REFERENCE] = " & "'" & Me![cboREFERENCE] & "'"
Me.Bookmark = Me.RecordsetClone.Bookmark

' Show ElectiveCorporate Actions data

txtABS = Me![ABS]
txtCTRLDATE = Me![CONTROLDATE]
cboCORPTYPE = Me![CORPTYPE]
txtDEADPARIS = Me![DEADPARIS]
txtDEADPARISINTER = Me![DEADPARISINTER]
txtDEADMADRID = Me![DEADMADRID]
txtDEADMADRIDINTER = Me![DEADMADRIDINTER]
cboDEPOSITARY = Me![DEPOSITARY]
txtDEPOSITARYDESCRIPTION = Me![DEPOSITARYDESCRIPTION]
txtEXDATE = Me![EXDATE]
txtGALNARRATIVE = Me![GALNARRATIVE]
txtISIN = Me![ISIN]
txtISINNAME = Me![ISINNAME]
txtMKTDEADLINE = Me![MKTDEADLINE]
txtOPECOLL = Me![OPECOLL]
cboPREADVISED = Me![PREADVISED]
txtRECORDDATE = Me![RECORDDATE]
txtREFPREADVICE = Me![REFPREADVICE]
cboSTATUS = Me![STATUS]
txtNARRATIVE = Me![STNARRATIVE]
txtINPUTDATE = Me![INPUTDATE]
'txtLASTUPDATE = Me![LASTUPDATE]

hnormal:
Exit Sub

hError:
MsgBox Err.Number & "-" & Err.Description, vbCritical, "ELECTIVE CORPORATE
ACTION"

End Sub

CODE 2 - Qui me permet de sauvegarder les changements de datas du from ds la
table

Private Sub CMD_Elective_Update_Click()
Dim lrsdata As Recordset
Dim lsSql As String
Dim lsText As String
Dim liReturn As Integer

''''''''''''''''''''
On Error GoTo hError
''''''''''''''''''''

Set gdbBase = CurrentDb()

' validating data...

If Not MFbValidationClient Then
Exit Sub

End If

'lookup if Corporate Action reference already exists

lsSql = ""
lsSql = lsSql & "SELECT * "
lsSql = lsSql & "FROM ElectiveCorporateActions "
lsSql = lsSql & "WHERE REFERENCE = " & "'" & [cboREFERENCE] & "'"
Set lrsdata = gdbBase.OpenRecordset(lsSql)


If lrsdata.RecordCount = 0 Then
MsgBox "CA Reference " & cboREFERENCE & " doesn't exists.",
vbExclamation, "ELECTIVE CA"
cboREFERENCE.SetFocus
Exit Sub
End If

'Confirmation action

lsText = lsText & "Corporate Action Reference..: " & cboREFERENCE & vbCrLf &
vbCrLf
lsText = lsText & "Isin code..............: " & txtISIN & vbCrLf & vbCrLf
lsText = lsText & "Do you want to UPDATE datas of this Corporate Action ?"
liReturn = MsgBox(lsText, vbYesNo + vbQuestion + vbDefaultButton1, "ELECTIVE
CA")
If liReturn = vbNo Then
MsgBox "Operation cancelled.", vbInformation, "ELECTIVE CA"
'cmdClear_Click
Exit Sub

'Saving Datas

Else
With lrsdata
.Edit
!REFERENCE = cboREFERENCE
!CORPTYPE = cboCORPTYPE
!STATUS = cboSTATUS
!STNARRATIVE = txtNARRATIVE
!PREADVISED = cboPREADVISED
!REFPREADVICE = txtREFPREADVICE
!OPECOLL = txtOPECOLL
!ISIN = txtISIN
!ISINNAME = txtISINNAME
!ABS = txtABS
!DEPOSITARY = cboDEPOSITARY
!DEPOSITARYDESCRIPTION = txtDEPOSITARYDESCRIPTION
!CONTROLDATE = txtCTRLDATE
!DEADPARISINTER = txtDEADPARISINTER
!DEADMADRIDINTER = txtDEADMADRIDINTER
!DEADPARIS = txtDEADPARIS
!DEADMADRID = txtDEADMADRID
!EXDATE = txtEXDATE
!RECORDDATE = txtRECORDDATE
!MKTDEADLINE = txtMKTDEADLINE
!GALNARRATIVE = txtGALNARRATIVE
!LASTUPDATE = txtLASTUPDATE
.Update

End With
cboREFERENCE.SetFocus

End If

MsgBox "Elective Corporate Action " & cboREFERENCE & " saved
successfully.", vbInformation, "ELECTIVE CA"

cmdClear_Click

lrsdata.Close

Exit Sub

hError:
MsgBox Err.Number & "-" & Err.Description, vbCritical, "ELECTIVE CA"

End Sub

MERCI BEAUCOUP