Bonjour à tous.
QUESTIONS:
- Peut-on ouvrir un recordset ADODB éditable fondé sur une procédure stockée SQL server ?
- Peut-on affecter ce recordset à la source d'un formulaire pour modifier les données résultantes ?
MES ESSAIS:
Mon environnement est un projet (.ADP) Access 2010 associé à une base de données SQL server 2008 R2.
Ca fait un petit moment que je cherche à utiliser un ADODB.Recordset résultat de l’exécution d’un objet ADODB.command en mode édition (mise à jour, ajout et suppression des données).
Je suis connecté en tant qu’administrateur et dispose des droits nécessaires.
J’ai créé un formulaire destiné à me permettre de vérifier mes résultats. Ce formulaire comporte 3 zones de texte correspondant aux colonnes renvoyées par la procédure.
Si je définis la source de mon formulaire sur ma procédure je peux éditer mes enregistrements (modification, ajout, suppression).
Si je constitue un Recordset que j’attribue ensuite en tant que source de mon formulaire je ne peux pas éditer les données (je ne peux pas non plus modifier directement une valeur de l'enregistrement courant d'ailleurs).
Je pense avoir essayé toutes les combinaisons de déclaration de mon Recordset ADO (CursorLocation, CursorType, LockType).
Lorsque j’inspecte les attributs des jeux d’enregistrements ouverts (mon Recordset et le Recordset du formulaire) je constate que la propriété LockType du formulaire est à 3 (adLockOptimistic) alors que celle de mon Recordset est passée automatiquement à 1 (adLockReadOnly) bien que j’ai précisé la valeur adLockOptimistic lors de sa création.
Voici le code de création du Recordset (RS) :
Et voilà les propriétés de la source du formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Dim Cnx As ADODB.Connection Dim Cmd As New ADODB.Command Dim Rs As New ADODB.Recordset Dim P As ADODB.Parameter Const NomProc As String = "ps_TEST_Liste" Set Cnx = CurrentProject.Connection utilise la connexion du projet ADP With Cmd Définition de lobjet ADODB.Command .ActiveConnection = Cnx .CommandType = adCmdStoredProc .CommandText = NomProc Set P = .Parameters("@Groupe") ' "TEST1") Il y a un paramètre P.Value = "TEST1" End With With Rs .CursorLocation = adUseClient .CursorType = adOpenKeyset .LockType = adLockOptimistic End With Set Rs = Cmd.Execute Set Cmd = Nothing
Désolé si j'ai été un peu long!
Partager