En fait j'ai réussi à récupérer automatiquement l'ID mais pas au même moment, il semblerait que l'update de la table ne se fasse qu'après un BeforeUpdate dans SQL Server (alors que c'est instantané avec Access).
Je m'explique :
Après ce code :
Code :
- Private Sub Form_Current()
- '// Me!Project_ID est la clé primaire autoincrémentée dans access
- If IsNull(Me!Project_ID) Then
- '// on donne la valeur " " au champ Project_Prefix ce qui insere un enregistrement et donne la valeur incrémentée pour Project_ID
- Me!Project_Prefix = " "
- DoCmd.Save
- End If
- End Sub
|
Je passais dans la fonction :
Code :
- Private Sub Form_BeforeUpdate(Cancel As Integer)
- Call find_changes("Project Details edited", Me.Project_ID, 0, 0, Me)
- End Sub
|
Et là, la fonction find_changes plantait à cause de Me.Project_ID à null.
Or si (j'enlève la fonction find_changes) et je remplace par :
Code :
- Private Sub Form_BeforeUpdate(Cancel As Integer)
- End Sub
|
Là, mon ID est récupéré, la table a bien été mise à jour, et je peut lancer la fonction find_changes dans le Form_AfterUpdate.
Code :
- Private Sub Form_AfterUpdate()
- Call find_changes("Project Details edited", Me.Project_ID, 0, 0, Me) ' que j'ai donc déplacé dans mon code
- Forms!main!cmbProject.Requery
- End Sub
|
Je suppose que cela vient du fonction de SQL Server, ou ODBC, mais j'aurai souhaiter récupérer l'auto-incrément plus tôt, si vous avez une idée !!!
Merci encore