Passage dataenvironment

andalo Messages postés 102 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 20 octobre 2012 - 6 août 2007 à 10:59
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 7 mai 2008 à 19:10
Bonjour,
j'utilise VB6 les connections ADO sur une base Access .
J'ai besoin de passer certain parametre a des procedures générales
et le passage d'un champs en particulier me pause problème, j'y arrive mais je suis sur que c'est pas tres "propre" comme façon de faire

voici ma syntaxe, DE etant le nom de mon dataenvironment.

call procedure_generale ( DE.rscommand, DE.rscommand![champ])

public sub procedure_generale ( rst as recordset, champ as variant)
   blablabla
end sub

l'utilisation du type variant fonctionne mais a quoi sert donc le type field alors, je l'ai essayé mais sans resultat. Si quelqu'un a une facon plus pro d'y arriver je suis preneur, merci

5 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
6 août 2007 à 11:25
Salut,
C'est bizare que cela ne fonctionne pas avec le type Field
Essaie peu être ceci (pas testé).

Call procedure_generale(DE.rscommand, DE.rscommand.Fields(champ))

Public Sub procedure_generale(rst As Recordset, champ As Field)
  'Balabla
End Sub<hr />, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
0
andalo Messages postés 102 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 20 octobre 2012
6 août 2007 à 11:43
"type incompatible"!!
ca genere la meme erreur que si j'ecris DE.rscommand![champ]
ca passe avec viriant de la mee facon par contre.
ceci dis, je veins d'essayer ma procedure et j'ai une "erreur automation" quand j'appelle le champ!!!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
6 août 2007 à 11:48
Salut,
Peu être devrait tu jouer avec LEs ByVal et les ByRef.
NOTE: est tu sur que le type incompatible ce fait dans le type donnée à la procédure et pas dans un ligne de la procédure?

Peu être devreait tu mettre le code de procedure_generale

@+: Ju£i?n
Pensez: Réponse acceptée
0
andalo Messages postés 102 Date d'inscription lundi 23 avril 2007 Statut Membre Dernière intervention 20 octobre 2012
7 mai 2008 à 11:03
Je ne sais plus par quel miracle le code avais fini par fonctionner, mais je reprend cette discussion, pour le meme type de souci mais sous vista maintenant.
Visiblement ce qui pose problème c'est le passage en paramètre du type field (sous vista, je remplace par variant et ca fonctionne, mais pas avec field!)
Ce coup ci la manip varie un peu, mon recordset etant le resultat d'une requete sql.

Private Sub cmd_ident_Click()
Sql = "SELECT * FROM Personne"
    Call Execute_Sql
    Call init_combo(c_permaj, RstAdo, RstAdo.Fields(1), RstAdo.Fields(0), RstAdo.Fields(2))
    c_permaj = "Qui ètes vous?"
end sub

dans mes modules se trouve ces deux procedures :

Public Function Execute_Sql() As Boolean
     On Error Resume Next
     RstAdo.Cancel
     RstAdo.Close
     RstAdo.CursorLocation = adUseClient
     RstAdo.Open Sql, CnxAdo, adOpenDynamic, adLockOptimistic
End Function

Public Sub init_combo(combo As Object, rcst As Recordset, rstchamp As Field, Optional rstid As Field, Optional rstchamp2 As Field)
Dim i As Integer
    combo.Clear
    rcst.MoveFirst
    For i = 1 To rcst.RecordCount
        If Not IsNull(rstchamp) Then
            combo.AddItem (rstchamp)
            If Not rstchamp2 Is Nothing Then
                If Not IsNull(rstchamp2) Then
                    combo.List(combo.ListCount - 1) = combo.List(combo.ListCount - 1) & " " & rstchamp2
                End If
            End If
            If Not rstid Is Nothing Then combo.ItemData(i - 1) = rstid
        End If
    rcst.MoveNext
    Next i
End Sub

Après tout avec variant je m'en sort et je peux aller fouetter les autres chat du quartier, mais que c'est enervant de pas piger!!!
0

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
7 mai 2008 à 19:10
Salut,
Je pense qu apres presque un an, tu peux reposter une nouvelle question (si pas deja fait)
@+: Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous