Probleme de procedure stockée

ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 - 26 mars 2006 à 21:46
poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008 - 24 mai 2006 à 16:36
Bonjour

Je veux ajouter des enregistrements sur une table "Client", je travail avec Web developper express 2005 en ASP.net.
J'ai fais une procédure stockée, pour ajouter mes enregistrements.

sur ma page web lorsque j'ajoute un client, j'ai le message d'erreur suivant:

Détails de l'exception: System.Data.SqlClient.SqlException: Trop d'arguments sont spécifiés pour la procédure ou la fonction AjouterClient.

Voici ma procédure stockée:

PROCEDURE dbo.AjouterClient
@Client_Id int
,@Client_Titre int
,@Client_Nom varchar(50)
,@Client_Prenom varchar(50)
,@Client_Adresse1 varchar(50)
,@Client_Adresse2 varchar(50)
,@Client_Ville varchar(50)
,@Client_Codepostal varchar(5)
,@Client_Tel varchar(10)
,@Client_Port varchar(10)
,@Client_Email varchar(50)
,@Client_Date Datetime
,@Client_Mag int
AS
insert INTO [Client]
([Id_Client], [IdTitre_Client], [Nom_Client], [Prenom_Client], [Adresse1_Client], [Adresse2_Client], [Ville_Client], [CodePostal_Client], [Telephone_Client], [Portable_Client], [Email_Client], [DateCreation_Client], [IdMagasin_Client])
values
(@Client_Id, @Client_Titre, @Client_Nom, @Client_Prenom, @Client_Adresse1, @Client_Adresse2, @Client_Ville, @Client_Codepostal, @Client_Tel, @Client_Port, @Client_Email, @Client_Date, @Client_Mag)
RETURN @@IDENTITY

Je ne comprends pas se qu'il y a qui ne va pas dans ma procedure stocké.
Si vous avez un conseil ou une solution pour regler mon problème, je vous remercie.

MANUANTIBES [:p]

9 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
26 mars 2006 à 21:58
Salut,

A mon avis le problème est dans l'appel, pas dans la procédure.

/*
coq
MVP Visual C#
*/
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
26 mars 2006 à 22:10
Salut Coq

C'est ma premiere procedure, toi tu penses que ma procedure est corect.
je regarde plus cote page.
merci quand meme.

MANUANTIBES [:p]
0
cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
27 mars 2006 à 06:40
salut,

pour tester ta procédure stockée va directement dans la base (utilise query analyser par example) .
si elle fonctionne, c'est un problème dans ta page...

yopyop
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
27 mars 2006 à 21:41
Suite de mon probleme

Je n'arrive pas à lui faire ajouter un enregistrement dans ma table, je n'arrive pas ajouter l' IdClient (key primaire) en automatique.

je se message d'erreur : Impossible d'insérer la valeur NULL dans la colonne 'Id_Client', table 'C:\AMELIE INTRANET\APP_DATA\AMELIE_DATA.MDF.dbo.Client'. Cette colonne n'accepte pas les valeurs NULL. Échec de INSERT.
L'instruction a été arrêtée.

voici mon code:



"InsertCommand="AjouterClient"
InsertCommandType="StoredProcedure"
SelectCommand="SELECT * FROM Client">



IdTitre_Client:

'>

Nom_Client:

'>

Prenom_Client:

'>

Adresse1_Client:

'>

Adresse2_Client:

'>

Ville_Client:

'>

CodePostal_Client:

'>

Telephone_Client:

'>

Portable_Client:

'>
Email_Client:

'>

DateCreation_Client:

'>

IdMagasin_Client:

'>

si vous avez une solution Merci beaucoup !!!

MANUANTIBES [:p]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
23 mai 2006 à 11:16
Salut manuantibes !
j'ai le même problème que toi.
lorsque j'insère mon enregistrement, je ne lui précise pas l'id. C'est à dire que ni le champs, ni le paramètre @id n'est mentionné dans mon insert
Avant d'insérer, je recherche dans ma table la première ligne vide : "select * from [table] where id=0"
et j'insère dans cette ligne.
cette solution m'a été donnée et elle fonctionne, mais j'ai du oublié de faire qq chose dans mon code.
j'ai un reader qui exécute ma requete select, je le ferme et le rouvre pour effectuer mon insertion, et c'est a que ça coince, je pense qu'il y un pb avec mon reader. si qq a une solution ! MERCI
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
23 mai 2006 à 13:54
en faite le problème que j'avais venais de ma table SQL server 2005 ou 2000

