OK ba c'est ce que j'ai fait, mais j'ai toujours pas de zéro avant mes numéro de telephone
OK ba c'est ce que j'ai fait, mais j'ai toujours pas de zéro avant mes numéro de telephone
Re
Remets ton code complet après toutes les transformations que tu as fait.
Starec
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106 Private Sub cmdValider_click() Dim sql, Mail, Pays, Ville, erreur, Societe, NomInterlocuteur, PrenomInterlocuteur, Adresse, CP, Portable, Fixe, Fax As String Dim ID_Fournisseur As Integer Dim oRst As DAO.Recordset Dim odb As DAO.Database 'Test si des champs sont null : si oui message d'erreur et arrrét If IsNull(Me.txtNomSociéte) Or IsNull(Me.txtNomInterlocuteur) Or IsNull(Me.txtPrenomInterlocuteur) Or IsNull(Me.txtAdresse) Or IsNull(Me.txtCP) Or IsNull(Me.txtVille) Or IsNull(Me.txtTélFixe) Then MsgBox ("Merci de Remplir les champs Obligatoires") Exit Sub End If 'Test si le téléphone fixe est bien une suite de nombre : si non message d'erreur et arrrét If Not IsNumeric(Me.txtTélFixe) Then MsgBox ("Le téléphone doit étre une suite de chiffre") Exit Sub End If 'Test si le téléphone portable est bien une suite de nombre : si non message d'erreur et arrrét If Not IsNull(Me.txtTélPortable) And Not IsNumeric(Me.txtTélPortable) Then MsgBox ("Le téléphone doit étre une suite de chiffre") Exit Sub End If 'Test si le fax est bien une suite de nombre : si non message d'erreur et arrrét If Not IsNull(Me.txtFax) And Not IsNumeric(Me.txtFax) Then MsgBox ("Le fax doit étre une suite de chiffre") Exit Sub End If 'Affectation des valeur correspondantes aux variables Sociéte = UCase(Me.txtNomSociéte) NomInterlocuteur = UCase(Me.txtNomInterlocuteur) PrenomInterlocuteur = Me.txtPrenomInterlocuteur Adresse = Me.txtAdresse CP = Me.txtCP Ville = Me.txtVille Pays = Me.txtPays 'si le champs telephone portable n'est pas remplit alors il prend la valeur 0 If IsNull(Me.txtTélPortable) Then Portable = 0 Else Portable = Me.txtTélPortable End If Fixe = Me.txtTélFixe 'si le champs fax n'est pas remplit alors il prend la valeur 0 If IsNull(Me.txtFax) Then Fax = 0 Else Fax = Me.txtFax End If 'si le champs mais n'est pas remplit alors il prend la valeur null If IsNull(Me.txtEmail) Then Mail = Null Else Mail = Me.txtEmail End If 'on remplace les apostrophe pas des doubles apostrophes sinon la réquéte ne fonctionne pas Sociéte = Replace(Sociéte, "'", "''") NomInterlocuteur = Replace(NomInterlocuteur, "'", "''") PrenomInterlocuteur = Replace(PrenomInterlocuteur, "'", "''") Adresse = Replace(Adresse, "'", "''") Ville = Replace(Ville, "'", "''") Pays = Replace(Pays, "'", "''") Set odb = CurrentDb 'réquete qui permet de connaitre le nombre de resultat que renvoie la réquéte qui cherche l'ID du fournisseur ayant le nom et le nom d'intelocuteur entrée sql = "SELECT Count(*) FROM (SELECT ID_Fournisseur FROM tbl_Fournisseurs where NomDeLaSociété = '" & Sociéte & "' and NomDeLinterlocuteur = '" & NomInterlocuteur & "' ) " Set oRst = odb.OpenRecordset(sql, dbOpenDynaset) oRst.OpenRecordset 'si la réquete précédente renvoie un nombre différent de 0 alors la sociéte et le nom de l'interlocteur existe deja : message erreur et arrét If oRst.Fields(0).Value <> 0 Then If Not (oRst.EOF) Then message = MsgBox("L'interlocuteur " & PrenomInterlocuteur & " " & NomInterlocuteur & " de la sociéte " & Sociéte & " est deja présent dans la base, vous ne pouvez l'ajouter une deuxiéme fois", vbCritical, "Doublon") Exit Sub End If End If 'sinon recherche du prochain ID_fournisseur 'on selectionne le maximum du champ ID_Fournisseur sql = "SELECT ID_Fournisseur FROM tbl_Fournisseurs where ID_Fournisseur =(SELECT MAX(ID_Fournisseur) FROM tbl_Fournisseurs)" Set oRst = odb.OpenRecordset(sql, dbOpenDynaset) 'on lui additionne 1 ID_Fournisseur = oRst.Fields("ID_Fournisseur").Value + 1 'requete d'insertion dans la table tbl_Fournisseurs les valeurs sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')" 'Excecution de la requete odb.Execute (sql) message = MsgBox("Le fournisseur " & Sociéte & " a été correctement ajouté", vbInformation, "Ajout") oRst.Close odb.Close Set oRst = Nothing Set odb = Nothing DoCmd.Close End Sub
Ba si j'ai fait de nouvelles saisies depuis mon formulaire, et sa ne me met pas de zéro, je pense donc que le problème vient du formulaire et non de la table, par ce que les numéro dont j'i rajouté des zéros dans la table y reste.
Re
Tu n'as pas bien lu tout ce que j'ai écrit.
Sur cette ligne
Seule la variable Fax est de type String, toutes les autres sont de typesvariant, ce qui fait qu'Access dit s'il trouve des chiffres, et bien je dis que c'est un numérique, donc tout merde derrière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim sql, Mail, Pays, Ville, erreur, Societe, NomInterlocuteur, PrenomInterlocuteur, Adresse, CP, Portable, Fixe, Fax As String
Il faut absolument que toutes tes variables soient correctement définies en String, ce qui n'est pas le cas ici.
Refait une ligne par variable pour être sûr de ne pas te tromper. Chaque variable doit avoir son type.
Starec
Sa ne change rien!!!
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135 Private Sub cmdValider_click() Dim sql As String Dim Mail As String Dim Pays As String Dim Ville As String Dim erreur As String Dim Societe As String Dim NomInterlocuteur As String Dim PrenomInterlocuteur As String Dim Adresse As String Dim CP As String Dim Portable As String Dim Fixe As String Dim Fax As String Dim ID_Fournisseur As Integer Dim oRst As DAO.Recordset Dim odb As DAO.Database 'Test si des champs sont null : si oui message d'erreur et arrrét If IsNull(Me.txtNomSociéte) Or IsNull(Me.txtNomInterlocuteur) Or IsNull(Me.txtPrenomInterlocuteur) Or IsNull(Me.txtAdresse) Or IsNull(Me.txtCP) Or IsNull(Me.txtVille) Or IsNull(Me.txtTélFixe) Then MsgBox ("Merci de Remplir les champs Obligatoires") Exit Sub End If 'Test si le téléphone fixe est bien une suite de nombre : si non message d'erreur et arrrét If Not IsNumeric(Me.txtTélFixe) Then MsgBox ("Le téléphone doit étre une suite de chiffre") Exit Sub End If 'Test si le téléphone portable est bien une suite de nombre : si non message d'erreur et arrrét If Not IsNull(Me.txtTélPortable) And Not IsNumeric(Me.txtTélPortable) Then MsgBox ("Le téléphone doit étre une suite de chiffre") Exit Sub End If 'Test si le fax est bien une suite de nombre : si non message d'erreur et arrrét If Not IsNull(Me.txtFax) And Not IsNumeric(Me.txtFax) Then MsgBox ("Le fax doit étre une suite de chiffre") Exit Sub End If 'Affectation des valeur correspondantes aux variables Sociéte = UCase(Me.txtNomSociéte) NomInterlocuteur = UCase(Me.txtNomInterlocuteur) PrenomInterlocuteur = Me.txtPrenomInterlocuteur Adresse = Me.txtAdresse CP = Me.txtCP Ville = Me.txtVille Pays = Me.txtPays 'si le champs telephone portable n'est pas remplit alors il prend la valeur 0 If IsNull(Me.txtTélPortable) Then Portable = 0 Else Portable = Me.txtTélPortable End If Fixe = Me.txtTélFixe 'si le champs fax n'est pas remplit alors il prend la valeur 0 If IsNull(Me.txtFax) Then Fax = 0 Else Fax = Me.txtFax End If 'si le champs mais n'est pas remplit alors il prend la valeur null If IsNull(Me.txtEmail) Then Mail = Null Else Mail = Me.txtEmail End If 'on remplace les apostrophe pas des doubles apostrophes sinon la réquéte ne fonctionne pas Sociéte = Replace(Sociéte, "'", "''") NomInterlocuteur = Replace(NomInterlocuteur, "'", "''") PrenomInterlocuteur = Replace(PrenomInterlocuteur, "'", "''") Adresse = Replace(Adresse, "'", "''") Ville = Replace(Ville, "'", "''") Pays = Replace(Pays, "'", "''") Set odb = CurrentDb 'réquete qui permet de connaitre le nombre de resultat que renvoie la réquéte qui cherche l'ID du fournisseur ayant le nom et le nom d'intelocuteur entrée sql = "SELECT Count(*) FROM (SELECT ID_Fournisseur FROM tbl_Fournisseurs where NomDeLaSociété = '" & Sociéte & "' and NomDeLinterlocuteur = '" & NomInterlocuteur & "' ) " Set oRst = odb.OpenRecordset(sql, dbOpenDynaset) oRst.OpenRecordset 'si la réquete précédente renvoie un nombre différent de 0 alors la sociéte et le nom de l'interlocteur existe deja : message erreur et arrét If oRst.Fields(0).Value <> 0 Then If Not (oRst.EOF) Then message = MsgBox("L'interlocuteur " & PrenomInterlocuteur & " " & NomInterlocuteur & " de la sociéte " & Sociéte & " est deja présent dans la base, vous ne pouvez l'ajouter une deuxiéme fois", vbCritical, "Doublon") Exit Sub End If End If 'sinon recherche du prochain ID_fournisseur 'on selectionne le maximum du champ ID_Fournisseur sql = "SELECT ID_Fournisseur FROM tbl_Fournisseurs where ID_Fournisseur =(SELECT MAX(ID_Fournisseur) FROM tbl_Fournisseurs)" Set oRst = odb.OpenRecordset(sql, dbOpenDynaset) 'on lui additionne 1 ID_Fournisseur = oRst.Fields("ID_Fournisseur").Value + 1 'requete d'insertion dans la table tbl_Fournisseurs les valeurs sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')" 'Excecution de la requete odb.Execute (sql) message = MsgBox("Le fournisseur " & Sociéte & " a été correctement ajouté", vbInformation, "Ajout") oRst.Close odb.Close Set oRst = Nothing Set odb = Nothing DoCmd.Close End Sub Private Sub Form_Load() Me.cmdValider.BackColor = RGB(230, 242, 255) With Me.cmdValider .MousePointer = 99 .MouseIcon = LoadPicture(Application.CurrentProject.Path & "\Data\Harrow.cur") End With With Me.cmdValider .Picture = LoadPicture(Application.CurrentProject.Path & "\Data\Valider.jpg") .Caption = "Le Texte" End With End Sub
Je n'ai jamais vu sa c'est bizzard non? Tu est sur que l'on est obligé de procédé comme sa a chaque fois?
Non tu n'est pas obligé, lis bien les messages :
si tu veux faire tous sur une meme ligne :
et non :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim variable1 as String, variable2 as String, Variable 3 as String ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part Dim variable1, variable2, Variable 3 as String ...
Re
Non, on peut tout mettre sur la même ligne, mais en mettant à chaque variable son type. Cette présentation est plus claire (avis personnel).
Quels sont les types de champs dans ta table ?
Car sur cette requête d'insertion
Il y a des champs non entourés de simples quotes, donc du numérique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'requete d'insertion dans la table tbl_Fournisseurs les valeurs sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')"
Starec
Ba il étaient en numérique avant, je vais les ai repassé en texte, mais je n'ai pas rechanger la syntaxe dans la requete. je vais essayer.
Merci
Ce qui a déjà été saisi risque de ne pas être modifié.
Starec
OK sa marche merci. Dans tou mon code de tout mes formulaires, il faut que je remette se type de syntaxe pour les DIM ... as String, ... as String....
Paske en fait j'ai fait une GMAO sur ACCESS Donc j'ai énormément de formulaire, mais si c'est primordial je vais le faire.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager