Recordset "incompatibilité de type"

vanyou Messages postés 17 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 28 décembre 2004 - 28 déc. 2004 à 09:48
vanyou Messages postés 17 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 28 décembre 2004 - 28 déc. 2004 à 10:38
Bonjour, j'ai un problème d'"incompatibilité de type" à mon recordset

Private Sub Commande46_Click()

Dim num_clt As Integer
num_clt = CInt(Me.num_client)

Dim db As Database
Set db = DBEngine(0)(0)
Dim rs As Recordset

Dim sel As String
sel = "SELECT CodeCSP, cheque FROM Officines ORDER BY CodeCSP ASC"
Set rs = db.OpenRecordset(sel)

Dim i As Integer
Dim j As Boolean
Dim p As Integer
Dim d As Integer
Dim nb As Integer

p = CInt(Me.premier) ' premier n° de chèque
d = CInt(Me.dernier) ' dernier n° de chèque
nb = d - p + 1 ' nombre de clients à affecter

i = 1
j = False

While Not rs.EOF
If j = False Then
If rs("CodeCSP") = num_clt Then DoCmd.RunSQL ("update Officines set cheque p where CodeCSP " & rs("CodeCSP") & "")
i = i + 1
p = p + 1
j = True
End If
Else
If i <= nb Then DoCmd.RunSQL ("update Officines set cheque p where CodeCSP " & rs("CodeCSP") & "")
i = i + 1
p = p + 1
End If
End If
Wend

End Sub

en espérant que quelqu'un puisse m'aider,
d'avance merci
vanyou

1 réponse

vanyou Messages postés 17 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 28 décembre 2004
28 déc. 2004 à 10:38
Rebonjour....

J'ai résolu mon pb :

'Dim rs As Recordset => il fallait remplacé ça par :
Dim rs As Object

Et ça
'Set rs db.OpenRecordset(sel)> par :
Set rs = CurrentDb.OpenRecordset(sel)

Mais maintenant je crois que j'ai un réel pb d'algo...
En fait ce que doit faire l'appli :
- l'utilisateur saisis :
- un premier n° (p) et un dernier n° (d) à affecter à un champs : soit 1 et 10 (soit (10-1+1) enregistrements à updater (nb))
- et le "premier" n° de l'enregistrement à updater (num_clt)

Seulement ça tourne dans le vide et au final j'ai affecté le "10" au premier enregistrement au lieu de par exemple si p=1, d=10, num_clt=1 :

> num_clt=1, monchamps=1
> num_clt=2, monchamps=2
.....
> num_clt=10, monchamps=10

voilà le code :

Private Sub Commande46_Click()

    Dim num_clt As Integer
    num_clt = Me.num_client

    Dim db As Database
    Set db = DBEngine(0)(0)
    Dim rs As Object
    
    Dim sel As String
    sel = "SELECT CodeCSP, cheque FROM Officines ORDER BY CodeCSP ASC"
    Set rs = CurrentDb.OpenRecordset(sel)
        
    Dim i As Integer
    Dim j As Boolean
    Dim p As Integer
    Dim d As Integer
    Dim nb As Integer

    p = Me.premier ' premier n° de chèque
    d = Me.dernier ' dernier n° de chèque
    nb = d - p + 1 ' nombre de clients à affecter

    i = 1
    j = False

    While Not rs.EOF
        If j = False Then
            If rs("CodeCSP") = num_clt Then                DoCmd.RunSQL ("update Officines set cheque " & p & " where CodeCSP " & rs("CodeCSP") & "")
                i = i + 1
                p = p + 1
                j = True
            End If
        Else
            If i <= nb Then                DoCmd.RunSQL ("update Officines set cheque " & p & " where CodeCSP " & rs("CodeCSP") & "")
                i = i + 1
                p = p + 1
            End If
        End If
    Wend

End Sub


d'avance Merci à qui pourra m'aider.
vanyou
0
Rejoignez-nous