Migration VB4 > vb6

cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009 - 5 janv. 2009 à 15:03
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009 - 8 janv. 2009 à 11:14
Bonjour

Je migre un petit logiciel écrit en vb4 en vb6 dont voici quelques lignes de code


TOURNEE.Visible = True
Dim ds As Dynaset
Dim db As Database
Dim sql As String
Dim GDB As Database
'On Error Resume Next
Combo1.Clear
Set db = DBEngine.Workspaces(0).OpenDatabase("C:\COLIS\CHRONO.MDB")
sql = "SELECT DISTINCT TOURNEE FROM CHRONO"
Set ds = db.CreateDynaset(sql)
    Do While ds.EOF = False
    If Trim(ds(code)) <> "" Then
    If ds(code) = "FD" Then
    Combo1.AddItem "FD "
    Else
    Combo1.AddItem ds(code).Value
    End If
    End If
    ds.MoveNext
    Loop
    ds.Close
  Combo1 = Combo1.List(code)

A la ligne ecrit en rose, j'ai le message suivant :
Item not found in this collection

Le programme fonctionne en vb4.

Avez vous une idée ? Je veux juste récuper dans une combo des valeurs d'une base de donnée Acess.

Merci d'avance

dumedo

5 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 janv. 2009 à 15:45
salut,

le fonctionnement des bases a particulièrement évolué

passe par ADO et assure toi d'avoir le dernier MDAC (2.8 + sp1)
http://www.microsoft.com/downloads/details.aspx?familyid=6c050fe3-c795-4b7d-b037-185d0506396c&displaylang=fr

ensuite tu peux par exemple utiliser cette classe :

http://www.codyx.org/snippet_connexion-base-donnees-access_107.aspx#1907






et ton code devient plus ou moins çà :






Option Explicit


Private 
ADO 
As 
New Class1 
'<- le nom que tu as
enregistré pour le snippet depuis CODYX.ORG






Private Sub 
Form_Load()

    TOURNEE.Visible = True
    Combo1.Clear

    ADO.DBConnect "C:\COLIS\CHRONO.MDB"
    ADO.RSExecute "SELECT DISTINCT TOURNEE
FROM CHRONO"
    
    Do While Not ADO.RS.EOF
        If Not IsNull(ADO.RS!code) Then
            If Len(Trim$(ADO.RS!code)) > 0 Then
                If ADO.RS!code = "FD" Then
                    Combo1.AddItem "FD
"
                Else
                    Combo1.AddItem ADO.RS!code
                End If
            End If
        End If
        ADO.RS.MoveNext
    Loop
    ADO.RS.Close
    
    Combo1 = Combo1.List(code)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set ADO = Nothing
End Sub





<small>
[../code.aspx?ID=39466 Coloration VB6, VBA,
VBS]
</small>




++


<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009
5 janv. 2009 à 16:07
Bonsoir

Après essai message d'erreur "un objet est requis" sur
ADO.DBConnect "C:\COLIS\CHRONO.MDB"

Avez vous une idée

Cordialement

dumedo
0
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009
5 janv. 2009 à 16:27
Bonsoir

le message précedent n'est pas passé

Merci beaucoup de ton aide et pour la rapidité de la réponse.
Comment vérifier ma version de MDAC ?


Merci d'avance


dumedo
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 janv. 2009 à 16:51
tu peux tester ce code :




http://www.codyx.org/snippet_connaitre-version-mdac-installe_511.aspx








NB : "
ADO.DBConnect

" attend des arguments optionnels, le dernier étant selon la version de ta base de données.
mais de toute façon sans le bon mdac c'est normal que tu aies des erreurs....

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0

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

Posez votre question
cs_DUMEDO Messages postés 19 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 9 septembre 2009
8 janv. 2009 à 11:14
bonjour

Après avoir planché, voici le code très simple que j'ai écris et qui fonctionne.
En tout cas merci beaucoup pour ton aide "PCPT".

dumedo

Dim DataBaseFile As String
  Dim RstQuery As Recordset
  Dim strsql As String
  TOURNEE.Visible = True
  Combo1.Clear
 
  DataBaseFile = "C:\COLIS\CHRONO.MDB"
  Set db = OpenDatabase(DataBaseFile)
  strsql = "SELECT DISTINCT TOURNEE FROM CHRONO"
    Set RstQuery = db.OpenRecordset(strsql)
    If Not (RstQuery.BOF And RstQuery.EOF) Then
        Do While Not RstQuery.EOF
            MAPRINT.Combo1.AddItem RstQuery.Fields("tournee").Value
            RstQuery.MoveNext
        Loop
       
    End If
0
Rejoignez-nous