Recup"rer donnees dans une grille

faycalche Messages postés 74 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 31 décembre 2009 - 20 août 2008 à 19:11
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 22 août 2008 à 23:19
salut,
SVP dites moi ou est l'erreur dans ce code que j'ai fait pour recupérer les donnees de deux tables différentes??
Voila le code:

If rsligne_fact_four.Fields(4) = Combo1.Text Then
g.Row = g.Row + 1
g.Col = 0
g.Text = rsligne_fact_four.Fields(0)
g.Col = 1
g.Text = rsfact_four.Fields(1)
g.Col = 2
g.Text = rsligne_fact_four.Fields(3)
g.Col = 3
g.Text = rsligne_fact_four.Fields(3)
g.Col = 4
g.Text = rsligne_fact_four.Fields(5)

g.Rows = g.Rows + 1

End If
rsligne_fact_four.MoveNext
Wend
g.Rows = g.Rows - 1
End If
Merci

10 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
20 août 2008 à 19:42
Salut,
c' est quoi coome control le dit g ?
On suppose que c' est un MsFlexGrid.
If rsligne_fact_four.Fields(4) = Combo1.Text Then
g.Rows = g.Rows + 1 'Ajoute une ligne
g.Row =g.Rows-1  'se positionne à la dernière 'igne
g.Col = 0
g.Text = rsligne_fact_four.Fields(0)
g.Col = 1
g.Text = rsfact_four.Fields(1)
g.Col = 2
g.Text = rsligne_fact_four.Fields(3)
g.Col = 3
g.Text = rsligne_fact_four.Fields(3)
g.Col = 4
g.Text = rsligne_fact_four.Fields(5)

<strike>g.Rows = g.Rows + 1 </strike>'pas la peine, c' est déjà fait tou<strike>t</strike> en haut

End If

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
faycalche Messages postés 74 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 31 décembre 2009
21 août 2008 à 03:19
salut,
Oui g est une MsFlexGrid.
J'ai essayer ton code mais le probléme pérciste encore!!une fois que j'appuie sur le bouton auquel ce code est associé,l'entete de lavgrille disparait!!
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
21 août 2008 à 13:12
Salut,
Il faudra réinitialiser le tout au tout début de ta procédure.
Private Sub Boutton_Click()
  Dim i as Integer
 
With g
  .FixedRows=1 'ligne en-tete
  .Rows=2  ' + une ligne vide

   i=1
 rsligne_fact_four.MoveFirst
Do  While Not rsligne_fact_four.Eof
 If rsligne_fact_four.Fields(4) = Combo1.Text Then
   i= i + 1
  .Rows= i  'nombre de ligne
  .Row= i - 1 'ligne courante
 
  .Col = 0
 .Text = rsligne_fact_four.Fields(0)
 .Col = 1
 .Text = rsfact_four.Fields(1)
 .Col = 2
 .Text = rsligne_fact_four.Fields(3)
 .Col = 3
 .Text = rsligne_fact_four.Fields(3)
 .Col = 4 

E,d If
  rsligne_fact_four.MoveNext
Loop
End With
End Sub
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
faycalche Messages postés 74 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 31 décembre 2009
21 août 2008 à 16:54
salut LIBRE_MAX,
Cette fois ci c bon pour l'entete qui reste affichée, mais aucun enregistrement ne s'affiche dans la grille!!!
Voilà le code complet du bouton:

Dim i As Integer
Set rsligne_fact_four = New ADODB.Recordset
rsligne_fact_four.Open "select * from ligne_facture_four where Code_four= '" & Combo1.Text & "'", cn, 1, 2

Set rsfact_four = New ADODB.Recordset
rsfact_four.Open " select * from Facture_four where Code_fou = '" & Combo1.Text & " '", cn, 1, 2


If rsligne_fact_four.RecordCount = 0 Then
MsgBox "Il n'y a aucun facture saisie", vbInformation, "MAC//Z"
Exit Sub
Else
With g
.FixedRows = 1 'ligne en-tete
.Rows = 2 ' + une ligne vide
i = 1
rsligne_fact_four.MoveFirst
Do While Not rsligne_fact_four.EOF
If rsligne_fact_four.Fields(4) = Combo1.Text Then
i = i + 1

.Rows = i 'nombre de ligne
.Row = i - 1 'ligne courante

.Col = 0
.Text = rsligne_fact_four.Fields(0)
.Col = 1
.Text = rsfact_four.Fields(1)
.Col = 2
.Text = rsligne_fact_four.Fields(3)
.Col = 3
.Text = rsligne_fact_four.Fields(4)
.Col = 4
.Text = rsligne_fact_four.Fields(5)
End If
rsligne_fact_four.MoveNext
Loop
End With
End If

End Sub

NB: pour afficher la grille , j'ai associé ke code suivant au form_load du form
Code:
g.Clear
g.Rows = 2
g.Cols = 5
g.Row = 0
g.Col = 0
g.ColWidth(0) = 1800
g.Text = "Numéro facture"
g.Col = 1
g.ColWidth(1) = 2500
g.Text = "Date"
g.Col = 2
g.ColWidth(2) = 2000
g.Text = "Montant HT"
g.Col = 3
g.ColWidth(3) = 1200
g.Text = "Taux TVA"
g.Col = 4
g.ColWidth(4) = 3000
g.Text = "Montant TTC"
Merci
0

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

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
21 août 2008 à 18:21
désolé du retard, j' ai fait une longue sieste !
Au vu ton code, j' ao pas compris ceci:
-Ta requete te renvoie tout ce qui correspond à Combo1.Text comme code fournisseur et dans la boucle tu tyestes si Fields(4)=Combo1.Text.
A quoi correspond donc ton Fields(4) ?
Si c' est code_fou le test est superflu, sinon tu devrais comparer à autre chose que combo1.Text, non ?

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
faycalche Messages postés 74 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 31 décembre 2009
21 août 2008 à 19:46
Bonjour,
Oui c 'est le code-fou existant dans la deuxiéme table.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
21 août 2008 à 19:58
Ah oui, je vois ..En effet, t' as deux recordsets.
Ton code semble donc correct, mais franchement je ne vois pas pourquoi ça remplit pas la grille !
D' autant plus que tu n' as pas de MsgBox "Il n'y a aucun facture saisie", Ce qui prouve que ton recordset est plein.
Testes sans la condition.
Mets If rsligne_fact_four.Fields(4) = Combo1.Text Then en commentaire, pour voir.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
faycalche Messages postés 74 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 31 décembre 2009
22 août 2008 à 03:22
Bonjour,
Oui LIBRE_MAX j'ai essayé sans mettre la condition est ca marcheeeeeeeeee!!!
Merci infiniment
0
faycalche Messages postés 74 Date d'inscription vendredi 2 juin 2006 Statut Membre Dernière intervention 31 décembre 2009
22 août 2008 à 03:24
Pardon mais j'ai oublié de vous demander comment faire(la requete SQL) si la condition etait d'aficher les factures qui ont été enregistrées entre deux dates!!
Merci
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
22 août 2008 à 23:19
soient deux variables d1 et d2 :
 1° cas : de type Date
  "...where ChpDate >=" &  d1 & " AND " & _
  "ChpDate <=" &  d2


 2° cas : de type String
  "...where ChpDate >=# " &  d1 & "# AND " & _
  "ChpDate <=# " &  d2 & "#"


Sachant bien que ton champ est de type Date.

                 
<hr />
... Y'en a même qui disent qu'ils l'ont vu voler.
0
Rejoignez-nous