Je voudrais brancher une table (plus exactement un
SELECT partiel d'une table /paramétré comme un ss-formulaire)
sur un DataGrid : les exemples parlent de classes,
de consommateur de données .....
Mais déjà avec le controle Data je me fais jeter !
Et il me semblerait meme que cela soit normal !
Est-ce que cela vient de DAO ou ADO je ne sais !
Bon, maintenant je fais comment, entre
DataMember
DataSource
Database
"Données.mdb"
T_Position
SELECT ptP,ptX,ptY,ptZ FROM T_Position
WHERE kreg = "West" AND kvil = "Rennes" ;
Et en plus, j'aimerais bien, si mon utilisateur
décide de rajouter des points, que les
valeurs de kreg et kvil soient remplies
correctement (bien que cachées dans la grille).
J'imagine qu'il doit falloir les valuer dans une
fonction d'évenement, mais laquelle
et de quel controle ?
Quel verre d'eau pour s'y noyer !
Ce doit etre simple, qd on sait !
Aurais-je la chance de quelque bouée
pour reprendre mon souffle ?
Merci d'avance,
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
YanX
Bnjr,
Ca y est : grace au parcour de nbx forums, en plus du MSDN, mon datagrid fonctionne, connecté a une classe consommateur de données.
Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch, mais celui-ci est implicite (grace à l'ouverture en Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _ ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText) Mais j'ai encore qq.pbs.: 1° il me semble "normal" (disons que c'etait annoncé) que la virgule décimale soit correctement ignorée (au contraire d'Excel) : soluce ?
2° je n'ai pas trouvé où gérer la mise-à-jour : comment trapper l'evenement correspondant au BatchUpdate, pour valoriser dans la base les valeurs des champs non pris en compte dans le DataGrid ?
3° impossible de lire une utilisation de Private Sub Class_GetDataMember(DataMember As String, ByRef Data As Object) apparement jamais utilisée ?
Planté, quoi, bloqué ! Merci d'une goutte d'idées Y
"YanX" a écrit dans le message de news:%
Bnjr (bonsoir aux couche-tard)
Je voudrais brancher une table (plus exactement un SELECT partiel d'une table /paramétré comme un ss-formulaire) sur un DataGrid : les exemples parlent de classes, de consommateur de données .....
SELECT ptP,ptX,ptY,ptZ FROM T_Position WHERE kreg = "West" AND kvil = "Rennes" ;
Et en plus, j'aimerais bien, si mon utilisateur décide de rajouter des points, que les valeurs de kreg et kvil soient remplies correctement (bien que cachées dans la grille). J'imagine qu'il doit falloir les valuer dans une fonction d'évenement, mais laquelle et de quel controle ?
Quel verre d'eau pour s'y noyer ! Ce doit etre simple, qd on sait !
Aurais-je la chance de quelque bouée pour reprendre mon souffle ? Merci d'avance,
Y@+
Bnjr,
Ca y est : grace au parcour de nbx forums,
en plus du MSDN, mon datagrid fonctionne,
connecté a une classe consommateur de données.
Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch,
mais celui-ci est implicite (grace à l'ouverture en
Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _
,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText)
Mais j'ai encore qq.pbs.:
1° il me semble "normal" (disons que c'etait annoncé) que la virgule
décimale soit correctement ignorée (au contraire d'Excel) : soluce ?
2° je n'ai pas trouvé où gérer la mise-à-jour : comment trapper
l'evenement correspondant au BatchUpdate,
pour valoriser dans la base les valeurs des champs non pris
en compte dans le DataGrid ?
3° impossible de lire une utilisation de
Private Sub Class_GetDataMember(DataMember As String, ByRef Data As Object)
apparement jamais utilisée ?
Planté, quoi, bloqué !
Merci d'une goutte d'idées
Y
"YanX" <yanx_@yahoo.fr> a écrit dans le message de
news:%231ENCtj3EHA.4004@tk2msftngp13.phx.gbl...
Bnjr (bonsoir aux couche-tard)
Je voudrais brancher une table (plus exactement un
SELECT partiel d'une table /paramétré comme un ss-formulaire)
sur un DataGrid : les exemples parlent de classes,
de consommateur de données .....
SELECT ptP,ptX,ptY,ptZ FROM T_Position
WHERE kreg = "West" AND kvil = "Rennes" ;
Et en plus, j'aimerais bien, si mon utilisateur
décide de rajouter des points, que les
valeurs de kreg et kvil soient remplies
correctement (bien que cachées dans la grille).
J'imagine qu'il doit falloir les valuer dans une
fonction d'évenement, mais laquelle
et de quel controle ?
Quel verre d'eau pour s'y noyer !
Ce doit etre simple, qd on sait !
Aurais-je la chance de quelque bouée
pour reprendre mon souffle ?
Merci d'avance,
Ca y est : grace au parcour de nbx forums, en plus du MSDN, mon datagrid fonctionne, connecté a une classe consommateur de données.
Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch, mais celui-ci est implicite (grace à l'ouverture en Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _ ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText) Mais j'ai encore qq.pbs.: 1° il me semble "normal" (disons que c'etait annoncé) que la virgule décimale soit correctement ignorée (au contraire d'Excel) : soluce ?
2° je n'ai pas trouvé où gérer la mise-à-jour : comment trapper l'evenement correspondant au BatchUpdate, pour valoriser dans la base les valeurs des champs non pris en compte dans le DataGrid ?
3° impossible de lire une utilisation de Private Sub Class_GetDataMember(DataMember As String, ByRef Data As Object) apparement jamais utilisée ?
Planté, quoi, bloqué ! Merci d'une goutte d'idées Y
"YanX" a écrit dans le message de news:%
Bnjr (bonsoir aux couche-tard)
Je voudrais brancher une table (plus exactement un SELECT partiel d'une table /paramétré comme un ss-formulaire) sur un DataGrid : les exemples parlent de classes, de consommateur de données .....
SELECT ptP,ptX,ptY,ptZ FROM T_Position WHERE kreg = "West" AND kvil = "Rennes" ;
Et en plus, j'aimerais bien, si mon utilisateur décide de rajouter des points, que les valeurs de kreg et kvil soient remplies correctement (bien que cachées dans la grille). J'imagine qu'il doit falloir les valuer dans une fonction d'évenement, mais laquelle et de quel controle ?
Quel verre d'eau pour s'y noyer ! Ce doit etre simple, qd on sait !
Aurais-je la chance de quelque bouée pour reprendre mon souffle ? Merci d'avance,
Y@+
Jean-Marc
"YanX" a écrit dans le message de news:
Bnjr,
Ca y est : grace au parcour de nbx forums, en plus du MSDN, mon datagrid fonctionne, connecté a une classe consommateur de données.
Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch, mais celui-ci est implicite (grace à l'ouverture en Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _ ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText) Mais j'ai encore qq.pbs.:
Pour Filter, voici un petit exemple: ' ' on suppose qua Table1 contient un champ ' Amount de type nombre ' Private Sub Command1_Click() Dim db As Database ' la DB Dim rs As Recordset ' le recordset initial Dim rsf As Recordset ' le recordset filtré
Set db = OpenDatabase("c:db1.mdb") ' on ouvre la DB ' on ouvre le recordset complet Set rs = db.OpenRecordset("SELECT * from Table1")
' on garde juste quand amount est superieur à 1000 rs.Filter = "amount>1000" ' et on ouvre un second recordset basé sur le premier, mais filtré Set rsf = rs.OpenRecordset End Sub
pour la syntaxe de Filter: "The setting or return value is a String data type that contains the WHERE clause of an SQL Statement without the reserved word WHERE."
En pratique, on n'utilise jamais cela. Ce n'est ni joli ni efficace. On préfèrera ouvrir proprement un nouveau recordset en mettant le filtre dans la clause WHERE du SELECT (c'est d'ailleurs ce que dit la doc).
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
"YanX" <yanx_@yahoo.fr> a écrit dans le message de
news:u1nvAeD4EHA.3388@TK2MSFTNGP15.phx.gbl...
Bnjr,
Ca y est : grace au parcour de nbx forums,
en plus du MSDN, mon datagrid fonctionne,
connecté a une classe consommateur de données.
Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch,
mais celui-ci est implicite (grace à l'ouverture en
Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _
,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText)
Mais j'ai encore qq.pbs.:
Pour Filter, voici un petit exemple:
'
' on suppose qua Table1 contient un champ
' Amount de type nombre
'
Private Sub Command1_Click()
Dim db As Database ' la DB
Dim rs As Recordset ' le recordset initial
Dim rsf As Recordset ' le recordset filtré
Set db = OpenDatabase("c:db1.mdb") ' on ouvre la DB
' on ouvre le recordset complet
Set rs = db.OpenRecordset("SELECT * from Table1")
' on garde juste quand amount est superieur à 1000
rs.Filter = "amount>1000"
' et on ouvre un second recordset basé sur le premier, mais filtré
Set rsf = rs.OpenRecordset
End Sub
pour la syntaxe de Filter:
"The setting or return value is a String data type that contains the
WHERE clause of an SQL Statement without the reserved word WHERE."
En pratique, on n'utilise jamais cela. Ce n'est ni joli ni efficace. On
préfèrera ouvrir proprement un nouveau recordset en mettant le filtre
dans la clause WHERE du SELECT (c'est d'ailleurs ce que dit la doc).
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Ca y est : grace au parcour de nbx forums, en plus du MSDN, mon datagrid fonctionne, connecté a une classe consommateur de données.
Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch, mais celui-ci est implicite (grace à l'ouverture en Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _ ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText) Mais j'ai encore qq.pbs.:
Pour Filter, voici un petit exemple: ' ' on suppose qua Table1 contient un champ ' Amount de type nombre ' Private Sub Command1_Click() Dim db As Database ' la DB Dim rs As Recordset ' le recordset initial Dim rsf As Recordset ' le recordset filtré
Set db = OpenDatabase("c:db1.mdb") ' on ouvre la DB ' on ouvre le recordset complet Set rs = db.OpenRecordset("SELECT * from Table1")
' on garde juste quand amount est superieur à 1000 rs.Filter = "amount>1000" ' et on ouvre un second recordset basé sur le premier, mais filtré Set rsf = rs.OpenRecordset End Sub
pour la syntaxe de Filter: "The setting or return value is a String data type that contains the WHERE clause of an SQL Statement without the reserved word WHERE."
En pratique, on n'utilise jamais cela. Ce n'est ni joli ni efficace. On préfèrera ouvrir proprement un nouveau recordset en mettant le filtre dans la clause WHERE du SELECT (c'est d'ailleurs ce que dit la doc).
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
YanX
Bnsr J-Marc,
Merci pour ton indication, quoique je ne sache si elle est autorisée en ADO ; car je suis tombé sur http://support.microsoft.com/default.aspx?scid=kb;fr;468246
Moyennant le changement proposé adCmdText dans la ligne de connexion on va essayer ! @+
"Jean-Marc" a écrit dans le message de news:41bc3a4d$0$31692$
"YanX" a écrit dans le message de news: > Bnjr, > > Ca y est : grace au parcour de nbx forums, > en plus du MSDN, mon datagrid fonctionne, > connecté a une classe consommateur de données. > > Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch, > mais celui-ci est implicite (grace à l'ouverture en > Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _ > ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText) > Mais j'ai encore qq.pbs.:
Pour Filter, voici un petit exemple: ' ' on suppose qua Table1 contient un champ ' Amount de type nombre ' Private Sub Command1_Click() Dim db As Database ' la DB Dim rs As Recordset ' le recordset initial Dim rsf As Recordset ' le recordset filtré
Set db = OpenDatabase("c:db1.mdb") ' on ouvre la DB ' on ouvre le recordset complet Set rs = db.OpenRecordset("SELECT * from Table1")
' on garde juste quand amount est superieur à 1000 rs.Filter = "amount>1000" ' et on ouvre un second recordset basé sur le premier, mais filtré Set rsf = rs.OpenRecordset End Sub
pour la syntaxe de Filter: "The setting or return value is a String data type that contains the WHERE clause of an SQL Statement without the reserved word WHERE."
En pratique, on n'utilise jamais cela. Ce n'est ni joli ni efficace. On préfèrera ouvrir proprement un nouveau recordset en mettant le filtre dans la clause WHERE du SELECT (c'est d'ailleurs ce que dit la doc).
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."
Bnsr J-Marc,
Merci pour ton indication, quoique je ne sache si elle
est autorisée en ADO ; car je suis tombé sur
http://support.microsoft.com/default.aspx?scid=kb;fr;468246
Moyennant le changement proposé adCmdText dans la ligne de connexion
on va essayer !
@+
"Jean-Marc" <nospam_jean_marc_n2@yahoo.fr> a écrit dans le message de
news:41bc3a4d$0$31692$ba620e4c@news.skynet.be...
"YanX" <yanx_@yahoo.fr> a écrit dans le message de
news:u1nvAeD4EHA.3388@TK2MSFTNGP15.phx.gbl...
> Bnjr,
>
> Ca y est : grace au parcour de nbx forums,
> en plus du MSDN, mon datagrid fonctionne,
> connecté a une classe consommateur de données.
>
> Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch,
> mais celui-ci est implicite (grace à l'ouverture en
> Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _
> ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText)
> Mais j'ai encore qq.pbs.:
Pour Filter, voici un petit exemple:
'
' on suppose qua Table1 contient un champ
' Amount de type nombre
'
Private Sub Command1_Click()
Dim db As Database ' la DB
Dim rs As Recordset ' le recordset initial
Dim rsf As Recordset ' le recordset filtré
Set db = OpenDatabase("c:db1.mdb") ' on ouvre la DB
' on ouvre le recordset complet
Set rs = db.OpenRecordset("SELECT * from Table1")
' on garde juste quand amount est superieur à 1000
rs.Filter = "amount>1000"
' et on ouvre un second recordset basé sur le premier, mais filtré
Set rsf = rs.OpenRecordset
End Sub
pour la syntaxe de Filter:
"The setting or return value is a String data type that contains the
WHERE clause of an SQL Statement without the reserved word WHERE."
En pratique, on n'utilise jamais cela. Ce n'est ni joli ni efficace. On
préfèrera ouvrir proprement un nouveau recordset en mettant le filtre
dans la clause WHERE du SELECT (c'est d'ailleurs ce que dit la doc).
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Merci pour ton indication, quoique je ne sache si elle est autorisée en ADO ; car je suis tombé sur http://support.microsoft.com/default.aspx?scid=kb;fr;468246
Moyennant le changement proposé adCmdText dans la ligne de connexion on va essayer ! @+
"Jean-Marc" a écrit dans le message de news:41bc3a4d$0$31692$
"YanX" a écrit dans le message de news: > Bnjr, > > Ca y est : grace au parcour de nbx forums, > en plus du MSDN, mon datagrid fonctionne, > connecté a une classe consommateur de données. > > Mes AllowUpdate sont positionnés ; j'ai un UpdateBatch, > mais celui-ci est implicite (grace à l'ouverture en > Call rsP.Open(""SELECT ptP,ptX,ptY,ptZ FROM T_Position" _ > ,cnxP, adOpenDynamic, adLockBatchOptimistic, adCmdText) > Mais j'ai encore qq.pbs.:
Pour Filter, voici un petit exemple: ' ' on suppose qua Table1 contient un champ ' Amount de type nombre ' Private Sub Command1_Click() Dim db As Database ' la DB Dim rs As Recordset ' le recordset initial Dim rsf As Recordset ' le recordset filtré
Set db = OpenDatabase("c:db1.mdb") ' on ouvre la DB ' on ouvre le recordset complet Set rs = db.OpenRecordset("SELECT * from Table1")
' on garde juste quand amount est superieur à 1000 rs.Filter = "amount>1000" ' et on ouvre un second recordset basé sur le premier, mais filtré Set rsf = rs.OpenRecordset End Sub
pour la syntaxe de Filter: "The setting or return value is a String data type that contains the WHERE clause of an SQL Statement without the reserved word WHERE."
En pratique, on n'utilise jamais cela. Ce n'est ni joli ni efficace. On préfèrera ouvrir proprement un nouveau recordset en mettant le filtre dans la clause WHERE du SELECT (c'est d'ailleurs ce que dit la doc).
-- Jean-marc "There are only 10 kind of people those who understand binary and those who don't."