Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment faire un select sur ADODB.Recordset

6 réponses
Avatar
Marc Sylvain
Voici un bout de mon code

'__________________________________________
Dim rsfso As New ADODB.Recordset

Set rsfso = CreateObject("ADODB.Recordset")

With rsfso.Fields

.Append "NomFichier", adVarChar, 20

End With

rsfso.Open




If hSearch <> INVALID_HANDLE_VALUE Then

While Cont

FileName = StripNulls(WFD.cFileName) 'WFD.cAlternate

rsfso.AddNew

rsfso("NomFichier") = FileName

rsfso.Update

Cont = FindNextFile(hSearch, WFD)

Wend

Cont = FindClose(hSearch)

End If



'__________________________________________



ICI

Je veux faire un ("Select * From ??? where NomFichier like '116825*.DWG'")

par quoi je remplace le ??? car je n'ai pas de nom de table et comment
faire un select

sur un ADODB.Recordset sans creer physiquement une database ???



Merci

Marc

6 réponses

Avatar
François Picalausa
On 3 mai, 19:29, "Marc Sylvain" wrote:
Voici un bout de mon code

<snip la création de recordset déconnecté>

Je veux faire un ("Select * From ??? where NomFichier like '116825*.DWG'")

par quoi je remplace le ??? car je n'ai pas de nom de table et comment
faire un select

sur un ADODB.Recordset sans creer physiquement une database ???



Hello,

Bien que je ne sois pas spécialiste du domaine, donc avec toutes
réserves, il me semble que puisque c'est le moteur de base de données
qui interprète les requêtes SQL, tu ne puisse pas.
Par contre, il semblerait qu'il existe la possibilité d'utiliser la
propriété Filter de l'objet Recordset pour arriver à des résultats
semblables:
http://msdn2.microsoft.com/en-us/library/ms676691.aspx
Selon ce que je lis (http://msdn2.microsoft.com/en-us/library/
ms681465.aspx), la syntaxe devrait s'approcher de:
rstPublishers.Filter = "NomFichier like '116825*"
l'extension devant alors être dans un champ séparé puisque "In a LIKE
clause, you can use a wildcard at the beginning and end of the pattern
(for example, LastName Like '*mit*'), or only at the end of the
pattern".

Cela étant, il serait intéressant de savoir pourquoi tu as besoin de
ce recordset déconnecté? Ne peux-tu pas utiliser un "simple" tableau
dynamique? Si ce sont les propriétés de recherche préimplémentées du
recordset qui t'intéresse, ne peux-tu pas envisager de construire un
document XML et de récupérer les données avec XPath?

J'espère que ces pistes pourront t'aider et que je ne serai "à côté de
la plaque"!

François Picalausa
Avatar
Jacques
Bonjour,

Petit exemple ...

Public cnnTravail As New ADODB.Connection
Public rsTrav As New ADODB.Recordset

Set cnnTravail = New Connection
cnnTravail.CursorLocation = adUseClient
cnnTravail.Provider = "Microsoft.jet.OLEDB.4.0"
cnnTravail.ConnectionString = App.Path & "Travail.mdb "
cnnTravail.Open
Set rsTrav = New Recordset
rsTrav.Open "select * from TravMin", cnnTravail, adOpenStatic,
adLockOptimistic

Jacques(BE)



"François Picalausa" a écrit dans le message de news:

On 3 mai, 19:29, "Marc Sylvain" wrote:
Voici un bout de mon code

<snip la création de recordset déconnecté>

Je veux faire un ("Select * From ??? where NomFichier like '116825*.DWG'")

par quoi je remplace le ??? car je n'ai pas de nom de table et comment
faire un select

sur un ADODB.Recordset sans creer physiquement une database ???



Hello,

Bien que je ne sois pas spécialiste du domaine, donc avec toutes
réserves, il me semble que puisque c'est le moteur de base de données
qui interprète les requêtes SQL, tu ne puisse pas.
Par contre, il semblerait qu'il existe la possibilité d'utiliser la
propriété Filter de l'objet Recordset pour arriver à des résultats
semblables:
http://msdn2.microsoft.com/en-us/library/ms676691.aspx
Selon ce que je lis (http://msdn2.microsoft.com/en-us/library/
ms681465.aspx), la syntaxe devrait s'approcher de:
rstPublishers.Filter = "NomFichier like '116825*"
l'extension devant alors être dans un champ séparé puisque "In a LIKE
clause, you can use a wildcard at the beginning and end of the pattern
(for example, LastName Like '*mit*'), or only at the end of the
pattern".

