Bonjour,
Lorsque je veux ouvrir mon formulaire [Choisir les accompagnements], j’obtiens le message d’erreur suivant :
Erreur d’exécution ‘13’ :
Incompatibilité de type
J’essaie de trouver le problème, sans toutefois y parvenir, si vous pourriez m’aider, ce serait super.
NOTES : Source : [Produits-Accompagnements Requête]
Sur ce formulaire on y trouve 30 boutons commandes « ACCOMP1 » à « ACCOMP30 », voici l’évènement sur clic :
Chacun des boutons ont exactement le même code, jusqu’au 30ième.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub ACCOMP1_Click() DoCmd.OpenForm "Choisir les remplacements", acNormal, OpenArgs:=1 ‘Ce formulaire [Choisir les remplacements] a pour but de sélectionner un produit de remplacement pour un accompagnement spécifique, je l’explique en détails avec le code un peu plus loin dans cette discussion.’ End Sub
À la fin du formulaire j’ai ce code qui me donne le message d’erreur mentionné ci-dessus :
Le débogage met en surbrillance la section qui débute par « Forms »
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Form_Open(Cancel As Integer) For I = 1 To 30 Forms("Choisir les accompagnements").Controls("ACCOMP" & I).Caption = DLookup("Accompagnement", "Accompagnements", "[AccompID]=" & I) Next I End Sub
Voici les champs de ma table [Accompagnements] ainsi que leurs types :
Nom du champ Type de données
AccompID NuméroAuto (Entier long, Incrément, Indexé=Non, Aligner le texte=Général)
Accompagnement Texte (Taille du champ=55, Masque de saisie=>Cx55, Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Oui avec doublons, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun)
memPropertyPhotoLink Memo ( Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Non, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun, Format du texte= Texte brut, Aligner le texte=Général)
[Produits-Accompagnements Requête] :
Basé sur la table [Accompagnements] avec les 3 champs
Formulaire [Choisir les remplacements] :
Sur ce formulaire on y trouve 30 boutons commandes « REMPLA1 » à « REMPLA30 », voici l’évènement sur clic :
NOTES : Source : [Produits-Remplacements Requête]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub REMPLA1_Click() DoCmd.OpenForm "Détails commande2", acNormal, OpenArgs:=Me!Attaché & ";" & Me!REMPLA1.Tag Ce formulaire [Détails commande2] a pour but de retrouver les remplacements pour un accompagnement spécifique, vu que mon erreur ne provient pas de ce formulaire, car il ouvre sans problème, je nélaborerai pas plus en détails car il est très volumineux. End Sub
Basé sur la table [Remplacements] avec les 4 champs
Plus de détails :
Ce formulaire [Choisir les remplacements] a pour but de sélectionner un produit de remplacement pour un accompagnement spécifique, voici le code sur chargement :
J’ai créé une requête vide et je l’ai placé en Vue SQL pour vérifier le SQL de mon formulaire comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Private Sub Form_Load() On Error GoTo ErrHand Dim rs As DAO.Recordset Dim lngLoop As Long Dim strSQL As String If IsNull(Me.OpenArgs) = False Then Me!Attaché = Me.OpenArgs strSQL = "SELECT DISTINCTROW Remplacements.RemplaID, Remplacements.Remplacement " & _ "FROM Produits INNER JOIN Remplacements " & _ "ON Produits.Remplacement = Remplacements.RemplaID " & _ "WHERE Produits.Remplacement = " & Me.OpenArgs & " " & _ "ORDER BY Remplacements.RemplaID" Set rs = CurrentDb.OpenRecordset(strSQL) lngLoop = 0 Do While rs.EOF = False lngLoop = lngLoop + 1 If lngLoop > 30 Then MsgBox "Désolé: Il ne peut avoir plus de 30 remplacements.", vbCritical + vbYesNo Exit Do End If With Me.Controls("REMPLA" & lngLoop) .Caption = rs!Remplacement .Tag = rs!RemplaID .Visible = True End With rs.MoveNext Loop End If lngLoop = lngLoop + 1 Do While lngLoop <= 30 Me.Controls("REMPLA" & lngLoop).Visible = False lngLoop = lngLoop + 1 Loop Cleanup: On Error Resume Next rs.Close Set rs = Nothing Exit Sub ErrHand: MsgBox Err.Number & ": " & Err.Description Resume Cleanup End Sub
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part SELECT DISTINCTROW Remplacements.RemplaID, Remplacements.Remplacement FROM Produits INNER JOIN Remplacements ON Produits.Remplacement = Remplacements.RemplaID WHERE Produits.Remplacement = " & Me.OpenArgs & " ORDER BY Remplacements.RemplaID
Car je soupçonne que c’est cette section qui me génère cette erreur, mais je n’ai pas trouvé de solution jusqu’à présent.
J’ai également eu un message d’erreur en Vue SQL quelque peu différent mais qui citait :
« Type de données incompatible dans l’expression du critère »
Voici les champs de ma table [Remplacemements] ainsi que leurs types :
Nom du champ Type de données
RemplaID NuméroAuto (Entier long, Incrément, Indexé=Non, Aligner le texte=Général)
Remplacement Texte (Taille du champ=55, Masque de saisie=>Cx55, Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Oui avec doublons, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun)
memPropertyPhotoLink Memo ( Null interdit=Non, Chaine vide autorisée=Oui, Indexé=Non, Compression Unicode=Oui, Mode IME=Aucun contrôle, Mode de formulation IME=Aucun, Format du texte= Texte brut, Aligner le texte=Général)
AttachéRemplacement Numérique (Taille du champ=Entier long, Incrément, Null Interdit=Non, Indexé=Non, Aligner le texte=Général)
Et pour terminer, les champs « Accompagnement » et « Remplacement » sont sur la table [Produits], en voici les détails :
Nom du champ Type de données
Accompagnement Numérique (Entier long,Décimales= Auto, Null interdit-Non, Indexé=Oui avec doublons, Aligner le texte=Général)
Remplacement Numérique (Entier long,Décimales= Auto, Null interdit-Non, Indexé=Oui avec doublons, Aligner le texte=Général)
Si de plus amples informations vous sont nécessaires, n’hésitez pas à me contacter, il me fera plaisir de vous répondre rapidement.
Claude du Québec.








Répondre avec citation






Partager