C'est la première fois que j'ai posé une question bien que j'aie trouvé la solution à beaucoup de mes problèmes ici au cours des années. J'ai un problème frustrant auquel je ne trouve pas de réponse. Je veux effectuer la lecture initiale avant une lecture de manière séquentielle à travers une table liée ouverte en tant que jeu d'enregistrements DAO dynaset en utilisant un nom d'index spécifique tel que défini sur la table.MS Access 2007 ouvert DAO jeu d'enregistrements utilisant un index spécifié
Mon code renvoie l'erreur 3251 'l'opération n'est pas prise en charge ...' sur la ligne .index. Pas de doute, il y a une solution évidente (Attention, j'essaie d'éviter d'ouvrir une requête SQL qui serait la réponse évidente).
Public Function IOrdCustomerStock(CustomerID As Long, ProductID As Long, KeepRsOpen As Boolean, Optional UseIndexName As String) As Boolean
Set zcls_CS.CS_rs = CurrentDb.OpenRecordset(Name:=CS_TableName, Type:=RecordsetTypeEnum.dbOpenDynaset)
With zcls_CS.CS_rs
If Not IsMissing(UseIndexName) Then
.Index = UseIndexName
End If
.FindFirst "CS_CustomerID = " & CustomerID & " and CS_ProductID = " & ProductID
If .NoMatch Then
zcls_CS.CS_EOF = True
Else
zcls_CS.CS_EOF = False
zcls_CS.CS_ID = .Fields("[ID]")
zcls_CS.CS_CustomerID = .Fields("[CS_CustomerID]")
zcls_CS.CS_PhysSalesStock = .Fields("[CS_PhysSalesStock]")
zcls_CS.CS_ProductID = .Fields("[CS_ProductID]")
zcls_CS.CS_PurQuantityRecvd = .Fields("[CS_PurQuantityRecvd]")
zcls_CS.CS_PurUnitDesc = .Fields("[CS_PurUnitDesc]")
zcls_CS.CS_PurUnitFactor = .Fields("[CS_PurUnitFactor]")
zcls_CS.CS_SaleQuantityAlloc = .Fields("[CS_SaleQuantityAlloc]")
zcls_CS.CS_SaleQuantityOrdered = .Fields("[CS_SaleQuantityOrdered]")
zcls_CS.CS_SaleUnitDesc = .Fields("[CS_SaleUnitDesc]")
zcls_CS.CS_SaleUnitFactor = .Fields("[CS_SaleUnitFactor]")
End If
End With
If Not KeepRsOpen Then
Call IOclCustomerStock
End If
IOrdCustomerStock = Not zcls_CS.CS_EOF
End Function
post-scriptum Si je change le type de jeu d'enregistrements à Type: = RecordsetTypeEnum.dbOpenTable puis j'obtiens une opération non valide sur la ligne openrecordset et également si je change la définition recordert de dao.recordset en jeu d'enregistrements simple. – user7425513
P.P.S. J'obtiens les mêmes erreurs si j'utilise un jeu d'enregistrements défini localement (juste pour éliminer tous les probems utilisant un jeu d'enregistrements défini en tant qu'élément d'une classe). Je pense que le problème fondamental est que j'ai besoin d'ouvrir le jeu d'enregistrements en tant que type de table pour me permettre d'utiliser la propriété d'index du jeu d'enregistrements mais je fais évidemment quelque chose (je m'attends assez évident) faux. – user7425513
Toutes mes excuses pour le typo ... Je me bats avec un clavier français sur mon ordinateur de sauvegarde car ma machine principale est pooly ... – user7425513