ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 2009
-
2 juin 2007 à 08:58
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 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
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 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
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.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 & """" )
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 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é"
??
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 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
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 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.
ecranbleu27
Messages postés190Date d'inscriptionvendredi 4 juin 2004StatutMembreDernière intervention29 avril 20091 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 ....
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
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 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)