OVH Cloud OVH Cloud

Probleme pour trouver le nom de mes champds de mes recordset

4 réponses
Avatar
francisco
Bonjour tout le monde


On m'a gentillement fourni une portion de code pour recuperer les titres
d'une base access afin de les inscrire dans une base excel seulement je
dois mal la recopie car il l se passe la chose siuivante je recupere bien
les données de acces vers execel mais à la place que ces données s'affichent
sur la même ligne elle s'affiche en colonne, je fais une erreur de recopie
mais ou ?

Merci tout le monde

Do
Sheets("Feuil1").Range("A" & i + 1).Value = rst.Fields(i).Name
i = i + 1
Loop Until i = rst.Fields.Count

4 réponses

Avatar
francisco
Merci Pierre pour tes services rendus Amicalement Francisco . En revanche
j'ai encore un probleme pour compter le nombre d'enregistrement dans un
recordset via un msgbox à la place de la valeur -1 il me met toujours 0
Est ce que je peux t'envoyer mon fichier car je n'y arrive vraiment pas
Pour tant j'ai écrit le code suivant
If rst.EOF Then
lngLignes = 0
Else
rst.MoveFirst
rst.MoveLast
rst.MoveFirst

lngLignes = rst.RecordCount
End If
MsgBox "Nombres d'enregistrements :" & lngLignes

Merci Pierre execuse moi de te deranger Amicalement Francisco

"Pierre CFI [mvp]" a écrit dans le message de
news:
salut amigo
dim i as integerrst.Fields.Count

for i = 0 to rst.Fields.Count -1

Sheets("Feuil1").Range("A1").Offset(0,i) =rst.Fields(i).Name
next



--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"francisco" a écrit dans le message de
news:c970ve$e1g$

Bonjour tout le monde


On m'a gentillement fourni une portion de code pour recuperer les titres
d'une base access afin de les inscrire dans une base excel seulement
je


dois mal la recopie car il l se passe la chose siuivante je recupere
bien


les données de acces vers execel mais à la place que ces données
s'affichent


sur la même ligne elle s'affiche en colonne, je fais une erreur de
recopie


mais ou ?

Merci tout le monde

Do
Sheets("Feuil1").Range("A" & i + 1).Value = rst.Fields(i).Name
i = i + 1
Loop Until i = rst.Fields.Count









Avatar
Pierre CFI [mvp]
salut amigo
dim i as integerrst.Fields.Count

for i = 0 to rst.Fields.Count -1

Sheets("Feuil1").Range("A1").Offset(0,i) =rst.Fields(i).Name
next



--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"francisco" a écrit dans le message de news:c970ve$e1g$
Bonjour tout le monde


On m'a gentillement fourni une portion de code pour recuperer les titres
d'une base access afin de les inscrire dans une base excel seulement je
dois mal la recopie car il l se passe la chose siuivante je recupere bien
les données de acces vers execel mais à la place que ces données s'affichent
sur la même ligne elle s'affiche en colonne, je fais une erreur de recopie
mais ou ?

Merci tout le monde

Do
Sheets("Feuil1").Range("A" & i + 1).Value = rst.Fields(i).Name
i = i + 1
Loop Until i = rst.Fields.Count





Avatar
Pierre CFI [mvp]
envoie , enleve les xxx_ et mets un kilo de pate d'amande

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"francisco" a écrit dans le message de news:c97eat$fl6$
Merci Pierre pour tes services rendus Amicalement Francisco . En revanche
j'ai encore un probleme pour compter le nombre d'enregistrement dans un
recordset via un msgbox à la place de la valeur -1 il me met toujours 0
Est ce que je peux t'envoyer mon fichier car je n'y arrive vraiment pas
Pour tant j'ai écrit le code suivant
If rst.EOF Then
lngLignes = 0
Else
rst.MoveFirst
rst.MoveLast
rst.MoveFirst

lngLignes = rst.RecordCount
End If
MsgBox "Nombres d'enregistrements :" & lngLignes

Merci Pierre execuse moi de te deranger Amicalement Francisco

"Pierre CFI [mvp]" a écrit dans le message de
news:
salut amigo
dim i as integerrst.Fields.Count

for i = 0 to rst.Fields.Count -1

Sheets("Feuil1").Range("A1").Offset(0,i) =rst.Fields(i).Name
next



--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"francisco" a écrit dans le message de
news:c970ve$e1g$

Bonjour tout le monde


