andalo
Messages postés102Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention20 octobre 2012
-
6 août 2007 à 10:59
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDerniè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.
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
andalo
Messages postés102Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention20 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!!!
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
andalo
Messages postés102Date d'inscriptionlundi 23 avril 2007StatutMembreDernière intervention20 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!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?