OVH Cloud OVH Cloud

caractère * dans une requête sur une base Access

5 réponses
Avatar
pulpfrissons
Impossible de créer un datadapter (pour créer ensuite dataset et un dataview)
avec une requête contenant une clause WHERE incluant le caractère *
exemple : "SELECT champ1, champ2 FROM table 1 WHERE champ1='*'"
Cette requête fonctionne sous Access, mais Visual Basic lève une exception
(a priori quand je crée le dataset).
Quelqu'un a t il une idée ?

5 réponses

Avatar
Fred
Bonjour,
Le SQL Acces n'est pas exactement conforme.
A la place de "*", il faut utiliser "%" si on passe par une connexion ODBC
ou SqlConnection.


"pulpfrissons" a écrit dans le
message de news:
Impossible de créer un datadapter (pour créer ensuite dataset et un


dataview)
avec une requête contenant une clause WHERE incluant le caractère *
exemple : "SELECT champ1, champ2 FROM table 1 WHERE champ1='*'"
Cette requête fonctionne sous Access, mais Visual Basic lève une exception
(a priori quand je crée le dataset).
Quelqu'un a t il une idée ?


Avatar
pulpfrissons
Merci Fred, mais j'aurais du préciser que précisemment, il ne s'agit pas d'un
caractère joker dans ce cas précis ! Il s'agit bien d'une valeur stockée dans
un champ de la table !
Je ne cherche pas à faire : "WHERE champ1 like 'x%'"
Je cherche bien à extraire une ligne dont le champ1 contient le caractère *.
Or, quand je tape ma requête sous Access, elle marche !
C'est quand cette requête est utilisée comme objet CommandSelect pour
constituer un DataAdapter que cela plante !

"Fred" a écrit :

Bonjour,
Le SQL Acces n'est pas exactement conforme.
A la place de "*", il faut utiliser "%" si on passe par une connexion ODBC
ou SqlConnection.


"pulpfrissons" a écrit dans le
message de news:
> Impossible de créer un datadapter (pour créer ensuite dataset et un
dataview)
> avec une requête contenant une clause WHERE incluant le caractère *
> exemple : "SELECT champ1, champ2 FROM table 1 WHERE champ1='*'"
> Cette requête fonctionne sous Access, mais Visual Basic lève une exception
> (a priori quand je crée le dataset).
> Quelqu'un a t il une idée ?





Avatar
Fred
Bonsoir,
J'avais lu en diagonale, mille excuses.
En ce qui me concerne, pour tout paramètre à passer dans mes commandes SQL,
j'utilise la collection Parameters qui évite nombre de petits soucis. Cela
résoudra peut-être ce problème également ?
NB : A vrai dire, et d'autres intervenants le confirmeront sans doute, ce
devrait être la seule façon de procéder :)


"pulpfrissons" a écrit dans le
message de news:
Merci Fred, mais j'aurais du préciser que précisemment, il ne s'agit pas


d'un
caractère joker dans ce cas précis ! Il s'agit bien d'une valeur stockée


dans
un champ de la table !
Je ne cherche pas à faire : "WHERE champ1 like 'x%'"
Je cherche bien à extraire une ligne dont le champ1 contient le caractère


*.
Or, quand je tape ma requête sous Access, elle marche !
C'est quand cette requête est utilisée comme objet CommandSelect pour
constituer un DataAdapter que cela plante !

"Fred" a écrit :

> Bonjour,
> Le SQL Acces n'est pas exactement conforme.
> A la place de "*", il faut utiliser "%" si on passe par une connexion


ODBC
> ou SqlConnection.
>
>
> "pulpfrissons" a écrit dans le
> message de news:
> > Impossible de créer un datadapter (pour créer ensuite dataset et un
> dataview)
> > avec une requête contenant une clause WHERE incluant le caractère *
> > exemple : "SELECT champ1, champ2 FROM table 1 WHERE champ1='*'"
> > Cette requête fonctionne sous Access, mais Visual Basic lève une


exception
> > (a priori quand je crée le dataset).
> > Quelqu'un a t il une idée ?
>
>
>


Avatar
pulpfrissons
Merci Fred,

J'avoue ne pas connaître cette collection, mais je vais de clic m'en
enquérir ! Je suppose que cela fonctionne avec une base Access ?! Si tu avais
un lien sous la main où je pourrais en apprendre plus n'hésite surtout pas !
A ce propos, me confirmes tu que .Net ne comprend aucun moteur de base par
défaut redistribuable sans royalties ?
En te remerciant encore pour ton aide !


"Fred" wrote:

Bonsoir,
J'avais lu en diagonale, mille excuses.
En ce qui me concerne, pour tout paramètre à passer dans mes commandes SQL,
j'utilise la collection Parameters qui évite nombre de petits soucis. Cela
résoudra peut-être ce problème également ?
NB : A vrai dire, et d'autres intervenants le confirmeront sans doute, ce
devrait être la seule façon de procéder :)


"pulpfrissons" a écrit dans le
message de news:
> Merci Fred, mais j'aurais du préciser que précisemment, il ne s'agit pas
d'un
> caractère joker dans ce cas précis ! Il s'agit bien d'une valeur stockée
dans
> un champ de la table !
> Je ne cherche pas à faire : "WHERE champ1 like 'x%'"
> Je cherche bien à extraire une ligne dont le champ1 contient le caractère
*.
> Or, quand je tape ma requête sous Access, elle marche !
> C'est quand cette requête est utilisée comme objet CommandSelect pour
> constituer un DataAdapter que cela plante !
>
> "Fred" a écrit :
>
> > Bonjour,
> > Le SQL Acces n'est pas exactement conforme.
> > A la place de "*", il faut utiliser "%" si on passe par une connexion
ODBC
> > ou SqlConnection.
> >
> >
> > "pulpfrissons" a écrit dans le
> > message de news:
> > > Impossible de créer un datadapter (pour créer ensuite dataset et un
> > dataview)
> > > avec une requête contenant une clause WHERE incluant le caractère *
> > > exemple : "SELECT champ1, champ2 FROM table 1 WHERE champ1='*'"
> > > Cette requête fonctionne sous Access, mais Visual Basic lève une
exception
> > > (a priori quand je crée le dataset).
> > > Quelqu'un a t il une idée ?
> >
> >
> >





Avatar
Fred
Bonsoir,
Normalement tu as une propriétés Parameters dans ton objet SelectCommand.
Regarde l'aide MSDN à ce sujet, il y a des exemples de code.
En voici un petit extrait pour une connexion odbc

Dim da As OdbcDataAdapter = New OdbcDataAdapter()
Dim cmd As OdbcCommand
Dim parm As OdbcParameter

' Create the SelectCommand.

cmd = New OdbcCommand("SELECT * FROM Customers " & _
"WHERE Country = ? AND City = ?", conn)

cmd.Parameters.Add("@Country", OdbcType.NVarChar, 15)
cmd.Parameters.Add("@City", OdbcType.NVarChar, 15)

da.SelectCommand = cmd

Pour ce qui est du moteur de base de données, regarde du côté de MSDE
(version allégée de SQL Server), mais demande plutôt conseil sur le
newsgroup dédié à sqlserver, on t'y répondra d'une manière beaucoup plus
précise.




"pulpfrissons" a écrit dans le
message de news:
Merci Fred,

J'avoue ne pas connaître cette collection, mais je vais de clic m'en
enquérir ! Je suppose que cela fonctionne avec une base Access ?! Si tu


avais
un lien sous la main où je pourrais en apprendre plus n'hésite surtout pas


!
A ce propos, me confirmes tu que .Net ne comprend aucun moteur de base par
défaut redistribuable sans royalties ?
En te remerciant encore pour ton aide !


"Fred" wrote:

> Bonsoir,
> J'avais lu en diagonale, mille excuses.
> En ce qui me concerne, pour tout paramètre à passer dans mes commandes


SQL,
> j'utilise la collection Parameters qui évite nombre de petits soucis.


Cela
> résoudra peut-être ce problème également ?
> NB : A vrai dire, et d'autres intervenants le confirmeront sans doute,


ce
> devrait être la seule façon de procéder :)
>
>
> "pulpfrissons" a écrit dans le
> message de news:
> > Merci Fred, mais j'aurais du préciser que précisemment, il ne s'agit


pas
> d'un
> > caractère joker dans ce cas précis ! Il s'agit bien d'une valeur


stockée
> dans
> > un champ de la table !
> > Je ne cherche pas à faire : "WHERE champ1 like 'x%'"
> > Je cherche bien à extraire une ligne dont le champ1 contient le


caractère
> *.
> > Or, quand je tape ma requête sous Access, elle marche !
> > C'est quand cette requête est utilisée comme objet CommandSelect pour
> > constituer un DataAdapter que cela plante !
> >
> > "Fred" a écrit :
> >
> > > Bonjour,
> > > Le SQL Acces n'est pas exactement conforme.
> > > A la place de "*", il faut utiliser "%" si on passe par une


connexion
> ODBC
> > > ou SqlConnection.
> > >
> > >
> > > "pulpfrissons" a écrit dans


le
> > > message de


news:
> > > > Impossible de créer un datadapter (pour créer ensuite dataset et


un
> > > dataview)
> > > > avec une requête contenant une clause WHERE incluant le caractère


*
> > > > exemple : "SELECT champ1, champ2 FROM table 1 WHERE champ1='*'"
> > > > Cette requête fonctionne sous Access, mais Visual Basic lève une
> exception
> > > > (a priori quand je crée le dataset).
> > > > Quelqu'un a t il une idée ?
> > >
> > >
> > >
>
>
>