Recordset !

ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 - 2 juin 2007 à 08:58
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 2 juin 2007 à 18:11
bjr
avec VB6 + ACCESS
sur le terme:
recordset ! champ,
lorsque "champ" est une variable, comment doit-on la formuler...
j'ai essayé:
recordset ! (" & champ & ") ca ne marche pas

merci

16 réponses

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
2 juin 2007 à 09:06
Salut,

Tu veux faire quoi là avec ton recordset ?

Car l'utilisation telle que je la vois :

Text1.Text = recordset!TonChamp

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
2 juin 2007 à 09:08
Bonjour,

Pas sur d'avoir bien compris...
Cherches-tu ceci ?

Recordset.Fields(champ)
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
2 juin 2007 à 09:10
Salut Jmfmarques,

Il me semble...je dit bien il me semble(et m'excuse si je te dit une bourde), que c'est:

Recordset.Fields("champ")

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
2 juin 2007 à 09:21
Bonjour Exploreur,

Pas vraiment (il a dit que champ était une variable... donc déjà un string)

Reste à savoir (et c'est une autre paire de manches) si c'est bien ce qu'il cherche à avoir !
0

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

Posez votre question
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
2 juin 2007 à 09:27
bjr
il me sert à remplir les cellules d'un datagrid
cad je pars d'un listbox ou l'utilisateur à choisi sa liste (donc champs variables)
et a partir de ce choix (champ1,champ4,champ5 par ex  )
je select avec un recordset la valeur de ces champs pour chaque enregistrements  dans la base access,
pour remplir un datagrid

col0  champ1   champ4   champ5
001    XXX        YYY      ZZZ 
002     POIRE     FR          ETC.....

donc pour remplir la cell XXX   ,  ...........= recordset ! champ1  (en simplifié....)
mais "champ1" est variable, puisqu'on ne sait pas ce que l'utilisateur va choisir.
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
2 juin 2007 à 09:28
Non...
Tu as raison : il faut ajouter les " pour éviter la confusion possible avec un n° de champ...
si champ est déjà une string, ce sera alors
Recordset.Fields("""" & champ & """" )
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
2 juin 2007 à 09:44
mazette!!!
tant de guillemets, pourquoi donc (pour ma culture personnelle....)

cependant, il prend bien la "formule", mais en mode test,
il me fait une erreur "impossible de trouver l'objet ds la collection correspondant au nom ou à la réference ordinale demandé"
??
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
2 juin 2007 à 09:52
Salut,

Moi je serai toi, j'utiliserai Select Case.
Ainsi suivant le choix de l'utilisateur, tu déclenches tel ou tel évènement.

Option Explicit

MyVar as String

MyString = List1.List(List1.ListIndex)

Select Case MyString

Case "Champ1"
       recordset!.......

Case "Champ2"
        recordset!.....

Case "Champ3"
        recordset!.....

End Select

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
2 juin 2007 à 09:53
Euh... MyString as String

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
2 juin 2007 à 10:02
voici mon vrai code:
adostat= recordset
c'est en rouge que ca coince
le datagrid est en fait "beegrid"
si je remplace : SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("""" & nomcol & """")
par
 SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("designation")
"designation" est bien un champ existant dans ma base,
il me construit bien mon datagrid (bon les valeurs de chaque cellules ne sont pas les bonnes mais il le fait)

While Not AdoStat.EOF
    m = m + 1
    While Not xpos >= List1(1).ListCount
          nomcol = ""
        List1(1).ListIndex = xpos
        Label6 = List1(1).Text
        'List1(1).Text = List1(1).List(xpos)
        nomcol = (List1(1).Text)
        If nomcol = "compo" Then
            NOMCOL1 = "compo"
            ElseIf nomcol = "photo" Then
                NOMCOL1 = "IMAGES"
                ElseIf nomcol = "periode" Then
                    NOMCOL1 = "PERIO"
                    ElseIf nomcol = "profondeur" Then
                        NOMCOL1 = "PROF"
                        ElseIf nomcol = "observation" Then
                            NOMCOL1 = "com"
                            Else
                                NOMCOL1 = nomcol
                            End If
            List1(1).ListIndex = xpos
            Label6 = List1(1).Text
           
            nomcol = (List1(1).Text)
          SGGrid1.DataRowCount = m
          SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("""" & nomcol & """")
          SGGrid1.Rows.At(m).Height = 1500
                   
          xpos = xpos + 1
    Wend
    AdoStat.MoveNext
    m = m + 1
    xpos = 0
Wend
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
2 juin 2007 à 10:08
Mon dieu !!!

Pourquoi mettre autant de guillemets tu demandais ? Mais c'est totalement inutile !

Pour accèder à un champ, en notation abrégée, tu peux en effet faire : tonRecordset!tonChamp

Mais si ton champ possède un espace, ou si tu dois le définir avec une variable, alors utilise la notation plus classique : TonRecordset.Fields(taVariable).Value

Pas besoin de tout ces guillemets qui bien au contraire vont faire des erreurs car cà m'étonnerai que ton champ s'appelle "numéro" mais plutôt : numéro tou simplement.
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
2 juin 2007 à 10:18
en mettant "tous" ces guillemets , en mode deebug j'ai bien le vrai nom du champs qui s'affiche sous le curseur,mais j'ai quand meme:
"impossible de trouver l'objet ds la collection correspondant au nom ou à la réference ordinale demandé"
si je mets adostat!nomcol ou adostat!(" & nomcol & ") il me dit
"le caractere de declaration de type ne correspond pas au type de données déclaré."
nomcol est de type string ....
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
2 juin 2007 à 10:53
Salut,

Essaye cela(pour essai) après à toi de revoir ce qui te gêne :

While Not AdoStat.EOF
    m = m + 1
    While Not xpos >= List1(1).ListCount
   
        NOMCOL = ""
        List1(1).ListIndex = xpos
        Label6 = List1(1).Text
        'List1(1).Text = List1(1).List(xpos)
       
        NOMCOL = (List1(1).Text)
       
        Select Case NOMCOL
       
        Case "compo"
             SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("compo")
        Case "photo"
             SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("IMAGES")
        Case "periode"
             SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("PERIO")
        Case "profondeur"
             SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("PROF")
        Case "observation"
             SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("com")
        Case Else
             SGGrid1.Rows.At(m).Cells(xpos).Value = AdoStat.Fields("CeQueTuVeux")
        End Select
       
     ' La suite
      'List1(1).ListIndex = xpos << doublon voir début de ton code
      'Label6 = List1(1).Text << doublon voir début de ton code
      'nomcol = (List1(1).Text) << doublon voir début de ton code
     
      ' Partie commune
       SGGrid1.DataRowCount = m
       SGGrid1.Rows.At(m).Height = 1500
                   
      xpos = xpos + 1
    Wend
    AdoStat.MoveNext
    m = m + 1
    xpos = 0
Wend

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
ecranbleu27 Messages postés 190 Date d'inscription vendredi 4 juin 2004 Statut Membre Dernière intervention 29 avril 2009 1
2 juin 2007 à 12:10
merci explorer et les autre bien sur,


la méthode avec select case, fonctionne


mais une fois le datagrid (beegrid) construit , il me saute une ligne apres chaque enregistrement....


maintenant il faut que je lui mette la photo pour chaque enregistrement.....


j'ai fait le code mais il me faut l'"introduire " pour que ca roule....


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
2 juin 2007 à 18:09
Salut,
je te conseil d' utiliser une varaiable numérique
Tu pourra alors référener ton champ par son  index(rang rdinal dans la table)
Recordset.Fields(x)

 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
2 juin 2007 à 18:11
désolé, je crois quej' arrive trop tard !

0