Cela étant, il serait intéressant de savoir pourquoi tu as besoin de
ce recordset déconnecté? Ne peux-tu pas utiliser un "simple" tableau
dynamique? Si ce sont les propriétés de recherche préimplémentées du
recordset qui t'intéresse, ne peux-tu pas envisager de construire un
document XML et de récupérer les données avec XPath?

J'espère que ces pistes pourront t'aider et que je ne serai "à côté de
la plaque"!

François Picalausa
Avatar
Marc Sylvain
Merci Jacques et Francois

Comme je peux constater, J'aurais pas le

choix de me créer une database temporaire



Marc




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

Petit exemple ...

Public cnnTravail As New ADODB.Connection
Public rsTrav As New ADODB.Recordset

Set cnnTravail = New Connection
cnnTravail.CursorLocation = adUseClient
cnnTravail.Provider = "Microsoft.jet.OLEDB.4.0"
cnnTravail.ConnectionString = App.Path & "Travail.mdb "
cnnTravail.Open
Set rsTrav = New Recordset
rsTrav.Open "select * from TravMin", cnnTravail, adOpenStatic,
adLockOptimistic

Jacques(BE)



"François Picalausa" a écrit dans le message de
news:

On 3 mai, 19:29, "Marc Sylvain" wrote:
Voici un bout de mon code

<snip la création de recordset déconnecté>