en faite mon ID n'etait pas autoincrement,

J'ai vu en  analysant d'autre Table qui marche que l'ID etait en clé primaire et dans les prorietes de la colonne ID je renseigne aussi le champs "Colonne d'identité".

je crois que c'etait ça mon problème.
et ma procedure stocké et ma page etait bonne.

si ça d'aide temp mieux sinon reposte.

Aujourd'hui je fais mais ajout de table par les pages "pagexx.aspx.vb" avec les commandes INTO.
A+

MANUANTIBES [:p]
0
poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
23 mai 2006 à 14:53
Mon id est désigné comme clé primaire dans ma table, c'est tout.
D'ailleurs je ne comprends pas tout dans ton code : où est la requête insert into qui te permet de rajouter un enregistrement dans ta table ??
0
ManuAntibes Messages postés 491 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 18 novembre 2021 5
23 mai 2006 à 19:57
Salut
ton ID doit etre comme

pour l'INTO que tu ne trouves pas dans mon code au dessus, c'est normal.
Au dessus je ne sais pas trop comme faire pour ajouter des enregistrements dans mes tables.
Donc j'ai suivi les tutaux de microsoft à ce lien
http://www.microsoft.com/france/msdn/aspnet/travaux.mspx
Microsoft propose de créé un site sans ecrire de code ou tres peu.
Microsoft travail pour créé le site avec les pages aspx en mode design et en mode source.

Mais ne travail pas en mode VB ou C#.
Dans mon code au dessus j'ai voulu developper mon site comme à fait Microsoft, mais je me suis tres vite bloqué, pour par exemple mettre une date automaiquement dans un champ texte ou recupere le nom du magasin d'une cookie.
Donc j'ai du passé par du code pour faire c'est action.

pour ajouter un enregistrement par le code , la tu utilises INTO

Sur l'image; le cadre du milieu en jaune claire c'est en mode design comme le tutau de Microsoft, et le cadre de droite la c'est le code, et tu y trouves INSERT INTO

au dessu dans le code on trouve

Dim sDate
As
Date =
Date.Now

Dim sMagasin
As Int32 = Int32.Parse(
CType(e.Item.FindControl(
"TxbMagasin"), TextBox).Text)
ou j'ai pu ajouter le date en automatique et le nom du magasin dans une textBox a l'ouverture de ma page

en fait pour comprendre l'ajout d'enregistrement avec le code j'ai suivi de tutorial
http://www.c2i.fr/code.aspx?IDCode=548

maintenant a toi de voir si tu veux utiliser l'ajout dans une table en mode design regarde les tutaux de Microsoft sinon par dans le code et suis le tutorial de C2i.fr.

Je te conseil de commencer a apprendre a utiliser le code on est plus libre.

A+
ManuAntibes
0
poupouille55 Messages postés 35 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 avril 2008
24 mai 2006 à 16:36
salut !
merci pour toutes tes infos. J'ai choisi de coder en behind. En réalité la seule précipsion qu'il me manquait, c'est la colonne di'dentité dans les propriété de la clé primaire.
J'avais au début un datareader pour lire dans la table l'enregistrement vide puis je lui réaffectais a l'aide de commandtext une nouvelle requête, mais rien a y faire. 
Depuis cette petite astuce sur la clé primaire, je n'ai plus qu'une requête (insert) et tout fonctionne. 

Ce code fonctionne avec la propriété que ManuAntibes à expliquer plus haut
 'connexion a la base de données
connect.open()

Dim Requete AsNew SqlCommand

Dim myReader2 As System.Data.SqlClient.SqlDataReader

Requete = New SqlCommand("INSERT INTO [table] (champ1, champ2 ...) VALUES(@value1, @value2 ...)", Connect) 'ne pas spécifié le champ clé primaire auto increment

'Création et décalartion des paramètres

With Requete.Parameters

.Add(New SqlParameter("@value1", SqlDbType.VarChar))

.Add(New SqlParameter("@value2", SqlDbType.VarChar))

EndWith

'Attribution des valeurs aux paramŠtres

With Requete

.Parameters("@value1").Value = "value1"

.Parameters("@value2").Value = "value2"

EndWith

'exécution de la requête

myReader2 = Requete.ExecuteReader()

'fermeture du lecteur de résultat

myReader2.Close()

'libération des ressources utilis‚es pour la requˆte

Requete.Dispose()

'fermeture de la connection

Connect.Close()

'libération des ressources utilis‚es pour la connexion

Connect.Dispose()

Merci Manu antibes 
bonne prog
0
Rejoignez-nous