On m'a gentillement fourni une portion de code pour recuperer les titres
d'une base access afin de les inscrire dans une base excel seulement
je


dois mal la recopie car il l se passe la chose siuivante je recupere
bien


les données de acces vers execel mais à la place que ces données
s'affichent


sur la même ligne elle s'affiche en colonne, je fais une erreur de
recopie


mais ou ?

Merci tout le monde

Do
Sheets("Feuil1").Range("A" & i + 1).Value = rst.Fields(i).Name
i = i + 1
Loop Until i = rst.Fields.Count













Avatar
michdenis
Bonjour Francisco,

Comme tu nous dis pas comment est obtenu ton recordset, voici un article sur le sujet :
(Je n'ai pu la provenance et le nom de l'auteur de l'article.)


Salutations!


There are four types of cursors to be concerned about. These are the cursors which ADO supports.

a.. ForwardOnly
b.. Static
c.. Keyset
d.. Dynamic
The list shown (above) is in ascending order of complexity, performance and cost (of system resources).

ForwardOnly - sometimes referred to as a firehose cursor (not by me but it is very appropriate). It is readonly but very
light on your systems resources and the fastest to use. As the name suggests you can only move forwards through it; once
you leave a record and move to another you cannot go back. Another feature of this recordset is that ADO doesn't know
how far the data goes. The only way it can get from the first to the last record is by moving records, one by one, until
no more are left. Consequently it can't possibly know how many there are until its too late. This is the cursor to use
if you want to load a list of records, which represent a list of resources (e.g. language resource strings in a
localization system), as quickly as possible.

Static - the most commonly used cursor type in my experience. This is the cursor which clientside recordsets use no
matter what you may have asked for. It works like a snapshot of the database as the data is copied out from the database
tables and worked on in isolation. Changes made by other users will happen without the recordset you have opened being
aware of it. The data can be read-only or read-write. When you request this type of cursor you will be loading the
entire set of records into memory. For this reason a server can feel somewhat under seige if you write a multiuser
application and all the users are opening large data sets (so think carefully). As there are very few large scale
database applications being written by developers this is not so important. Because all the records in the selected data
set are loaded into memory it is simple for ADO to return the count.

Keyset - similar to a static recordset only much more clever. When a selection of records is made as a recordset is
opened the cursor maintains a list of the primary key values in memory but not the other selected column values. Using
the list of primary keys (the key set) ADO retrieves enough rows from the table to fill it's record cache which is what
your code can look at. Each time you navigate throughout the recordset a new [cachesize] set of records is retrieved
from the database using the static set of primary key values initially retrieved when the recordset was first opened.
This means that your recordset is aware of changes to column values which other users make but it is not aware of new
additions (because the set of keys is not reloaded, its static). As you can imagine using this cursor type involves a
lot of return visits to the database as the user navigates throughout the recordset so performance is not as good as the
static cursor which makes a copy in memory so it does not have to return to the database. However as the set of primary
keys is loaded once and is in effect static ADO can easily return how many records are in the recordset (by counting how
many keys there are).

Dynamic - the big daddy of cursors. Be afraid, in fact I should turn a run if I were you. I cannot remember the last
time I the dynamic cursor type. It is definitely intended for multiuser, multi-access systems which are very involved to
code properly. It is similar to a keyset cursor as it allows modifications made by other users to show through to the
recordset but this comes at a price (a terrible price). When the recordset is opened ADO retrieves a list of primary
keys and then loads enough rows using the set of keys to satisfy the cache. However when the user (or code) navigates
through the recordset ADO reloads the set of primary keys again (and again, and again, and again...) before loading the
new rows. You can see that this is very epensive, even more so that the keyset cursor. Because the set of primary keys
is reloaded each time the user navigates record additions and deletions will be seen. However, it also means that the
number of records is indeterminate and likely to change so ADO cannot say what it will be from one moment to the next
(and you will get -1 if you ask).









"francisco" a écrit dans le message de news:c970ve$e1g$
Bonjour tout le monde


On m'a gentillement fourni une portion de code pour recuperer les titres
d'une base access afin de les inscrire dans une base excel seulement je
dois mal la recopie car il l se passe la chose siuivante je recupere bien
les données de acces vers execel mais à la place que ces données s'affichent
sur la même ligne elle s'affiche en colonne, je fais une erreur de recopie
mais ou ?

Merci tout le monde

Do
Sheets("Feuil1").Range("A" & i + 1).Value = rst.Fields(i).Name
i = i + 1
Loop Until i = rst.Fields.Count