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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Formulaire / sous formulaire et les requêtes.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Formulaire / sous formulaire et les requêtes.

n°1467946
Zorh
Opteron Power !
Posté le 31-10-2006 à 09:28:09  profilanswer
 

Bonjour à tous,
 
j'utilise un tutorial.
 
celui ci permet une recherche avancé avec formulaire et sous formulaire.
 

Code :
  1. Private Sub Restriction(ByVal Chaine As String, _
  2.          ByVal ChamP As String, ByVal matable As String, _
  3.          ByRef ArGument As Integer, ByRef ClausE As String, ByRef astype As Integer)
  4. ' Choix du type : 0 pour un string, 1 pour un numérique ou booleen
  5. ' 2 pour une date
  6. 'Construit la requête au premier passage
  7. If ArGument = 0 Then
  8.   'Elimine les espaces
  9.    matable = Trim$(matable)
  10.   'Si table est une sous requete :(commence par select)
  11.   If InStr(1, matable, "SELECT ", vbTextCompare) <> 0 Then
  12.     'Enleve le ; s'il existe
  13.     If Right(matable, 1) = ";" Then _
  14.        matable = Left(matable, Len(matable) - 1)
  15.     'encadre la sous requete avec des ()
  16.     ClausE = "SELECT * FROM (" & matable & " )"
  17.   Else
  18.     ClausE = "SELECT * FROM " & matable
  19.   End If
  20. End If
  21. If Chaine <> "" Then
  22.     If ArGument = 0 Then
  23.      ' Ajoute le WHERE
  24.     ClausE = ClausE & " WHERE "
  25.     ' Ajout de l'opérateur "AND" si le where existe déja
  26.     Else: ClausE = ClausE & " AND "
  27.     End If
  28.     Select Case astype
  29.       Case 0  'Ajoute le critère si le type est texte
  30.         ClausE = ClausE & ChamP & " like " & Chr(34) & Chaine & "*" & Chr(34)
  31.       Case 1  'Ajoute le critère si le type est Numerique
  32.         ClausE = ClausE & ChamP & "=" & Chaine
  33.       Case 2  'Ajoute le critère si le type est date
  34.         ClausE = ClausE & ChamP & "=#" & Format(Chaine, "mm/dd/yyyy" ) & "#"
  35.     End Select
  36.     ArGument = ArGument + 1
  37. End If
  38. End Sub


 
 

Code :
  1. Private Sub BRechercher_Click()
  2. Dim SQL As String
  3. Dim NomTable As String
  4. Dim Compteur As Integer
  5. NomTable = "Table1"
  6. 'Appel de la procedure de creation de requête
  7. 'pour le numero de série de type texte
  8. Restriction Nz(TLTA, "" ), "LTA", NomTable, Compteur, SQL, 1
  9. 'pour la date achat de type date (2)
  10. Restriction Nz(Date, "" ), "Date", NomTable, Compteur, SQL, 2
  11. 'Pour la marque de type texte
  12. Restriction Nz(Exploit, "" ), "Exploitant", NomTable, Compteur, SQL, 0
  13. 'Affecte la requête au sous formulaire
  14. Me.SousFormulaire.Form.RecordSource = SQL


 
se que je veux faire est simple, j'ai une requete fait en mode création.
j'ai donc créée un bouton sur le formulaire existant avec le code suivant.
 

Code :
  1. Private Sub LTA_Libre_Click()
  2. Dim stDocName As String
  3. stDocName = "Recherche par LTA Libre"
  4. DoCmd.OpenQuery stDocName, acNormal, acEdit
  5. End Sub


 
forcément ce code permet d'executer simplement la requête et biensur me donne le résultat dans une nouvelle fenêtre.
 
comment faire pour que le résultat soit dans le sous formulaire car je n'arrive pas à conprendre le SQL dans Me.SousFormulaire.Form.RecordSource = SQL.
 
si quelqu'un à une idée.
 
merci bien !
 
cordialement,
Zorh.

mood
Publicité
Posté le 31-10-2006 à 09:28:09  profilanswer
 

n°1468246
Zorh
Opteron Power !
Posté le 31-10-2006 à 15:16:41  profilanswer
 

up

n°1468322
Papy Octet
Posté le 31-10-2006 à 16:29:11  profilanswer
 

