OVH Cloud OVH Cloud

OCX

4 réponses
Avatar
Marc ERHARD
Bonjour,

Je suis en train de créer un active X avec VB6.
Une grille qui affaiche le contenu d'un recordset.


Le recordset est créer sur la feuille ou se trouve le composant.

Comment peut on envoyer le contenu du recordset et le faire passer au
composant.

Quelle est la technique ?
Par avance merci de vos suggestions.

4 réponses

Avatar
Christian Hugoud
Tu peux créer une propriété comme CurrentRecordset dans l'OCX. Comme cela tu
récupère dans le code de l'OCX un objet recordset.

Par contre, il faut appeler cette propriété depuis le conteneur.

Christian

"Marc ERHARD" a écrit dans le message de news:
%
Bonjour,

Je suis en train de créer un active X avec VB6.
Une grille qui affaiche le contenu d'un recordset.


Le recordset est créer sur la feuille ou se trouve le composant.

Comment peut on envoyer le contenu du recordset et le faire passer au
composant.

Quelle est la technique ?
Par avance merci de vos suggestions.




Avatar
Marc ERHARD
Je ne trouves pas de type corespondant a ce que tu me dis.
pour la déclaration de la propriété aucun problème sauf pour le type.
En fait j'ouvre ma base et mon recordset dans le conteneur, en fait en C je
ferai un pointeur sur l'adresse mais je ne voit pas, peut etre avec le type
objet.
Peux tu me preciser en détail.

par avance merci.

"Christian Hugoud" a écrit dans le message de
news:
Tu peux créer une propriété comme CurrentRecordset dans l'OCX. Comme cela


tu
récupère dans le code de l'OCX un objet recordset.

Par contre, il faut appeler cette propriété depuis le conteneur.

Christian

"Marc ERHARD" a écrit dans le message de news:
%
> Bonjour,
>
> Je suis en train de créer un active X avec VB6.
> Une grille qui affaiche le contenu d'un recordset.
>
>
> Le recordset est créer sur la feuille ou se trouve le composant.
>
> Comment peut on envoyer le contenu du recordset et le faire passer au
> composant.
>
> Quelle est la technique ?
> Par avance merci de vos suggestions.
>
>




Avatar
Jacques93
Bonsoir Marc ERHARD,
Marc ERHARD a écrit :
Je ne trouves pas de type corespondant a ce que tu me dis.
pour la déclaration de la propriété aucun problème sauf pour le type.
En fait j'ouvre ma base et mon recordset dans le conteneur, en fait en C je
ferai un pointeur sur l'adresse mais je ne voit pas, peut etre avec le type
objet.
Peux tu me preciser en détail.

par avance merci.

"Christian Hugoud" a écrit dans le message de
news:

Tu peux créer une propriété comme CurrentRecordset dans l'OCX. Comme cela



tu

récupère dans le code de l'OCX un objet recordset.

Par contre, il faut appeler cette propriété depuis le conteneur.

Christian






Dans la ligne de ce que t'as indiqué Christian Hugoud, en utilisant
ADODB par exemple, dans ton conteneur :

Dim Cn As ADODB.Connection
Dim rs As ADODB.Recordset

...

Création ou ouverture du RecordSet dans le container, si j'ai bien
compris, ensuite pour passer l'instance du RecordSet à ton OCX, si ton
OCX s'appelle MyRs, et son instance dans le container MyRs1 :

Set Me.MyRs1.CurrentRecordSet = rs
MsgBox Me.MyRs1.rsCount
'ou
MsgBox Me.MyRs1.CurrentRecordSet.RecordCount

et dans le code du .ctl (.ocx) :

Option Explicit

Private mCurrentRecordSet As ADODB.Recordset

Public Property Set CurrentRecordSet(rs As ADODB.Recordset)
Set mCurrentRecordSet = rs
End Property

Public Property Get CurrentRecordSet() As ADODB.Recordset
Set CurrentRecordSet = mCurrentRecordSet
End Property

Public Property Get rsCount() As Long
rsCount = CurrentRecordSet.RecordCount
End Property


--
Cordialement,

Jacques.
Avatar
Marc ERHARD
Ok j'ai compris je viens de faire le test.
Ca marche c'est impeccable.
J'avais aussi oublié de mettre les référence ado dans l' ocx alors que je
les avait mises dans le projet de test.
Encore merci à vous deux.
restant à votre disposition si je peu vous aider sur VB
Cordialement
Marc ERHARD


"Jacques93" a écrit dans le message de
news:%23fi6%
Bonsoir Marc ERHARD,
Marc ERHARD a écrit :
> Je ne trouves pas de type corespondant a ce que tu me dis.
> pour la déclaration de la propriété aucun problème sauf pour le type.
> En fait j'ouvre ma base et mon recordset dans le conteneur, en fait en C


je
> ferai un pointeur sur l'adresse mais je ne voit pas, peut etre avec le


type
> objet.
> Peux tu me preciser en détail.
>
> par avance merci.
>
> "Christian Hugoud" a écrit dans le message de
> news:
>
>>Tu peux créer une propriété comme CurrentRecordset dans l'OCX. Comme


cela
>
> tu
>
>>récupère dans le code de l'OCX un objet recordset.
>>
>>Par contre, il faut appeler cette propriété depuis le conteneur.
>>
>>Christian
>>

Dans la ligne de ce que t'as indiqué Christian Hugoud, en utilisant
ADODB par exemple, dans ton conteneur :

Dim Cn As ADODB.Connection
Dim rs As ADODB.Recordset

...

Création ou ouverture du RecordSet dans le container, si j'ai bien
compris, ensuite pour passer l'instance du RecordSet à ton OCX, si ton
OCX s'appelle MyRs, et son instance dans le container MyRs1 :

Set Me.MyRs1.CurrentRecordSet = rs
MsgBox Me.MyRs1.rsCount
'ou
MsgBox Me.MyRs1.CurrentRecordSet.RecordCount

et dans le code du .ctl (.ocx) :

Option Explicit

Private mCurrentRecordSet As ADODB.Recordset

Public Property Set CurrentRecordSet(rs As ADODB.Recordset)
Set mCurrentRecordSet = rs
End Property

Public Property Get CurrentRecordSet() As ADODB.Recordset
Set CurrentRecordSet = mCurrentRecordSet
End Property

Public Property Get rsCount() As Long
rsCount = CurrentRecordSet.RecordCount
End Property


--
Cordialement,

Jacques.