Bonjour,

Je suis débutante, après avoir rempli tous les champs je reçois cette erreur "could not find stored procedure 'select max( 'id contrat') from contrat"

sachant que id contrat est un champ auto incrémenté.

voici mon code :

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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
Public Class Ajouter_un_contrat
 
    Private sql2 As New SQLControl
 
    Dim cmd As New SqlCommand 
 
    Dim marequete As String
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        sql2.SQLcon.ConnectionString = "server=**********;Database=ContratMaintenance;User=sa;Pwd=********;"
 
            Try
 
                sql2.SQLcon.Open()
 
            If sql2.SQLcon.State = ConnectionState.Open Then
 
                cmd.CommandType = CommandType.StoredProcedure
 
                marequete = "spCONTRAT"
 
                With cmd.Parameters
 
                    .Add(New SqlParameter("@DureeContrat", SqlDbType.Int, 2))
 
                    .Add(New SqlParameter("@ModeRenouvelement", SqlDbType.NChar, 30))
 
                    .Add(New SqlParameter("@DateDebut", SqlDbType.Date))
 
                    .Add(New SqlParameter("@DateFin", SqlDbType.Date))
 
                    .Add(New SqlParameter("@TVAContrat", SqlDbType.Float, 4))
 
                    .Add(New SqlParameter("@MontantContrat", SqlDbType.Float, 25))
 
                    .Add(New SqlParameter("@PourcTrancheContrat", SqlDbType.Real, 2))
 
                    .Add(New SqlParameter("@MontantTranche", SqlDbType.Real, 2))
 
                    .Add(New SqlParameter("@TypeMaintenance", SqlDbType.VarChar, 30))
 
                End With
 
                With cmd
 
                    .Parameters("@DureeContrat").Value = DureeContrat.Text
 
                    .Parameters("@ModeRenouvelement").Value = ModeRenouvelement.Text
 
                    .Parameters("@DateDebut").Value = DateDebut.Text
 
                    .Parameters("@DateFin").Value = DateFin.Text
 
                    .Parameters("@TVAContrat").Value = TVA.Text
 
                    .Parameters("@MontantContrat").Value = MontantContrat.Text
 
                    .Parameters("@PourcTrancheContrat").Value = PourcentageTranche.Text
 
                    .Parameters("@MontantTranche").Value = MontantTranche.Text
 
                    .Parameters("@TypeMaintenance").Value = TypeMaintenance.Text
 
                End With
 
                cmd.Connection = sql2.SQLcon 
 
                cmd.ExecuteNonQuery() 
 
                MsgBox("Ajouté avec succès", MsgBoxStyle.Information, "Ajout")
 
            Else
 
                MsgBox("vous devez remplir tous les champs", MsgBoxStyle.Exclamation, "Attention")
 
            End If
 
            sql2.SQLcon.Close()
 
            autogenerate()
 
            DureeContrat.Clear()
 
            ModeRenouvelement.Clear()
 
            TVA.Clear()
 
            MontantContrat.Clear()
 
            PourcentageTranche.Clear()
 
            MontantTranche.Clear()
 
            TypeMaintenance.Clear()
 
            cmd.Parameters.Clear()
 
            DureeContrat.Focus()
 
        Catch ex As Exception
 
            MsgBox(ex.Message)
 
            If sql2.SQLcon.State = ConnectionState.Open Then
 
                sql2.SQLcon.Close()
 
            End If
 
        End Try
 
    End Sub
 
    Private Sub autogenerate()
 
        Try
 
            sql2.SQLcon.Open()
 
            Dim number As Integer
 
            cmd.CommandType = CommandType.Text
 
            cmd.CommandText = "Select Select max(idcontrat) from Contrat "
 
            cmd.Connection = sql2.SQLcon
 
            If IsDBNull(cmd.ExecuteScalar) Then
 
                number = 1
 
                ListBox1.Items.Add(number)
 
            Else
 
                number = cmd.ExecuteScalar + 1
 
                ListBox1.Items.Add(number)
 
            End If
 
            cmd.Dispose() 
 
            sql2.SQLcon.Close()
 
            sql2.SQLcon.Dispose()
 
        Catch ex As Exception
 
            MsgBox(ex.Message)
 
            If sql2.SQLcon.State = ConnectionState.Open Then
 
                sql2.SQLcon.Close()
 
            End If
 
        End Try
 
    End Sub
Voici le code de la procédure stockée :

Code SQL : 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
ALTER PROCEDURE [dbo].[spCONTRAT]
 
@DureeContrat int= null,
 
@ModeRenouvelement nchar(30)= null,
 
@DateDebut date= null,
 
@DateFin date= null,
 
@TVAContrat float(4)= null,
 
@MontantContrat float(25)= null,
 
@PourcTrancheContrat real= null,
 
@MontantTranche real= null,
 
@TypeMaintenance varchar(50)= null
 
AS
 
BEGIN
 
SET NOCOUNT ON;
 
    insert into [dbo].[Contrat]
 
([DureeContrat]
 
, [ModeRenouvelement]
 
,[DateDebut]
 
,[DateFin]
 
,[TVAContrat]
 
,[MontantContrat]
 
,[PourcTrancheContrat]
 
    ,[MontantTranche]
 
,[TypeMaintenance])
 
values
 
(   @DureeContrat,
 
@ModeRenouvelement,
 
@DateDebut,
 
@DateFin ,
 
@TVAContrat ,
 
@MontantContrat ,
 
@PourcTrancheContrat ,
 
@MontantTranche,
 
@TypeMaintenance 
 
)
 
END
 
execute spCONTRAT

j'ai fais des recherches j'ai lu que le select max avec identity provoque des problèmes, Pouvez vous m'aidez a trouver l'erreur