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:
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 create procedure ajoutClient @nom varchar(30), @civilite varchar(10), @prenom varchar(30) as insert into client values(@civilite,@nom,@prenom)
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 :
Voila j'espere avoir été assez complet pour ceux qui voudront bien m'aider
Code : Sélectionner tout - Visualiser dans une fenêtre à part procStock.Parameters.Append param![]()
Partager