Bonjour zorh,
 
Si tu regardes dans le code du second cadre, tu vois cette ligne d'instruction :  
"3. Dim SQL As String"
 
Elle t'indique que SQL est une variable déclarée dans ce module, qu'elle est de type "string".
 
Elle doit donc contenir du "texte".
En réalité, elle doit contenir une instruction écrite au format SQL. Dans ton code, tu dois introduire l'instruction dans la variable SQL :
SQL = "WHERE ABCD LIKE DEF"
 
L'instruction doit être placée entre guillements "" puisque c'est du textes, un string. Les mots WHERE et LIKE, dans mon exemple, sont des mots réservés SQL.
 
A+

n°1468352
Zorh
Opteron Power !
Posté le 31-10-2006 à 16:55:33  profilanswer
 

bonjour papy merci de ta réponse.
 
ce que je veux c'est que ma requête donne sont résultat dans un champs texte de sousformulaire.
 
mais je ne c'est pas faire :/
 
cordialement,
Zorh.

n°1468987
Zorh
Opteron Power !
Posté le 02-11-2006 à 08:37:44  profilanswer
 

up :(

n°1469041
seniorpapo​u
Posté le 02-11-2006 à 09:53:14  profilanswer
 

Bonjour,
 
lorsque tu éxécutes   Me.SousFormulaire.Form.RecordSource = SQL
tu places dans la propriété source du  sous-formulaire, nommé "SousFormulaire", une requête sql de type "string" comme te l'as dit Papy Octet .
En général il est bon de rajouter un refresh après cette instruction pour que la nouvelle requête soit prise en compte.
 
Dans ton code, la requête SQL est générée par le Sub  "restriction"
 
 
Maintenant, si tu veux placer une requête SQL de ton cru créée à partir d'une requête faite en mode création:
 
tu ouvres ta requête en modif, puis: affichage-> mode SQL  
copies le texte et, dans ton code, tu écris  
SQL=  et tu colles ici ce que tu as copié.
 
l'instruction  que tu placeras après:   Me.SousFormulaire.Form.RecordSource = SQL
demandera au ss formulaire d'afficher les éléments  
sélectionnés par la requête.
Cordialement


Message édité par seniorpapou le 02-11-2006 à 09:54:51
n°1469091
Zorh
Opteron Power !
Posté le 02-11-2006 à 10:43:41  profilanswer
 

merci papou :)

n°1469431
Zorh
Opteron Power !
Posté le 02-11-2006 à 16:56:56  profilanswer
 

d'après ce que j'ai compris normallement ça devrai donner quelque chose comme sa:
 

Code :
  1. Private Sub Commande27_Click()
  2. Dim SQL As String
  3. SQL = "SELECT * FROM Table1 WHERE not isnull(DSSR_JFH) AND ( Nz(Exploitant,"" ) = "" OR isnull(Colis)  OR isnull(Poids) OR Nz(Destination,"" ) = "" );"
  4. Me.SousFormulaire.Form.RecordSource = SQL
  5. End Sub


 
mais sa marche pas et me renvoie une erreur sur la derniere ligne.
 
une idée ?
 
merci!

n°1469491
seniorpapo​u
Posté le 02-11-2006 à 18:15:21  profilanswer
 

Bonsoir,
tu dois avoir déjà un pb avec tes "" à l'intérieur.
 
remplace les "" à l'intérieur par """"  (4 " )
 
Quelle est l'erreur?
Cordialement


Message édité par seniorpapou le 02-11-2006 à 18:38:18
n°1469718
Zorh
Opteron Power !
Posté le 03-11-2006 à 08:44:21  profilanswer
 

sa marche nikel !!!!
 
t'es vraimment le meilleur papou !
 
merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Formulaire / sous formulaire et les requêtes.

 

Sujets relatifs
[VBA] Code destiner pour acces / pour ExcelVBA - Drag & Drop dans ListBox avec ScrollBar
[HTML]Formulaire de contact.VBA - Edition Excel.
VBA Word interdiction creation style paragraphe[VBA] Problème de choix dans le carnet d'adresse
VBA SOLVEURProblème sur formulaire d'Upload
Plus de sujets relatifs à : [VBA] Formulaire / sous formulaire et les requêtes.


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