Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  debutant formulaire access et SQL

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

debutant formulaire access et SQL

n°995952
kiki28
Posté le 28-02-2005 à 16:07:39  profilanswer
 

Bonjour  
je suis novice sur les bases de données access et j'aurai avoir une aide qui me serait assez utile...
Je viens de créer un formulaire qui me permettrai de faire des recherches selon differents criteres mais je voudrait savoir quel bouton ou fonction me permettrai de generer la requete SQL qui correspond. Petit precision si le champ n'est pas selectionner il doit prendre toutes les valeur correspondant a la table...
Merci d'avance a ceux qui me repondront


---------------
kiki28
mood
Publicité
Posté le 28-02-2005 à 16:07:39  profilanswer
 

n°996293
moi23372
Posté le 28-02-2005 à 20:26:35  profilanswer
 

je crois pas que Access permet de généré les requetes sql toutes seuls...
 
le seul truc, c'est d'utilisé l'assitant, mais ça ne te permettra pas de faire des trucs compliqués... sinon à ma connaissance Access ne permet rien d'autre...

n°996747
kiki28
Posté le 01-03-2005 à 08:35:01  profilanswer
 

Merci pour ton aide mais si quelqu'un d'autre a une idée merci de m'aider...

n°996768
vttman2
Je suis Open ...
Posté le 01-03-2005 à 09:06:55  profilanswer
 

Tu créés une table sous Access ex.Table1 (cle,chp1,chp2)
puis un formulaire ex:MonForm basé sur cette table  
Ensuite tu créés un nouveau formulaire ex:Maselect et dedans tu crées un champ ex:selectchp1
et un bouton ... sur ce bouton tu vas coder l'ouverture
de Monform avec un filtre/critère par rapport à selectchp1
Voir aide Access sur l'instruction docmd openform ...
Voir aussi exemple ce site pour la syntaxe  
http://cafeine.developpez.com/access/recherche/

n°997179
kiki28
Posté le 01-03-2005 à 14:43:42  profilanswer
 

je sais que je suis pas trs fort mais le code tu l insere ou? STP.... :-)
 Private Sub chkAuteur_Click()
 Me.txtRechAuteur.Visible = Not  Me.txtRechAuteur.Visible
 RefreshQuery
End Sub
 
Private Sub cmbRechFamille_BeforeUpdate(Cancel As Integer)
 RefreshQuery
End Sub
 
Private Sub txtRechResume_BeforeUpdate(Cancel As Integer)
 RefreshQuery
End Sub

n°997201
FlorentG
Unité de Masse
Posté le 01-03-2005 à 14:57:10  profilanswer
 

moi23372 a écrit :

je crois pas que Access permet de généré les requetes sql toutes seuls...
 
le seul truc, c'est d'utilisé l'assitant, mais ça ne te permettra pas de faire des trucs compliqués... sinon à ma connaissance Access ne permet rien d'autre...


Si, on peut générer des requêtes à la volées

n°997267
vttman2
Je suis Open ...
Posté le 01-03-2005 à 15:49:08  profilanswer
 

kiki28 a écrit :

je sais que je suis pas trs fort mais le code tu l insere ou? STP.... :-)
 Private Sub chkAuteur_Click()
 Me.txtRechAuteur.Visible = Not  Me.txtRechAuteur.Visible
 RefreshQuery
End Sub
 
Private Sub cmbRechFamille_BeforeUpdate(Cancel As Integer)
 RefreshQuery
End Sub
 
Private Sub txtRechResume_BeforeUpdate(Cancel As Integer)
 RefreshQuery
End Sub


 
Dans le cas suivant
 
Private Sub chkAuteur_Click()
 Me.txtRechAuteur.Visible = Not  Me.txtRechAuteur.Visible
 RefreshQuery
End Sub

 
Tu es censé avoir créé un formulaire avec un bouton chkAuteur
Si tu regardes au niveau des évenements de ce bouton et plus particulièrement l'évenement Click,
tu auras ce squelette qui va apparaitre
=>
 
Private Sub chkAuteur_Click()
 
End Sub
 
 
Les instructions suivantes veulent dire
 
 Me.txtRechAuteur.Visible = Not  Me.txtRechAuteur.Visible
=> Le texte txtRechAuteur est à rendre invisible
 RefreshQuery
=> rafraichir la requête source du formulaire qui va aussi ?
appliquer la transformation à ton texte txtRechAuteur ...
 
Bref en appuyant sur le bouton tu vas rendre invisible un texte à l'écran ...
 

n°997804
kiki28
Posté le 02-03-2005 à 08:15:16  profilanswer
 

Merci VTTMAN2
maintenant peux tu m'expliquer ceci?:
Me.lblstats.Caption = blabla(comme dans l exemple sur le site)
Me.lstResults.RowSource = SQL
Me.lstResults.Requery
 
 
car il y a un probleme de compilation je crois....
 
je pense que c est du a l'affichage de la requete car je crois pas avoir crée lblstats et lblresults... peux tu m eclairer??? il me manque ces choses a creer sur le formulaire....
bon ca va jusque la j'avance... et je comprend quand meme mieux le fonctionnement....

n°997819
FlorentG
Unité de Masse
Posté le 02-03-2005 à 09:08:36  profilanswer
 

Optimisation masturbatoire :
Au lieu de  

Me.lblstats.Caption


On peut mettre

Me!lblstats.Caption


:D

n°997931
kiki28
Posté le 02-03-2005 à 10:25:01  profilanswer
 

j ai un probleme concernant ces commandes:
 
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where " ) - Len("Where " ) + 1))
SQL = SQL & ";"
 
 
Me.lblstats.Caption = DCount("*", "MATABLE", SQLWhere) & " / " & DCount("*", "MATABLE" )
Me.lstresults.RowSource = SQL
Me.lstresults.Requery
 
une erreur s'affiche quand je (dé)coche une case...
l'erreur affichée est:
 
erreur d'execution '3075':
syntaxe error (missing operator) in query expression
 
mais qd je mets la ligne avec le lblstat y a plus d'erreur mais rien ne s'affiche
 
merci de votre aide  
au fait je m inspire du code sur le site gracieusement conseillé par vttman2:
http://cafeine.developpez.com/access/recherche/  

mood
Publicité
Posté le 02-03-2005 à 10:25:01  profilanswer
 

n°997935
kiki28
Posté le 02-03-2005 à 10:26:05  profilanswer
 

j ai oublié de precisé : la ligen avec le lblstat je la met avant la ligne avec le SQLWhere

n°997936
FlorentG
Unité de Masse
Posté le 02-03-2005 à 10:26:07  profilanswer
 

Met un espion sur la variable SQLWhere, pour voir ce qu'elle retourne :)

n°997965
kiki28
Posté le 02-03-2005 à 10:43:32  profilanswer
 

en fait j'ai l'impression que la requete se fait bien mais qu'elle est trop longue...
est ce qu'il y a une taille maximale en caracteres pour les requetes?

n°997969
kiki28
Posté le 02-03-2005 à 10:45:01  profilanswer
 

en fait j'ai l'impression que la requete se fait bien mais qu'elle est trop longue...
est ce qu'il y a une taille maximale en caracteres pour les requetes?

n°997970
kiki28
Posté le 02-03-2005 à 10:46:05  profilanswer
 

je me demande don si on peux pas mettre une sorte d alias qui appelerai la table par une simple lettre ce qui me permettrai de redui la requete?

n°997973
FlorentG
Unité de Masse
Posté le 02-03-2005 à 10:46:39  profilanswer
 

Au niveau de la taille, tu ne devrais pas avoir de problèmes je pense...

n°997987
kiki28
Posté le 02-03-2005 à 10:52:41  profilanswer
 

je viens de faire un test en mettant dans ma requete SQL une lettre qui defini la table comme pour des requetes normales et la , j obtient tout le contenu du SQLWhere...
mais l erreur qui m est apparut est:
erreur d execution 2471
l expression entrée comme parametrede requete est a l origine de l erreur suivante:'l'objet ne contient pas d'objet d automatisation

n°997990
kiki28
Posté le 02-03-2005 à 10:53:19  profilanswer
 

on peux pas agir directement sur les ta

n°997992
kiki28
Posté le 02-03-2005 à 10:54:01  profilanswer
 

dslé
on peux pas agir directement sur les table pour pouvoir garder son nom et pouvoir l appeler avec un nom plus court?

n°998025
kiki28
Posté le 02-03-2005 à 11:22:17  profilanswer
 

je confirme donc bien qu'il y a une taille limité pour les requete je viens de faire quelques test et c est ce que j en deduit...
mais ca ne repond pas a mes question sur comment appeler une table de maniere reduite sans tapper tout le nome de la table....

n°998029
FlorentG
Unité de Masse
Posté le 02-03-2005 à 11:24:36  profilanswer
 

Envoi nous ta requête histoire de voir

n°998116
kiki28
Posté le 02-03-2005 à 11:56:41  profilanswer
 

elle fait cette taille:
j'ai remplacé les champs pas des x mais j ai gardé la strucyure j espere que vous comprendrez....
 
 
SELECT xxx xxxxxx xx xxxxxxx!xx, xxx xxxxxx xx xxxxxx!xxxxxxxx, xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xxxxxxxxxxxxxxxxxxxx, xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xxxxxxxxx, xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xxxxxxxxxxxxxxxxxx,xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xxxxxxxxxxxxxxxxxxxx,xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xxxxxxxxxxx, xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xxxxxxxxxxxxxxxxxxxxx FROM xxx xxxxxx xx xxxxxxx INNER JOIN xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx ON xxx xxxxxx xx xxxxxxx!xx = xxx xxxxxxxxxx xx xxxxxxx xxxxxxxx xxx xxx xxxxxx!xx

n°998123
FlorentG
Unité de Masse
Posté le 02-03-2005 à 12:00:55  profilanswer
 

Ne la met pas directement dans le RowSource. Stocke-la dans la base, et dans RowSource met le nom de la requête

n°998201
kiki28
Posté le 02-03-2005 à 13:27:54  profilanswer
 

ok je vois ce que tu veux dire mais comment tu fais ppour appeler une requete? et tu la met ou dans le code?

n°998203
FlorentG
Unité de Masse
Posté le 02-03-2005 à 13:28:58  profilanswer
 

Faut créer un objet QueryDef :)

n°998248
kiki28
Posté le 02-03-2005 à 14:03:49  profilanswer
 

tu fais comment la syntaxe?
QueryDef= ma requete?

n°998257
kiki28
Posté le 02-03-2005 à 14:06:08  profilanswer
 

j ai trouvé la syntaxe
Requêtes paramétrées avec QueryDef
Lorsqu’on crée une requête paramétrée dans une base Access et que l’on veut l’exécuter dans VB, il faut procéder ainsi :
 
 
 
Dim Qry as querydef,rs as recordset
set qry=db.querydefs( nom_de_la_requête )
qry.parameters( nom_du_paramètre) = ....... //La vous comprenez quoi?
set rs=qry.openrecordset()

n°998270
FlorentG
Unité de Masse
Posté le 02-03-2005 à 14:13:49  profilanswer
 

Pour les paramètres, c'est genre si t'as une requête :

SELECT * FROM table WHERE table.bidule = pouet


Tu metteras :

qry.parameters("pouet" ) = "valeur"

n°998289
kiki28
Posté le 02-03-2005 à 14:18:38  profilanswer
 

je vien d 'essayer mais dans le cas que j utilise je le met dans le "private sub refreshquery()" mais il me met cette erreur:
 
type defini par l utilisateur non defini???
 
Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String
 
Dim Qry As querydef, rs As Recordset
Set Qry = db.querydefs(xxxxxxxxxxxx)
Set rs = Qry.openrecordset()
 
apres il y a la definition de la requete:
je met le nom de ma requete?
 
SQL = "xxxxxxxxxxxxxxxxx "

n°998299
kiki28
Posté le 02-03-2005 à 14:23:35  profilanswer
 

le message concerne cette ligne:
Qry As querydef

n°998318
FlorentG
Unité de Masse
Posté le 02-03-2005 à 14:41:02  profilanswer
 

Comme si il connaissait pas QueryDef :heink: Ajoute une fois une référence à DAO 3.6 si ce n'est pas le cas :)

n°998337
kiki28
Posté le 02-03-2005 à 14:59:19  profilanswer
 

Dim Qry As DAO.QueryDef, rs As Recordset
Set Qry = db.querydefs(ma_requete)
Set rs = Qry.openrecordset()
 
idem j ai le meme message d'erreur sauf celle de ma part peut etre...
 
et apres est ce que je peux faire:
 
SQL = QRY?

n°998342
FlorentG
Unité de Masse
Posté le 02-03-2005 à 15:03:37  profilanswer
 

Qry.SQL = "SELECT........"

n°998360
kiki28
Posté le 02-03-2005 à 15:14:07  profilanswer
 

non en fait si je fais appel a la requet c est pour eviter de mettre dans le rowsource la requete entiere...
donc on fait appel a  
Dim Qry As DAO.QueryDef, rs As Recordset  
Set Qry = db.querydefs(ma_requete)  
Set rs = Qry.openrecordset()  
 
mais avec l exemple sur lequel je me base a : http://cafeine.developpez.com/access/recherche/  
 
il faut dans le refreshQuery initialiser la requete sql de base:
 
SQL = "......."
 comme la requete avec tous les argument est tres longue j'utilise l'appel a la requete...
 
donc est ce que je peux concatené la requete recupérée avec la fin des autres arguments???
 
avec les  
 
if not ME.chkauteur then ...
SQL = SQL & "and blablabla"????
 
vois tu ce que je veux dire FlorentG?

n°998399
kiki28
Posté le 02-03-2005 à 15:41:00  profilanswer
 

en fait je vais essayer de faire au plus simple:
je viens de créer un table liée avec tous les champs qui m interesse et je l ai renommé de la maniere la plus simple possible je reprend l'exmple du site et j essaie de voir si je peux m en sortir comme ca...
 
j ai juste une petit question:
pour selectionner n importe quelle valeur sur une colonne sachant que j ai comme syntaxe:
and table.colonne =" la valeur que je cherche" comme peut elle prendre toutes les valeur un peu comme le *???

n°998402
FlorentG
Unité de Masse
Posté le 02-03-2005 à 15:48:53  profilanswer
 

Nan mais justement :
Imagine t'as une requête nommé "Pouet". Dans ton code, tu fais :

Code :
  1. Dim QryPouet as QueryDef
  2. Set QryPouet = CurrentDb.QueryDefs("Pouet" )
  3. QryPouet.SQL = "SELECT ........"


Et ensuite tu peux faire :

Me!lstresults.RowSource = "Pouet"


T'aura pas la limite du champ RowSource limité à 255 caractères :)

n°999229
kiki28
Posté le 03-03-2005 à 09:57:39  profilanswer
 

je sais pas si j'ai mal compris ou si je vois pas bien comment on fait...
je defini
Dim SQL As String
Dim SQLWhere As String
 
ensuite le rowsouce contient le sql
 
Me!lstresults.RowSource = SQL
 
mais dans ton  
QryPouet.SQL = "SELECT ........"
je dois retapper le SQL de base donc avec les autres arguments je pense que les 255 caracteres sont vite atteint??? ou alors j'ai peut etre pas saisi exactement comment on fait mais j ai un peu compris qd meme....

n°999238
kiki28
Posté le 03-03-2005 à 10:05:54  profilanswer
 

en fait j ai resolu qd meme certains problemes et je veux savoir si on peux concatener le nom d'une requete avec mes autres conditions? si il y a une solution pas trop compliquée ca resoudra mon pblm...
j'ai fait une requete qui doit afficher et lier les tables dont j ai besoin et en fonction de la recherche que des condition s'ajoutent a celle-ci
exemple
j'appelle ma requete et je rajoute 1 ou plusieurs condition
ma_requete + and contition1, and condition 2...
 
 
vois tu ou je veux en venir????

n°999240
kiki28
Posté le 03-03-2005 à 10:07:04  profilanswer
 

au fait je voudrai que le Me!lstresults.RowSource contienne tout sans depasser 255caracteres evidemment

n°999270
FlorentG
Unité de Masse
Posté le 03-03-2005 à 10:37:47  profilanswer
 

kiki28 a écrit :

au fait je voudrai que le Me!lstresults.RowSource contienne tout sans depasser 255caracteres evidemment


C'est la solution que je t'ai proposé. Tu as une requête enregistrée, dans laquelle t'as aucune limite. Et après dans la propriété Rowsource, tu met le nom de la requête, et ça marche

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  debutant formulaire access et SQL

 

Sujets relatifs
Inventaire : importation d'info d'un fichier txt vers ms access 2000taritement chaîne de caractères sous access
Probleme de requet SQL php[SQL] Question bête
Débutant : questions C/C++evenement sur liste deroulante dans access
recherche forum asp avec bd accessAjouter des éléments de formulaire sans PHP
Connection à SQL server[SQL SERVER] Primary key de type char/varchar
Plus de sujets relatifs à : debutant formulaire access et SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR