Affichage des éléments d'un MSFLEXGRID dans des TEXTEBOX

Signaler
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
2 novembre 2008
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
Bonjour à tous et à toute,

Je dévéloppe actuellement une application sur la gestion des notes avec VB.6.
Dans mon application j'utilise deux frames : l'un qui contient un MsFlexGrid pour un affichage global des données, et l'autre qui contient des TexteBox pour l'affichage en détail d'une donnée. Je voudrais que lorsqu'on clique sur un élément du Flexgrid, celui ci s'affiche en détail dans l'autre frame.

Mais voilà, lorsque je lance le programme tout tourne normalement. Mais lorsque je clique sur une ligne du Flexgrid le compilateur m'affiche:
"Erreur d'exécution 3001"
"Les arguments sont de type incorrect, en dehors des limites autorisées ou en conflit les uns avec les autres"

Et lorsque je clique sur débogage c'est cette ligne qui est mise en jaune:
rspost.Find "[ID_POSTE]=" & val

je vous mets ci dessous toute la procedure:
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

PrivateSub Rechercher(val AsString)
IfNot Trim(val) = ""Then
rspost.MoveFirst
    rspost.Find"[ID_POSTE]=" & val
        If rspost![flag] = TrueThen
            cmdSuppL.Enabled = False
            CmdRestL.Enabled = True
        Else
            cmdSuppL.Enabled = True
            CmdRestL.Enabled = False
        EndIf
   Afficher
EndIf
EndSub
 
PrivateSub mfgFRS_Click()
    Rechercher (mfgFRS.TextMatrix(mfgFRS.Row, 0))
EndSub

code

Quelqu'un pourrait-il me dire ce qui cloche là dedans?
J'espère avoir été assez précis. Je reste à votre disposition pour plus amples explications.
Merci<!-- / message -->

12 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Je ne suis pas sûr(je pense) que tu n'utilises pas la bonne syntaxe pour find...Regarde avec ton aide en ligne
A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Salut ,

De quel type est ton ID_POSTE?


rspost.Find "ID_POSTE=" & val
si val est un entier
Pour des strings, entoure le des guillemets.
rspost.Find "ID_POSTE='" & val &"'"
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
2 novembre 2008

J'utilise une BD access et mon ID_POSTE est de type texte.
J'ai corriger l'expression avec celle que tu m'a donnée tout à l'heure et maintenant mais maintenant le probleme se situe au niveau de la ligne de code juste en dessous.
Le compilateur m'écris: "Erreur d'exécution 3021"

BOF ou EOF est égal à true ou l'enrégistrement actuel a été supprimé. L'opération demandée nécessite un enrégistrement actuel.

Je n'est dans ma table que 3 données pour le moment.
Merci de bien vouloir me guider
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,
Je suppose que rspost est un recordset.
Alors montre nous comment tu le declares et
comment tu le rattaches à ta table ou tu dois chercher.
Si c' est lui que tu utlises pour remplir ton MsFlexgrid,
pour la recherche tu dois en déclarer un autre.

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />

 
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
2 novembre 2008

Alors voici mon programme ci dessous.



Public cnMaconnexion As Connection
Public rspost As Recordset
Public rslibel As Recordset
Public flag As Boolean





Private Sub Cmdlast_Click()
    Cmdprecedent.Enabled = True
    Cmdsuivant.Enabled = False
    Cmdlast.Enabled = False
    Cmdfirst.Enabled = True
 
    rspost.MoveLast
    Afficher
End Sub



Private Sub Cmdprecedent_Click()
rsFourni.MovePrevious
  If rspost.BOF Then
  Cmdprecedent.Enabled = False
  Cmdsuivant.Enabled = True
  Cmdlast.Enabled = True
  Cmdfirst.Enabled = False
 Else
  Cmdprecedent.Enabled = True
  Cmdsuivant.Enabled = True
  Cmdlast.Enabled = True
  Cmdfirst.Enabled = True
  Afficher
 End If
End Sub



Private Sub cmdSearch_Click()
On Error GoTo gesterr
    Rechercher (txtRecherche.Text)
 Exit Sub
gesterr:
 MsgBox ("# " & Err.Number & ": Caractère non autorisé")
End Sub



Private Sub Cmdsuivant_Click()
rspost.MoveNext
 If rspost.EOF Then
  Cmdprecedent.Enabled = True
  Cmdsuivant.Enabled = False
  Cmdlast.Enabled = False
  Cmdfirst.Enabled = True
 Else
  Cmdprecedent.Enabled = True
  Cmdsuivant.Enabled = True
  Cmdlast.Enabled = True
  Cmdfirst.Enabled = True
  Afficher
 End If
End Sub



Private Sub CmdSupFiltre_Click()
    rspost.Filter = adFilterNone
    Initialiser
    Afficher
End Sub



Private Sub Form_Load()



Set cnMaconnexion = New Connection
cnMaconnexion.Provider = "Microsoft.jet.OLEDB.4.0"
cnMaconnexion.ConnectionString = "User Id=;Data source = C:\overdoze\Projet.mdb;"
cnMaconnexion.Open



Set rspost = New Recordset
Set rslibel = New Recordset
rspost.Open "select * from Postes_MT", cnMaconnexion, adOpenKeyset, adLockOptimistic



rslibel.Open "SELECT DISTINCT LIB_POSTE FROM Postes_MT", cnMaconnexion, adOpenKeyset, adLockOptimistic





mfgFRS.TextMatrix(0, 0) = "ID Poste"
mfgFRS.TextMatrix(0, 1) = "Libellé"
mfgFRS.TextMatrix(0, 2) = "Type"
mfgFRS.TextMatrix(0, 3) = "Statut"




mfgFRS.ColWidth(0) = 1100
mfgFRS.ColWidth(1) = 2800
mfgFRS.ColWidth(2) = 900
mfgFRS.ColWidth(3) = 900



Initialiser
rspost.MoveFirst
Afficher



LblnfourError.Caption = " Caractère non autorisé"
LblnfourError.Visible = False
flag = False



cmbField.AddItem ("ID Poste")
cmbField.AddItem ("Libellé")
cmbField.AddItem ("Type")
cmbField.AddItem ("Statut")



End Sub

''''''''''''Liste des fonctions utilisées dans le programme''''''''''''''''''''''''''''

¤¤¤¤¤¤¤¤¤ Fonction d'affichage dans des objets bien précis ¤¤¤¤¤¤¤¤¤¤¤

Private Sub Afficher() 'cette procédure sera utiliser plusieurs fois c'est pourkoi on la réalise à part et par la suite on la fait appelle ds d'autres procédure pour éviter la redondance de code
    TxtIdpost.Text = rspost![ID_POSTE] 'lè []indique qu'il s'agit d'une requête
    TxtLib.Text = rspost![LIB_POSTE]
    TxtTyp.Text = rspost![Type]
    TxtStatut.Text = rspost![Statut]
    TxtEtat.Text = rspost![Etat]
    TxtIddepoz.Text = rspost![ID_DEPOSE]
    TxtIdpj.Text = rspost![ID_PROJET]
    TxtIddpj.Text = rspost![ID_DEPART_PROJET]
    TxtCordX.Text = rspost![POINT_X]
    TxtCordY.Text = rspost![POINT_Y]
End Sub
¤¤¤¤¤¤¤¤¤Fonction qui Permet d'initialiser le flex grid ¤¤¤¤¤¤¤¤¤¤¤¤¤
Private Sub Initialiser() 
    mfgFRS.Rows = rspost.RecordCount + 1
    i = 1
While Not rspost.EOF 'permet d'initialiser le flexgrid
    mfgFRS.TextMatrix(i, 0) = rspost![ID_POSTE]
    mfgFRS.TextMatrix(i, 1) = rspost![LIB_POSTE]
    mfgFRS.TextMatrix(i, 2) = rspost![Type]
    mfgFRS.TextMatrix(i, 3) = rspost![Statut]
    rspost.MoveNext
    i = i + 1
Wend
End Sub



Private Sub Rechercher(val As String)
If Not Trim(val) = "" Then
    rspost.MoveFirst
    rspost.Find "[ID_POSTE]=""&val&"
      

  If rspost![flag] = True Then ' c'est ici le probleme




            cmdSuppL.Enabled = False
            CmdRestL.Enabled = True
        Else
            cmdSuppL.Enabled = True
            CmdRestL.Enabled = False
        End If
   Afficher
End If
End Sub



Private Sub mfgFRS_Click()
    Rechercher (mfgFRS.TextMatrix(mfgFRS.Row, 0))
End Sub
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut à tous,

Bizarre ton truc, ce ne serait pas plutôt comme cela :

If Flag then
   cmdSuppL.Enabled = False
   CmdRestL.Enabled = True
Else
    cmdSuppL.Enabled = True
    CmdRestL.Enabled = False
End If

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
2 novembre 2008

J'ai intégré le flag comme un champs dans ma base de donnée. c'est pourkoi tu vois
rspost![flag] = True Then
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Je me demande alors si yu n'as pas un conflit, étant donnée que tu déclare en Public Flag As Boolean....Essaye de changer cette variables par un autre nom pour faire un essai comme : MyFlag As Boolean...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
11
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
2 novembre 2008

Désolé mais encore une fois ca coince. Ce que je trouve bizzare c'est que j'ai déjà appliqué cette meme technique dans un autre projet à la difference que là bas ca fonctionne bien mais par contre ici 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
12
Salut,

Est-ce que ton champ Flag se trouve bien dans la même table que Id_Post ?

Bon, je vais peut-être dire 2 bourdes, mais bon, faut essayer...

Essaye :

rspost.fields("Flag") = True Then

ou

rspost.fields("Flag") = Oui then

ou

rspost![flag] = Oui then

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,
l' erreur provient de Keyset à l' ouverture du recordset.

le FindFirst ne fonctionne qu' avec un recordset Dynamic:
rspost.Open "select * from Postes_MT", cnMaconnexion, adOpenDynaset, adLockOptimistic .

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,


Remarques:


> Pour le précédent , testes d' abord pour savoir si tu n' es pas au début
If Not rsFourni.Bof Then rsFourni.MovePrevious


> Pour le suivant , testes d' abord pour savoir si tu n' es pas déjà à la fin
If Not rsPost.Eof Then rsPost.MoveNext


>Après avoir declarer ton recordset, testes avant pour savoir s' il renvoie quelque chose ou pas.


Initialiser

If rsPost.Bof   Ans rsPost.Eof Then
  MsgBox "Table vide !",vbOkOnly+VbInformation,"..."
  Exit Sub
End If


 rspost.MoveFirst
Afficher


<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />