J'ai besoin d'aide svp

Résolu
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011 - 23 nov. 2005 à 14:42
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 déc. 2005 à 13:13
Je fais un projet vb pour moi en cours. Celui-ci gère mes prêts de CD. Mes cd sont répertoriés dans une base de donnés access. Il y a trois type de CD les logiciels, les divx, et les jeux. Pr mon menu j'ai commencer par faire un frame avec trois boutons à l'intérieur pour chaque type de CD. J'ai écris ce script:

Private Sub Command1_Click()
Dim var As Integer
var = 1
MsgBox (var)
Menu.Hide
Liste.Show
End Sub


Private Sub Command2_Click()
Dim var As Integer
var = 2
MsgBox (var)
Menu.Hide
Liste.Show
End Sub


Private Sub Command3_Click()
Dim var As Integer
var = 3
MsgBox (var)
Menu.Hide
Liste.Show
End Sub

Celui-ci me permet si je me suis pas tromper d' affecter une variable selon sur quel bouton commande de mon menu je clique. Mai après j'aimerai la récupérée dans une autre feuille mais je n'y arrive pa.
Private Sub Form_Load()
Dim base As Database
Dim sql As String


Dim table As Recordset
Set base = DBEngine.OpenDatabase("CD.mdb")



sql = "SELECT Titre FROM CD_ROM where (Type=var)"



Set table = base.OpenRecordset(sql)


table.MoveFirst


Do While (Not table.EOF)


Liste.List1.AddItem table!Titre
table.MoveNext
Loop
base.Close


End Sub

