Salut alors voici le topo ; je crée une appli sous access client/serveur avec une base de donnée sur SQL server.
Sur cette base , j'ai donc une procédure stockée basique:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
create procedure ajoutClient
  @nom varchar(30),
  @civilite varchar(10),
  @prenom varchar(30)
as
 
    insert into client values(@civilite,@nom,@prenom)
Et j'ai sous access un formulaire dans lequel je saisie dans des champs texte , civilité, nom ,prénom puis s'en suit un click .

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
Private Sub insertion_Click()
    Dim procStock As ADODB.Command
    Set procStock = CreateObject("ADODB.Command")
    procStock.ActiveConnection = CurrentProject.Connection
    procStock.CommandType = adCmdStoredProc
    procStock.CommandText = "ajoutClient"
    Dim param As Parameter
    Dim nom As String
    Dim civilite As String
    Dim prenom As String
 
 
    If IsNull(Me.nomAjout) Or IsNull(Me.civiliteAjout) Or IsNull(Me.prenomAjout) Then
        MsgBox ("Des informations sont manquantes !")
 
    Else
         nom = nomAjout.Value
         civilite = civiliteAjout.Value
         prenom = prenomAjout.Value
 
 
          ' déclarer le retour en premier et mettre une value arbitraire
 
          Set param = procStock.CreateParameter("@civilite", adChar, adParamInput, , civilite)
          procStock.Parameters.Append param
          Set param = procStock.CreateParameter("@nom", adChar, adParamInput, , nom)
          procStock.Parameters.Append param
          Set param = procStock.CreateParameter("@prenom", adChar, adParamInput, , prenom)
          procStock.Parameters.Append param
          procStock.Execute
 
            MsgBox ("Ajout effectué")
            nomAjout.Value = ""
            civiliteAjout.Value = ""
            prenomAjout.Value = ""
 
 
 
    End If
 
End Sub

Ma table Client se compose comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE [Client] (
	[id] [int] IDENTITY (1, 1) NOT NULL ,
	[civilite] [char] (4) COLLATE French_CI_AS NOT NULL ,
	[nom] [char] (32) COLLATE French_CI_AS NOT NULL ,
	[prenom] [varchar] (40) COLLATE French_CI_AS NULL ,
	CONSTRAINT [PK_CLIENT] PRIMARY KEY  CLUSTERED 
	(
		[id]
	)  ON [PRIMARY] ,
	 CHECK ([civilite] = 'Mlle' or ([civilite] = 'Mme' or [civilite] = 'M.'))
) ON [PRIMARY]
GO

Mon problème est que lorsque d'une je teste la procédure ( hors formulaire) il me demande bien la civilité, le prénom mais pas le nom et m'insert "Microsoft Access" dans ma colonne nom ><

Et second probleme , lorsque je click sur "insertion" voici l'erreur :

Erreur d'execution 3708:

Objet Parameter défini de maniere incorrecte.Des informations incohérentes ou incompletes ont été fournies.


ceci pointant sur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
procStock.Parameters.Append param
Voila j'espere avoir été assez complet pour ceux qui voudront bien m'aider