damedom41
Messages postés79Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention 2 août 2014
-
5 sept. 2012 à 09:26
damedom41
Messages postés79Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention 2 août 2014
-
5 sept. 2012 à 16:39
Bonjour,
Je voudrais pouvoir créer un recordset dont le nom serait "variable", par exemple la concaténation d'une partie fixe (adorsxxx) et d'une partie variable, qui serait, par exemple, le nom de l'utilisateur.
Voici un exemple de fonciton dans que j'utilise pour chercher si un enregistrement existe dans une table.
dbsql représente la clause select (exemple dbsql "select * from client where clicod 'toto')
[i]Public Function dbquery(dbsql)
Dim adorsxxx As New ADODB.Recordset
adorsxxx.Open dbsql, dbcnx, adOpenDynamic, adLockOptimistic
If adorsxxx.RecordCount = 0 Then
dbquery = 0
Else
dbquery = 1
End If
adorsxxx.Close
Set adorsxxx = Nothing
End Function/i
Je voudrais pouvoir remplacer adorsxxx (qui est fixe, par une variable qui serait la concaténation de "adorsx" et d'une variable (par exemple le nom de l'utilisateur) qui serait passée en paramètre dans la fonction, ou qui serait contenue dans une variable globale.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 sept. 2012 à 16:09
Même si plusieurs utilisateurs lancent la même Sub, les objets déclarés à l'intérieur restent des objets indépendants.
Je ne comprends pas grand chose à ta motivation de changer le nom du RecordSet, maintenant tu parles de fichier ... confus.
Fichier de quoi ?
Oui, il y a même une catégorie de question VBA (en tenir compte la prochaine fois : VB6/langages dérivés/VBA
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 5 sept. 2012 à 12:24
Salut
Je ne pense pas que ce soit possible puisque cet objet doit être défini/dimensionné à un moment donné.
Puisque adorsxxx est dimensionné à l'intérieur de la Sub, quel est l'intérêt de vouloir lui donner un nom particulier ?
Cet objet cessera d'exister (avec son contenu) à la sortie de la Sub.
Si tu nous expliquais la raison de ce besoin, il y aurait surement une réponse adéquat.
Si tu veux passer un objet RecordSet dans la Sub, il suffit :
- de le dimensionner à l'extérieur de la Sub, en Public dans un module, par exemple
- de passer l'objet (et pas son nom) dans les paramètres
Ce qui donnerait :
Public Function dbquery(dbsql As String, _
monRecordSet As ADODB.Recordset) As Byte
monRecordSet.Open dbsql, dbcnx, adOpenDynamic, adLockOptimistic
If monRecordSet.RecordCount = 0 Then
dbquery = 0
Else
dbquery = 1
End If
monRecordSet.Close
' Set adorsxxx = Nothing
End Function
damedom41
Messages postés79Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention 2 août 2014 5 sept. 2012 à 15:52
Dans un environnement multi-utilisateurs, j'utilisais les recordsets "temporaires" pour aller vérifier qu'un enregistrement existe déjà (ou non) puisque dans ACCESS2010 je ne peux pas faire de find avec une clé comportant deux éléments. C'était donc une utilisation extrêmement temporaire qui ne risquait pas de gêner un autre utilisateur.
J'ai aujourd'hui un problème plus gênant.
Dans le cadre du sous-formulaire d'un formulaire de saisie, j'utilise le fichier temporaire comme base d'un sous-formulaire (qui sera ensuite utilisé pour créer n enregistrements dans un fichier). C'est en fait comme une proposition de retour de marchandises d'une usine, en fonction de pièces qui lui ont été livrées pour traitement.
Ce fichier temporaire va donc exister tout le temps de la saisie de la feuille de "retour", et j'ai peur que ça bloque d'autres utilisateurs ou, pire, que cela s'emmêle avec un autre fichier temporaire avec le même nom créé pour la même raison. Et j'avais pensé à donner un nom "modulable" à ce fichier, afin de pouvoir l'ouvrir et le fermer LUI. Que va-t-il se passer lorsque je ferme le fichier 1 alors qu'un autre utilisateur travaille sur le fichier 2, alors qu'ils sont le même nom et passent dans la même sub ?
En fait je veux travailler sur une image de mon fichier de base, qui sert de proposition de saisie. Il n'est pas modifié. As-tu une autre idée ?
Merci en tout cas, et je ne savais pas que le VBA était "colorisable" dans les questions posées. Je le ferai la prochaine fois.
damedom41
Messages postés79Date d'inscriptionmercredi 14 avril 2010StatutMembreDernière intervention 2 août 2014 5 sept. 2012 à 16:39
Désolée, je suis une vieille de l'époque de Cobol, où on parlait de fichiers. De temps en temps, ça me reprend.
Il s'agit bien de recordsets, et ta réponse me rassure tout à fait.