HELP ME PLEASE... Problème avec Adodc.Recordset!

CYCY07 Messages postés 67 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 22 mai 2006 - 23 août 2005 à 11:39
actu5394 Messages postés 41 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 16 octobre 2005 - 23 août 2005 à 16:09
Bonjour, je suis occupée encore et toujours avec mon projet en VB6...
J'ai donc trois textbox et une listview, il me faut gérer les localités
Lors du chargement de cette feuille là, l'erreur suivante apparait : "Erreur d'exécution "13" Type incompatible...
Je ne comprend pas...

Voici le code de la form_load et le problème en surligné:

Private Sub Form_Load()
ChargementEffectuer = True
'Chargement des ADO et remplissage de la liste des localités
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Vers97.mdb"
Adodc1.CommandType = adCmdTable
Adodc1.RecordSource = "TLocalite"
Adodc1.Refresh


'remplissage de la liste des Codes postaux
ListLoca.ListItems.Clear
For I = 0 To Adodc1.Recordset.RecordCount - 1
Set ligne = ListLoca.ListItems.Add(I + 1, , Adodc1.Recordset("Numero").Value)

ligne.SubItems(1) = Adodc1.Recordset("NCodPos").Value

If Adodc1.Recordset("Nlocalite").Value <> "" Then
ligne.SubItems(2) = Adodc1.Recordset("Nlocalite").Value
Else
ligne.SubItems(2) = ""
End If
If Adodc1.Recordset("Pays").Value <> "" Then
ligne.SubItems(3) = Adodc1.Recordset("Pays").Value
Else
ligne.SubItems(3) = ""
End If

Adodc1.Recordset.MoveNext
Next I


End Sub

Alors en lançant le programme avec le point d'arrêt, il m'indique :
Adodc1.Recordset("Num ero").Value=1

Les bases de données réalisées en access, et bien sûr le champ Numero est en mode NumeroAuto
Voilà que dire de plus...
Si qqun pourrait me dire ce qui ne va pas ce serait vraiment bien car ça fait déjà deux heures que je cherche et rien...
Merci pour tout
Cycy

3 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
23 août 2005 à 12:53
Regarde tes déclarations de variables, cette erreure est souvent généré lorsque tu essaye de donner une valeur à une variable qui n'a pas le bon type (genre insérer une chaine string dans une variable Long)
0
CYCY07 Messages postés 67 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 22 mai 2006
23 août 2005 à 13:41
non mes variables sont bien déclarées il y a :
Dim ligne As ListItem
et ces deux autres variables dans le module
Public Modification As Boolean
Public ChargementEffectuer As Boolean

j'ai un peu modifié le code j'ai cela maintenant

******************************************************************************
Dim ligne As ListItem


Private Sub BAjout_Click()
'Enregistrement de l'ajout ou de la modification
If Text1(0).Text = "" Then
'On doit obligatoirement remplir le code postal
MsgBox "Le code postal doit obligatoirement être renseigné !", vbInformation, "Incomplet!"
Text1(0).SetFocus
Exit Sub
ElseIf Text1(1).Text = "" Then
'On doit obligatoirement remplir la localité
MsgBox "Le champ localité doit obligatoirement être renseigné !", vbInformation, "Nom Incomplet!"
Text1(1).SetFocus
Exit Sub
ElseIf Text1(2).Text = "" Then
'On doit obligatoirement remplir le pays
MsgBox "Le Pays doit obligatoirement être renseigné !", vbInformation, "Nom Incomplet!"
Text1(2).SetFocus
Exit Sub
Exit Sub
End If


Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Vers97.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "TLocalite"
Adodc1.Refresh
'controle si le code postal n'est pas déjà utilisé!
If Adodc1.Recordset.RecordCount > 0 And Modification = False Then
MsgBox "Le code postal existe déjà, veuillez le modifier!", vbInformation, "Code article existant!"
Text1(0).Text = ""
Text1(0).SetFocus
Exit Sub
End If
If Modification = False Then Adodc1.Recordset.AddNew 'Si ce n'est pas une modification on ajoute un article à la table


Adodc1.Recordset("NCodPos").Value = Text1(0).Text
Adodc1.Recordset("Nlocalite").Value = Text1(1).Text
Adodc1.Recordset("Pays").Value = Text1(2).Text
Adodc1.Recordset.Update
Adodc1.Refresh


If Modification = False Then 'Si ce n'est pas une modification on ajoute un article à la list_view et on finit de la remplir
Set ligne = ListLoca.ListItems.Add(FrmArticles.lsiArticles.ListItems.Count + 1, , txtCode.Text)
Else 'Si c'est une modification on reprend la même ligne de la list_view et on finit de la remplir
Set ligne = ListLoca.ListItems.Item(ListLoca.SelectedItem.Index)
End If


ligne.SubItems(1) = Text1(0).Text
ligne.SubItems(2) = Text1(1).Text
ligne.SubItems(3) = Text1(2).Text


ListLoca.Refresh
Modification = False
End Sub


Private Sub Form_Activate()
Text1(0).SetFocus
If ChargementEffectuer = False Then Me.Form_Load
End Sub


Private Sub Form_Load()
ChargementEffectuer = True
'Chargement des ADO et remplissage de la liste des localités
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Vers97.mdb"
Adodc1.CommandType = adCmdTable
Adodc1.RecordSource = "TLocalite"
Adodc1.Refresh


'Adodc2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Vers97.mdb"
'Adodc2.CommandType = adCmdText


ListLoca.ListItems.Clear
' on se place au début de la table Article
Adodc1.Recordset.MoveFirst
' tant qu'on est pas à la dernière ligne de la table TLocalite
For j = 0 To Adodc1.Recordset.RecordCount - 1
Set ligne = ListLoca.ListItems.Add(j + 1, , Adodc1.Recordset.Fields(0))

ligne.SubItems(1) = Adodc1.Recordset(1)

If Adodc1.Recordset.Fields(2) <> "" Then
ligne.SubItems(2) = Adodc1.Recordset.Fields(2)
Else
ligne.SubItems(2) = ""
End If
If Adodc1.Recordset.Fields(3) <> "" Then
ligne.SubItems(3) = Adodc1.Recordset.Fields(3)
Else
ligne.SubItems(3) = ""
End If
' on passe à la ligne suivante
Adodc1.Recordset.MoveNext
Next j


End Sub


Private Sub Form_Unload(Cancel As Integer)
End
End Sub



Private Sub ListLoca_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
'tri des fournisseurs par collones
ListLoca.Sorted = True
Select Case ColumnHeader
Case "Numero"
ListLoca.SortKey = 0
Case "NCodPos"
ListLoca.SortKey = 1
Case "Nlocalite"
ListLoca.SortKey = 2
Case "Pays"
ListLoca.SortKey = 3
End Select
If ListLoca.SortOrder = lvwAscending Then
ListLoca.SortOrder = lvwDescending
Else
ListLoca.SortOrder = lvwAscending
End If
ListLoca.Sorted = False
End Sub
**************************************************************************************
voilà tout mon code pour cette F_Localite
0
actu5394 Messages postés 41 Date d'inscription jeudi 25 avril 2002 Statut Membre Dernière intervention 16 octobre 2005
23 août 2005 à 16:09
Bonjour,
Ton erreur intervient-elle à la première itération de ta boucle ?
0
Rejoignez-nous