Pb de suppression d'enregistrement

cs_bouboussjunior Messages postés 23 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 4 décembre 2002 - 3 déc. 2002 à 14:49
cs_Cerber Messages postés 31 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 5 décembre 2002 - 5 déc. 2002 à 02:15
Le probleme est que je ne peut pas supprimer d'enregistrement. Je m'explique.
J'utilise la méthode delete (Recordset.delete)
cependant un message d'erreur apparait:
- operation non autorisé pour ce type d'objet
Pourquoi ce message apparait, et pourquoi lma suppression ne se fait pas ?
et comment puis-je y remedié ?????

merci a toutes et tous
rémi

3 réponses

cs_Cerber Messages postés 31 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 5 décembre 2002
3 déc. 2002 à 15:38
Salut,

Cela dépend du recordType que tu as donné au recordset à sa création. Suivant la méthode que tu utilise pour te connecter à la base de donnée, il te faut changer une constante.

Moi je me connecte avec ADO:
ex : rs.recordType = adOpenKeyset
te permet seulement de consulter c a d pas de
modification

rs.recordType = adOpenDynamic
la tu peux tout faire, y compris effacer

et il faut mettre a jour après avoir effacer via la methode update ou updatebatch.

Je te montre mon code pour me connecter à une bd:

connectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\maBd.mdb;"

Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cnn = New ADODB.Connection
Set rs = New ADODB.Recordset

cnn.Open connectionString

If cnn.State <> adStateOpen Then
MsgBox "Echec lors de la connection a la base de données. Contactez le responsable"
End If

rs.CursorType = adOpenDynamic
rs.Open "SELECT * FROM Facture", cnn, , , adCmdText
0
cs_bouboussjunior Messages postés 23 Date d'inscription lundi 24 décembre 2001 Statut Membre Dernière intervention 4 décembre 2002
4 déc. 2002 à 09:15
Ouai ok !
Moi je passe part un objet data de la façon suivante:

Private Sub Form_Load()

'Affecte le chemin et le nom de la base a la propriété
DataEnregistrement.DatabaseName = Chemin & "" & NomBase

DataEnregistrement.RecordSource = TableE

End Sub

Et pour la propriété RecordsetType j'ai le choix :
- 0 Table
- 1 Dynaset
- 2 Snapshot

Le pb est que avec 0 je ne peut plus naviguer sur mes record, avec 1 pareil mais je peut supprimer
et avec 2 je ne peut pas supprimer mais je peut naviguer entre mes différents enregistrements de ma table !!!!!!!!!!!!
0
cs_Cerber Messages postés 31 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 5 décembre 2002
5 déc. 2002 à 02:15
Trouvé dans la msdn :

To maintain data integrity, the Microsoft Jet database engine can lock dynaset- and table-type CdbRecordset objects during Edit (pessimistic locking) or Update operations (optimistic locking) so that only one user can update a particular record at a time. When the Microsoft Jet database engine locks a record, it locks the entire 2K page containing the record.

You can also use optimistic and pessimistic locking with non-ODBC tables. When you access external tables using ODBC through a Microsoft Jet workspace, always use optimistic locking. The LockEdits property and the lockedits parameter of the OpenRecordset method determine the locking conditions during editing.

A dynaset-type CdbRecordset object may not be updatable if:

There isn't a unique index on the ODBC or Paradox table or tables.

The data page is locked by another user.

The record has changed since you last read it.

The user doesn't have permission.

One or more of the tables or fields are read-only.

The database is opened as read-only.

The CdbRecordset object was either created from multiple tables without a JOIN statement or the query was too complex.
(lock no update no delete)

As tu acces en read only a ta base pt ?
0
Rejoignez-nous