Je veux faire un ("Select * From ??? where NomFichier like
'116825*.DWG'")

par quoi je remplace le ??? car je n'ai pas de nom de table et comment
faire un select

sur un ADODB.Recordset sans creer physiquement une database ???



Hello,

Bien que je ne sois pas spécialiste du domaine, donc avec toutes
réserves, il me semble que puisque c'est le moteur de base de données
qui interprète les requêtes SQL, tu ne puisse pas.
Par contre, il semblerait qu'il existe la possibilité d'utiliser la
propriété Filter de l'objet Recordset pour arriver à des résultats
semblables:
http://msdn2.microsoft.com/en-us/library/ms676691.aspx
Selon ce que je lis (http://msdn2.microsoft.com/en-us/library/
ms681465.aspx), la syntaxe devrait s'approcher de:
rstPublishers.Filter = "NomFichier like '116825*"
l'extension devant alors être dans un champ séparé puisque "In a LIKE
clause, you can use a wildcard at the beginning and end of the pattern
(for example, LastName Like '*mit*'), or only at the end of the
pattern".

Cela étant, il serait intéressant de savoir pourquoi tu as besoin de
ce recordset déconnecté? Ne peux-tu pas utiliser un "simple" tableau
dynamique? Si ce sont les propriétés de recherche préimplémentées du
recordset qui t'intéresse, ne peux-tu pas envisager de construire un
document XML et de récupérer les données avec XPath?

J'espère que ces pistes pourront t'aider et que je ne serai "à côté de
la plaque"!

François Picalausa




Avatar
SAISAS
Effectivement ...

j'ai regardé si la propriété Filter des recrordset marchait, mais elle n'est
possible qu'avec MicroSoft Jet, donc de l'ODBC ou du ISAM ...

Cordialement.

"Marc Sylvain" a écrit :

Merci Jacques et Francois

Comme je peux constater, J'aurais pas le

choix de me créer une database temporaire



Marc




"Jacques" a écrit dans le message de news:
%
> Bonjour,
>
> Petit exemple ...
>
> Public cnnTravail As New ADODB.Connection
> Public rsTrav As New ADODB.Recordset
>
> Set cnnTravail = New Connection
> cnnTravail.CursorLocation = adUseClient
> cnnTravail.Provider = "Microsoft.jet.OLEDB.4.0"
> cnnTravail.ConnectionString = App.Path & "Travail.mdb "
> cnnTravail.Open
> Set rsTrav = New Recordset
> rsTrav.Open "select * from TravMin", cnnTravail, adOpenStatic,
> adLockOptimistic
>
> Jacques(BE)
>
>
>
> "François Picalausa" a écrit dans le message de
> news:
>
> On 3 mai, 19:29, "Marc Sylvain" wrote:
>> Voici un bout de mon code
>>
>> <snip la création de recordset déconnecté>
>>
>> Je veux faire un ("Select * From ??? where NomFichier like
>> '116825*.DWG'")
>>
>> par quoi je remplace le ??? car je n'ai pas de nom de table et comment
>> faire un select
>>
>> sur un ADODB.Recordset sans creer physiquement une database ???
>
> Hello,
>
> Bien que je ne sois pas spécialiste du domaine, donc avec toutes
> réserves, il me semble que puisque c'est le moteur de base de données
> qui interprète les requêtes SQL, tu ne puisse pas.
> Par contre, il semblerait qu'il existe la possibilité d'utiliser la
> propriété Filter de l'objet Recordset pour arriver à des résultats
> semblables:
> http://msdn2.microsoft.com/en-us/library/ms676691.aspx
> Selon ce que je lis (http://msdn2.microsoft.com/en-us/library/
> ms681465.aspx), la syntaxe devrait s'approcher de:
> rstPublishers.Filter = "NomFichier like '116825*"
> l'extension devant alors être dans un champ séparé puisque "In a LIKE
> clause, you can use a wildcard at the beginning and end of the pattern
> (for example, LastName Like '*mit*'), or only at the end of the
> pattern".
>
> Cela étant, il serait intéressant de savoir pourquoi tu as besoin de
> ce recordset déconnecté? Ne peux-tu pas utiliser un "simple" tableau
> dynamique? Si ce sont les propriétés de recherche préimplémentées du
> recordset qui t'intéresse, ne peux-tu pas envisager de construire un
> document XML et de récupérer les données avec XPath?
>
> J'espère que ces pistes pourront t'aider et que je ne serai "à côté de
> la plaque"!
>
> François Picalausa
>
>





Avatar
François Picalausa
On 4 mai, 19:35, SAISAS wrote:
Effectivement ...

j'ai regardé si la propriété Filter des recrordset marchait, mais e lle n'est
possible qu'avec MicroSoft Jet, donc de l'ODBC ou du ISAM ...

Cordialement.



Hello,

Je ne suis pas certain de comprendre. Lorsque j'utilise:

Dim rsfso As New ADODB.Recordset
Dim i As Long, j As Long
Dim fname As String

Set rsfso = CreateObject("ADODB.Recordset")

With rsfso.Fields
.Append "NomFichier", adVarChar, 20
End With

rsfso.Open

For j = 0 To 9
fname = Chr$(Asc("a") + j)
For i = 1 To 10
rsfso.AddNew
rsfso("NomFichier") = fname & i
rsfso.Update
Next i
Next j

rsfso.Filter = "NomFichier LIKE 'b%' OR NomFichier LIKE 'c%'"

rsfso.MoveFirst
For i = 1 To rsfso.RecordCount
Debug.Print rsfso.Fields("NomFichier").Value
rsfso.MoveNext
Next i

N'est ce pas totalement indépendant du moteur derrière? (puisque le
recordset est construit sans connexion)
Je ne comprends pas vraiment où une telle dépendance intervient...

François
Avatar
parci
On Fri, 4 May 2007 10:35:00 -0700, SAISAS
wrote:


Effectivement ...

j'ai regardé si la propriété Filter des recrordset marchait, mais elle n'est
possible qu'avec MicroSoft Jet, donc de l'ODBC ou du ISAM ...



Avec Find ça marche (voir l'aide pour plus de détail sur les
paramètres) par exemple :

Dim rs As New ADODB.Recordset

With rs
.Fields.Append "NomFichier", adVarChar, 20

.Open
.AddNew
.Fields("NomFichier") = "a"
.Update

.AddNew
.Fields("NomFichier") = "b"
.Update

.AddNew
.Fields("NomFichier") = "c"
.Update

.MoveFirst
.Find "[NomFichier] = 'b'"
If Not .EOF Then
Debug.Print .Fields("NomFichier")
End If
End With