OVH Cloud OVH Cloud

Comment ecrire : ADODB

2 réponses
Avatar
Crevette
Je me pose une question et je ne trouve pas la réponse dans les trois gros
volumes pour access.

Quelle est la différence entre ces deux écritures :

Dim cnn1 As New ADODB.Connection
et
Dim cnn1 As ADODB.Connection

Je suis en train d'optimiser mon code car la base n'est pas grosse encore
(5,4Mo) mais elle rame sur la me... de portable de ma boite et comme je
l'utilise que sur lui! :(

Merci beaucoup pour votre aide, bonne soirée.

Voila mon morceau de code :

Dim cnn1 As New ADODB.Connection
Dim cmd1 As New Command
Dim rs1 As New ADODB.Recordset
Dim prm1 As New ADODB.Parameter

Set cnn1 = CurrentProject.Connection
Set cmd1 = New ADODB.Command

Set rs1.ActiveConnection = cnn1

With cmd1
........

End With

Set prm1 = cmd1.CreateParameter("[Ref_sec :]", adInteger,
adParamInput)
cmd1.Parameters.Append prm1
prm1.Value = Ref

cmd1.Execute
rs1.Open cmd1
NomPrénom = rs1.Fields(1)

rs1.Close
cnn1.Close

2 réponses

Avatar
Crevette
Merci Charles

Avec Dim cmd1 As New ADODB.Command

j'ai pu enlever la ligne Set cmd1 = New ADODB.Command

Alors que faut il comme écriture?


"Charles ERNST" a écrit dans le message de
news:%
Voilà ce que dit l'aide
Les instructions Dim, Private, Public, ReDim et Static déclarent
exclusivement des variables faisant référence à un objet. Aucun objet réel
n'est désigné tant que vous n'avez pas associé un objet particulier à la
variable avec l'instruction Set.

L'exemple suivant montre comment déclarer un tableau de type Form1 avec
l'instruction Dim. Aucune instance de Form1 n'existe réellement.
L'instruction Set associe ensuite à la variable myChildForms des
références

à de nouvelles instances de Form1. Ce code peut être utilisé pour créer
des

feuilles filles dans une application MDI.

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1
En règle générale, lorsque vous utilisez l'instruction Set pour associer
une

référence d'objet à une variable, aucune copie de l'objet n'est créée pour
cette variable. En revanche, c'est une référence à l'objet qui est créée.
Plusieurs variables objets peuvent faire référence au même objet. Ces
variables constituant des références à l'objet et non des copies de ce
dernier, toute modification apportée à l'objet est répercutée sur toutes
les

variables associées. Toutefois, lorsque vous utilisez le mot clé New dans
l'instruction Set, vous créez en réalité une instance de l'objet.


"Crevette" a écrit dans le message de
news:
Je me pose une question et je ne trouve pas la réponse dans les trois
gros


volumes pour access.

Quelle est la différence entre ces deux écritures :

Dim cnn1 As New ADODB.Connection
et
Dim cnn1 As ADODB.Connection

Je suis en train d'optimiser mon code car la base n'est pas grosse
encore


(5,4Mo) mais elle rame sur la me... de portable de ma boite et comme je
l'utilise que sur lui! :(

Merci beaucoup pour votre aide, bonne soirée.

Voila mon morceau de code :

Dim cnn1 As New ADODB.Connection
Dim cmd1 As New Command
Dim rs1 As New ADODB.Recordset
Dim prm1 As New ADODB.Parameter

Set cnn1 = CurrentProject.Connection
Set cmd1 = New ADODB.Command

Set rs1.ActiveConnection = cnn1

With cmd1
........

End With

Set prm1 = cmd1.CreateParameter("[Ref_sec :]", adInteger,
adParamInput)
cmd1.Parameters.Append prm1
prm1.Value = Ref

cmd1.Execute
rs1.Open cmd1
NomPrénom = rs1.Fields(1)

rs1.Close
cnn1.Close








Avatar
Michel Walsh
Salut,

Il est recommandé de le faire en deux lignes:


Dim x As someClass
Set x = New someClass


plutôt qu'en une seule

Dim x As New someClass


Car, d'une part, la seconde syntaxe n'est pas supportée pour tout le monde, en effet:


Dim x As New DAO.Recordset


ne fonctionne pas.


De plus, avec le New, on ne peut spécifier With Events (si cela est requis, il va s'en dire).


Et finallement, il est plus lent pour VB/VBA de vérifier, à chaque ligne, s'il doit ou non créer
effectivement un nouvel objet, lorsque l'objet fut déclaré avec le New. Un objet déclaré avec un
DIM sans NEW n'entraînerait pas cette vérification supplémentaire pour chacune des mentions de
l'objet.


Espérant être utile,
Vanderghast, Access MVP




"Crevette" wrote in message
news:%
Merci Charles

Avec Dim cmd1 As New ADODB.Command

j'ai pu enlever la ligne Set cmd1 = New ADODB.Command

Alors que faut il comme écriture?


"Charles ERNST" a écrit dans le message de
news:%
Voilà ce que dit l'aide
Les instructions Dim, Private, Public, ReDim et Static déclarent
exclusivement des variables faisant référence à un objet. Aucun objet réel
n'est désigné tant que vous n'avez pas associé un objet particulier à la
variable avec l'instruction Set.

L'exemple suivant montre comment déclarer un tableau de type Form1 avec
l'instruction Dim. Aucune instance de Form1 n'existe réellement.
L'instruction Set associe ensuite à la variable myChildForms des
références

à de nouvelles instances de Form1. Ce code peut être utilisé pour créer
des

feuilles filles dans une application MDI.

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1
En règle générale, lorsque vous utilisez l'instruction Set pour associer
une

référence d'objet à une variable, aucune copie de l'objet n'est créée pour
cette variable. En revanche, c'est une référence à l'objet qui est créée.
Plusieurs variables objets peuvent faire référence au même objet. Ces
variables constituant des références à l'objet et non des copies de ce
dernier, toute modification apportée à l'objet est répercutée sur toutes
les

variables associées. Toutefois, lorsque vous utilisez le mot clé New dans
l'instruction Set, vous créez en réalité une instance de l'objet.


"Crevette" a écrit dans le message de
news:
Je me pose une question et je ne trouve pas la réponse dans les trois
gros


volumes pour access.

Quelle est la différence entre ces deux écritures :

Dim cnn1 As New ADODB.Connection
et
Dim cnn1 As ADODB.Connection

Je suis en train d'optimiser mon code car la base n'est pas grosse
encore


(5,4Mo) mais elle rame sur la me... de portable de ma boite et comme je
l'utilise que sur lui! :(

Merci beaucoup pour votre aide, bonne soirée.

Voila mon morceau de code :

Dim cnn1 As New ADODB.Connection
Dim cmd1 As New Command
Dim rs1 As New ADODB.Recordset
Dim prm1 As New ADODB.Parameter

Set cnn1 = CurrentProject.Connection
Set cmd1 = New ADODB.Command

Set rs1.ActiveConnection = cnn1

With cmd1
........

End With

Set prm1 = cmd1.CreateParameter("[Ref_sec :]", adInteger,
adParamInput)
cmd1.Parameters.Append prm1
prm1.Value = Ref

cmd1.Execute
rs1.Open cmd1
NomPrénom = rs1.Fields(1)

rs1.Close
cnn1.Close