En fait au début j'avais fait trois feuilles différentes avec chacune une liste dessus et celle-ci me répertoriés tous mes CD du type sur lequel je cliquer or mon prof veut qu'il n'y ai qu'une feuille avec une seule liste et que je récupère la variable comme j'ai commencé à le faire mai je suis bloqué s'il vous plait aidez moi :((((.
Merci beaucoup.

En espérant avoir été assez clair.

14 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 nov. 2005 à 14:57
1. "VAR" est un mot clé !!!!!!! NE PAS UTILISER

2. "Form_Load()" ? je croyais que tu étais sous VBA

3. toute personne sensée te conseillera d'utiliser ADO et non pas DAO3.6

cause : DAO n'est plus mis à jour de1998. cela dit, comme je suis aussi encore sur DAO, chance pour toi



mais si tu ne tiens pas compte des conseils donnés, pourquoi continuer....





ici ta Form1 contient les boutons, Form2 fait le travail, et un module pour les variables








' -----

' Form1

' -----

'

Option Explicit

'

Public MaVariable As Long

'

'

Private Sub Form_Load()

Cmd(0).Caption = "bouton 1"

Cmd(1).Caption = "bouton 2"

Cmd(2).Caption = "bouton 3"

End Sub

'

' groupe de contrôles : 3 boutons "Cmd"

Private Sub Cmd_Click(Index As Integer) 'index = 0 ou 1 ou 2

MaVariable = Index + 1

MsgBox CStr (MaVariable), 32



'Menu.Hide

'Liste.Show

Form2.Show

End Sub











' -----

' Form2

' -----

'

Option Explicit

'

'

Public Sub Form_Load()



Dim rs As Recordset

Dim Sql As String



' ouvre la base

On Error GoTo BaseNonTrouvee

Set DB = OpenDatabase(sPathBase, True, False, ";pwd=" & sPassBase)

On Error GoTo 0 '*FGE*



' execute la requête

Sql = "SELECT Titre " & _

"FROM CD_ROM " & _

"WHERE Type = '" & Form1.MaVariable & "'"



Set rs = DB.OpenRecordset(Sql, dbOpenDynaset)



' récupère le 1er résultat. à toi de comprendre commet gérer ta boucle

Dim sResult As String

sResult = rs("Titre")

MsgBox sResult, 32



' détruit l'instance rs

Set rs = Nothing



' ferme et détruit l'instance base

DB.Close

Set DB = Nothing



Exit Sub







BaseNonTrouvee:

Err.Clear

MsgBox "Base Introuvable", 32

End Sub











' --------

' Mod_Vars

' --------

'

' dans ce module : tes déclarations publiques.

' çà sera bien plus pratique pour te relire

'

Option Explicit

'

' * activer microsoft DAO3.6 dans Projet-references *

'

Public DB As Database

'

Public Const sPathBase As String = "C:\CD.mdb" 'chemin base

Public Const sPassBase As String = "" 'password base




<small> Coloration
syntaxique automatique [AFCK]</small>





PCPT [AFCK]
3
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
23 nov. 2005 à 14:58
Sans fouiller ton code, je vois déjà 2 choses qui posent à priori pb :

1- Ta déclaration de variable.
Tu colles ce bout de code dans chaque bouton : "Dim var As Integer".
Si tu veux que ta variable soit utilisée dans tout ton programme, il faut que tu la déclares une seule fois dans les procédures générales et non dans chaque procédure.

2- Ta requête SQL
Tu la définis comme suit : "sql = "SELECT Titre FROM CD_ROM where (Type=var)""
Avec ça, si je ne me trompe pas, ça ne peut que planter parce que la requête va planter : ton champ "type" ne contient pas le mot "var", comme tu viens de le taper.
Il faut écrire la requête sous cette forme plutôt :
sql = "SELECT Titre FROM CD_ROM where Type=" & var

Molenn
0
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011
23 nov. 2005 à 15:32
Par rapport à ton bout de code que tu m'as donné j'ai mis ca dis moi si je me suis trompé par rapport au ":

sql = "SELECT Titre FROM CD_ROM where (Type= "& var")"

ensuite pour ton histoire de variable globale je m'en doutais mais je vois pas ou je dois mettre mes variables globales en fait parce que ca c'est le seul code que j'ai pour mon projet vu que j'ai recommencé.

Je te remercie de ton aide.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2005 à 16:10
".... WHERE TaColonne '" & MaVarPublic & "'"

en effet, Var est un mot clé il me semble, et les côtes ont leur importance
PCPT [AFCK]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011
23 nov. 2005 à 17:03
Les variables globales comme la avec var peux tu me dire ou je dois la mettre pour qu'elle soit considérée comme telle parce que je vois pa. Désolé mais je débute vraiment le vb et je lis un livre mais il est trop compliqué je comprend pas tout.
Merci.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 nov. 2005 à 17:12
(je touche pas à VBA....)
puisque tu l'utilises dans plusieurs Form, le plus simple est de créer un module et de l'y déclarer

Public NumOfButton as Long

selon le bouton, tu initialises NumOfButton, ou tu crées un groupe de contrôles pour tes boutons (puisque c'est le même code) et NumOfButton reçoit alors Index (c'est le plus logique...)

++
PCPT [AFCK]
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
23 nov. 2005 à 18:00
1.
Quand tu es dans l'éditeur VB, les déclarations globales se font lorsque les 2 boites de sélection sont sur "Général" et "Déclarations".
Pour faire simple, va tout en haut de ta page de code et c'est là que tu déclares ta varaible :
Dim Var as Integer
Le trait séparant les différents bout de code se mettra juste après.
Déclarée une seule fois à cet endroit, ta variable sera reconnue dans tout ton code.

2.
Ton code SQL :
sql = "SELECT Titre FROM CD_ROM where (Type= "& var")"
Je ne vois pas pourquoi tu veux absolument mettre des parenthèses, elles sont inutiles.
Mais sinon, il manque un caractère pour qu'il soit correct : Tu as oublié un & entre var et ")"; et tu as mis un espace de trop entre Type= et ta variable. Ton code devrait donc être :
sql = "SELECT Titre FROM CD_ROM where (Type="& var & ")"
ou plus simplement :
sql = "SELECT Titre FROM CD_ROM where Type=" & var

Dernière chose :
Ta variable est de type integer, je suppose donc que tu exécutes ta requête sur un champ de type numérique. Si dans ta base, ton champ est de type Texte, ça ne marchera pas de cette façon. A toi de voir si tu ne dois pas modifier le type de champ de ta base.
Sinon, la requête sera à écrire comme suit :
sql = "SELECT Titre FROM CD_ROM where Type=" """" & var & """"

Molenn.
0
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011
30 nov. 2005 à 13:04
j'ai besoin d'aide lorsque je lance mon programme ^^ celui ci s'execute jusqu'à ce qu'il arrive à la ligne ICI:
Public Sub Form_Load()
Dim base As Database 'activer microsoft DAO 3.6 dans Projet-reference
Dim sql As String


Dim table As Recordset
Set base = DBEngine.OpenDatabase("CD.mdb")



sql = "SELECT Titre FROM CD_ROM where Type=" & var
MsgBox (sql)


ICI ==>Set table = base.OpenRecordset(sql)


table.MoveFirst


Do While (Not table.EOF)


Liste.List1.AddItem table!Titre
table.MoveNext
Loop
base.Close


End Sub

Je rappel encore une fois que je débute le vba et le prof nous laisse nous débrouiller tout seul et nous donne pas de cours la dessus il nous fait cours que sur du c.Alors svp aider moi c'est pour mon passage en deuxieme année de bts.Dites moi pourquoi ca ne s"execute pas correctement.Merci.

Voila ma deuxieme page peut etre que ca vous aidera a comprendre:


Public var As Long


Private Sub Command1_Click()
var = 1
MsgBox (var)
Menu.Hide
Liste.Show
End Sub


Private Sub Command2_Click()
var = 2
MsgBox (var)
Menu.Hide
Liste.Show
End Sub


Private Sub Command3_Click()
var = 3
MsgBox (var)
Menu.Hide
Liste.Show
End Sub
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 nov. 2005 à 13:24
tu mélanges les syntaxes DAO et ADO. ce ne sont pas du tout les mêmes !!!!!
0
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011
30 nov. 2005 à 13:41
Que puis je faire pour que cela fonctionne car j'ai aucune notion et je ne sais meme pas ce qu'est la différences entre ces deux syntaxes.Peux tu m'expliquer stp.Merci de ta reponse.
0
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011
30 nov. 2005 à 13:49
Ensuite je souhaite recuperer la variable var dans ma premiere page et l'avoir dans la deuxieme page pour afficher selon le bouton de mon menu sur lequel je vais cliquer pour que ca m affiche certaines données de ma base de données access selon la variable var.Je sais pzas si je me fait bien comprendre!!!!!
0
biddal Messages postés 45 Date d'inscription jeudi 9 septembre 2004 Statut Membre Dernière intervention 8 août 2011
7 déc. 2005 à 12:55
J'ai reussi pour le module hors maintenant ca me met une erreur lorsque je compile à cette ligne ci.
Set rs = DB.OpenRecordset(Sql, dbOpenDynaset)

Ca me met erreur d'execution '3464'
Type de données incompatibles dans l'expression du critère.

Et pour les modules ca permet en fait de déclarer les variables globales en fait ou je me trompe?
Merci.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 déc. 2005 à 13:12
re,


si tu as une erreur dynaset, logiquement, c'est que tu n'as pas coché les références ADO.


et le module, oui c'est bien çà.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 déc. 2005 à 13:13
Encadre tes tables et champs :



Sql = "SELECT [Titre] " & _
"FROM [CD_ROM] " & _
"WHERE [Type] = '" & Form1.MaVariable & "'"

Amusez-vous !
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS - MVP Visual Basic
0
Rejoignez-nous