Juste par curiosité!

Signaler
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011
-
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
-
Bonjour(pas cheval),

Dans un rapport que je fais avec DataDynamic Active Report 2.0, j'ai eu un petit bug :

Private Sub ActiveReport_fetchData(eof As Boolean)

If dcInters.Recordset.eof Then Exit Sub

Dim strTest As String
strTest = dcInters.Recordset!mvtId  'Est égale à "EBL"
Fields(dcInters.Recordset!mvtId).Value = dcInters.Recordset!debits          'Indice en dehors de la plage
Fields(strTest).Value = dcInters.Recordset!debits                                       'Correct
Fields("EBL") = 8                                                                                      'Correct

End Sub

Juste par curiosit., quelqu'un à une idée pourqoi il ne peut
pas prendre directement la valeure du recordset sans buggé?

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je /b/

12 réponses

Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

bon... Pour une raison inconnue, il a affiché mon post de facon étrange. Voici donc le reposte moins laid du premier post.

Private Sub ActiveReport_fetchData(eof As Boolean)

If dcInters.Recordset.eof Then Exit Sub

Dim strTest As String
  'Est égale à "EBL"
strTest = dcInters.Recordset!mvtId

'Indice en dehors de la plage
Fields(dcInters.Recordset!mvtId).Value = dcInters.Recordset!debits

'Correct
Fields(strTest).Value = dcInters.Recordset!debits

'Correct
Fields("EBL") = 8

End Sub

Juste par curiosité, quelqu'un à une idée pourqoi il ne peut
pas prendre directement la valeure du recordset sans buggé?

Walla. Même question

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut,

'Indice en dehors de la plage
Fields(dcInters.Recordset!mvtId).Value = dcInters.Recordset!debits
Il faudra vérifier ce que vaut dcInters.Recordset!mvtId.
Si c' est une valeur numérique, il se peut que le champ
dont le rang ordinal renvoyé n' éxiste pas.

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
et combien même ça serait du texte; ce qu' il faut dans
Fuelds(ici) c' est le nom du champ et non une quelconque valeur.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
oups!
Pardon pour ce débit de conneries..
Je viens de comprendre.
Une supposition:(si je ne dis pas encore une)
Si le champ 8 est le dernier,
Fields(dcInters.Recordset!mvtId-1).Value = dcInters.Recordset!debits

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

J'ai fait une erreur de frappe :
'Correct
Fields("EBL").Value
= 8

C'était seulement un test s'il allait accepter le "EBL"

Le field "EBL" existe bien.

Il y a un field pour tous les 'MvtID' (NBL, NBT, NBR, EBR, EBL, EBT,ETC)

Seulement, si je prends directement la valeur de mon recordset,

dcInters.Recordset!mvtId

Il me dit Indice en dehors de la plage...

Si je fais :

strTest = dcInters.Recordset!mvtId

Ensuite je fais le

Fields(strTest).value, il fonctionne. Pourtant. strTest = dcInters.Recordset!mvtId...
Donc les deux on la même valeur et retourne la même string!
Je ne comprends pas pourquoi... C'est peut-être un bug obscur de VB6!!!

Et pour le  dcInters.Recordset!mvtId-1

Comme mvtId est un string qui vient de ma BD, je ne crois pas que faire -1 fasse quelque chose d'utile. ;)

Walla

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je /b/
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
c' est la description de l' erreur qui chiffonne.
S"' il parle d' indice, c' est qu' il s' agit du rang.
S' il s' agissait du nom de champ, il aurait mis :
ne fais pas partie de la collection.


Autre supposition:
dcInters.Recordset!mvtId renvoie -1 parcequ' il
ne peut pointer sur un enregistrement tout en allant
chercher son indice par le biais d' un autre pointeur.





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

En fait, c'est comme s'il ne trouvait pas  ce qui est contenu dans mon recordset!mvtID

Pour ce qui est de l'erreur, j'ai écris ceci :

Fields("I like turltes").Value = dcInters.Recordset!debits

et j'ai obtenu la meme erreur

Donc, Meme avec un string, c'est  un Indice out of range

mon recordset!mvtId ne renverra jamais des nombres, toujours des string.

Et je suis en VB6, juste pour préciser.

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je
Messages postés
584
Date d'inscription
jeudi 28 décembre 2006
Statut
Membre
Dernière intervention
29 avril 2010
1
Je ne comprend pas tres bien ta syntaxe... c'est peut-etre moi qui est trop old school mais ton Fields("I like turtules").value n'a pas de propriétaire... normalement la syntaxe que j'utilise c'est recordset.field("nom du champs").value....

Fields("I like turltes").Value = dcInters.Recordset!debits

 
  zen69 aka Ortho Le Profett
 
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Évidamment, je n'ai pas vraiment de Field qui porte le nom de "I like turtles"

Je crois que je viens de comprendre ton point de vue... dans mon programme, j'avais bel et bien écrit
Fields("I like turltes").Value dcInters.Recordset!debits)

C'était seulement pour montrer à LIBRE_MAX que l'erreur :
Indice en dehors de la plage

Peut arriver même si c'est une erreur dans le nom d'un field.

Et c'est cela qui me surprends, car ma variable a le valeur de mon recordset...

Quand j'utilises directement le recordset, ça plante, quand j'utilises la variable qui recoit la valeur de recordset, ça fonctionne.

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)

Je brise la règle 1 et 2. Je /b/
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
 "En fait, c'est comme s'il ne trouvait pas 
ce qui est contenu dans mon recordset!mvtID"


je continue dans ma lancée ..
c' est la nuit des supposition


le pauvre , il est écartelé !
Il ne sait pas quoi faire en premier:
Pour définir la valeur d' un champ, il a besoin de son nom.
Ce nom il ne l' a pas encore.
Alors il est obligé d' aller le chercher.
Par Quoi ?
Par un autre pointeur.
Alors laches-t-il prise à ce moment là ?
Ou c' est juste une question du passage de param:By Val ou By Ref ?
J' aimerais comprendre.Juste par curiosité










 





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Messages postés
228
Date d'inscription
mercredi 13 décembre 2000
Statut
Membre
Dernière intervention
8 août 2011

Je crois que c'est toujours en byval quand un utilise une donnée d'un record set

Et je ne vois pas pourquoi il voudrait passé cette argument byref...

J'ai demandé à mon ami google, mais il n'aime pas trop les questions vagues de ce genre

Sinon, ehhh, ça doit être parce que VB6 a de l'âge et qu'il a oublié comment faire o.O

C'est bien à 15 ans que l'on devient sénile, non?
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
 
Il tremble parfois..
Mais il a bien résisté jusqu'à maintenant.
Il tiendera encore le coup quelque temps !

Les vieux ne meurent pas
'c' est juste qu'
Ils s' endorment un jour
Et dorment trop longtemps

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