Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2011, 14h52   #1
Futur Membre du Club
 
Femme
futur développeur
Inscription : janvier 2010
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : Maroc

Informations professionnelles :
Activité : futur développeur

Informations forums :
Inscription : janvier 2010
Messages : 135
Points : 15
Points : 15
Par défaut The version of SQL Server in use does not support datatype 'date'.

j'essaye d'inserer des données récupérées d'un formulaire(sous visual studio)dans une table sur sql server.

dans cette table, il y'a des données de type date.
et dans le formulaire, je récupere les champs de la saisie des dates et je les convertit en date en appelant CDate.
mais malheureusement on m'affiche ce message d'erreur:

System.ArgumentException was unhandled
Message=The version of SQL Server in use does not support datatype 'date'.
Source=System.Data
StackTrace:
at System.Data.SqlClient.TdsParser.TdsExecuteRPC(_SqlRPC[] rpcArray, Int32 timeout, Boolean inSchema, SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj, Boolean isCommandProc)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at GRH_stage.onglet_nouveau_employe.BT_enregistrer_info_prof_Click(Object sender, EventArgs e) in C:\Users\best\Desktop\GRH_stage\GRH_stage\onglet_nouveau_employe.vb:line 735
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(ApplicationContext context)
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
at Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
at GRH_stage.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:line 81
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
wikiele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 17h05   #2
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

Sous SQL Server, le type DATE n'existe qu'a partir de la version 2008 (vous n'avez pas précisé la votre)

si vous avez une version antérieure, utilisez DATETIME
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 17h40   #3
Futur Membre du Club
 
Femme
futur développeur
Inscription : janvier 2010
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : Maroc

Informations professionnelles :
Activité : futur développeur

Informations forums :
Inscription : janvier 2010
Messages : 135
Points : 15
Points : 15
salut

j'utilise sql server management studio express 2005 et visual studio 2010.

j'ai mis le type datetime pour les 2 champs:
date de naissance et date de recrutement.

sur visual studio je récupère la valeur de ces 2dates, et je les convertis.
j'ai utilisé pas mal de fonctions pour assurer une bonne conversion de string vers date:
exemple:
Convert.ToDateTime(T_date_recrut.Text) et CDate(T_date_recrut.Text) et Date.Parse(T_date_recrut.Text) et FormatDateTime(T_date_recrut.Text)

malheureusement toujours le même message d'erreur:
The version of SQL Server in use does not support datatype 'date'.

qu'est ce que je peux faire pour réussir l'insertion dans ma table sur sql server via un formulaire sous visual studio?
wikiele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 17h55   #4
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Bonjour

Je pense que ce n'est pas la façon dont vous convertissez la date, mais bien le type que vous donnez à l'un de vos paramètres (pour votre sqlCommand ?)

Le type DATE doit être disponible dans votre version de Visual studio, puisque compatible avec la version 2008 de SQL Server, mais a l’exécution, votre version 2005 ne doit pas accepter ce type.

Vérifiez le type que vous spécifiez pour les paramètres de votre requête
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 00h41   #5
Futur Membre du Club
 
Femme
futur développeur
Inscription : janvier 2010
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : Maroc

Informations professionnelles :
Activité : futur développeur

Informations forums :
Inscription : janvier 2010
Messages : 135
Points : 15
Points : 15
vous avez raison, j'ai mis Date lorsque je définissait les paramétres.j'ai mis donc datetime , et
mais il y'a un autre message d'erreur est ce que vous pouvez m'aider aieeeuuuuu ?

le message est:
An explicit value for the identity column in table 'employe' can only be specified when a column list is used and IDENTITY_INSERT is ON.

merci beaucoup
wikiele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 10h21   #6
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Vous essayez d'inserer une ligne dans une table en spécifiant explicitement une valeur pour la colonne identité (pour la clef primaire) alors que vous devriez laisser au sgbdr le soin de valuer cette colonne.

lorsque vous voulez insérer un nouvel employé, vous devez donc renseigner les colonnes nom, prenom, ... mais rien pour l'identifiant, qui sera généré par le SGBDR. Vous pourrez ensuite récupérer la valeur attribuée automatiquement grâce a @@IDENTITY
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 18h19   #7
Futur Membre du Club
 
Femme
futur développeur
Inscription : janvier 2010
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : Maroc

Informations professionnelles :
Activité : futur développeur

Informations forums :
Inscription : janvier 2010
Messages : 135
Points : 15
Points : 15
salut
merci beaucoup!

j'ai pas spécifié le id mais pourtant on m'affiche ce message.
j'ai essayé de mettre
set identity_insert employe on/off;

req = "insert into employe values (@ppr,@nomF,@prenomF,@nomA,@prenomA,@adresseF,@adresseA,@cin,@genre,@sit_fF,@sit_fA,@lieuNF,@lieuNA,@dateR,@nbreE,@dateN,@cmt,@statut,@corps,@regime,@cnops,@aff)"

With cmd.Parameters

.Add(New SqlParameter("@ppr", SqlDbType.Int, 4))
.Add(New SqlParameter("@nomF", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@prenomF", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@nomA", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@prenomA", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@adresseF", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@adresseA", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@cin", SqlDbType.Int, 4))
.Add(New SqlParameter("@genre", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@sit_fF", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@sit_fA", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@nbreE", SqlDbType.Int, 4))
.Add(New SqlParameter("@dateN", SqlDbType.DateTime, 4000))
.Add(New SqlParameter("@lieuNF", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@lieuNA", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@dateR", SqlDbType.DateTime, 4000))
.Add(New SqlParameter("@cmt", SqlDbType.Int, 4))
.Add(New SqlParameter("@statut", SqlDbType.Int, 4))
.Add(New SqlParameter("@corps", SqlDbType.Int, 4))
.Add(New SqlParameter("@regime", SqlDbType.NVarChar, 4000))
.Add(New SqlParameter("@cnops", SqlDbType.Int, 4))
.Add(New SqlParameter("@aff", SqlDbType.Int, 4))
End With

With cmd
.Parameters("@ppr").Value = Val(T_ppr.Text)
.Parameters("@nomF").Value = T_nom_emp_fr.Text
.Parameters("@prenomF").Value = T_prenom_emp_fr.Text
.Parameters("@nomA").Value = T_nom_emp_ar.Text
.Parameters("@prenomA").Value = T_prenom_emp_ar.Text
.Parameters("@adresseF").Value = T_adresse_fr.Text
.Parameters("@adresseA").Value = T_adresse_ar.Text
.Parameters("@cin").Value = Val(T_cin.Text)
.Parameters("@genre").Value = RB_feminin_fr.Text
.Parameters("@sit_fF").Value = CMB_sit_fam_fr.SelectedItem
.Parameters("@sit_fA").Value = CMB_sit_fam_fr.SelectedIndex
.Parameters("@nbreE").Value = Val(T_nbre_enf_fr.Text)
.Parameters("@dateN").Value = CDate(T_date_nais.Text)
.Parameters("@lieuNF").Value = T_lieu_nais.Text
.Parameters("@lieuNA").Value = T_lieu_nais_ar.Text
.Parameters("@dateR").Value = CDate(T_date_recrut.Text)
.Parameters("@cmt").Value = Val(T_cmt.Text)
.Parameters("@statut").Value = idstatut
.Parameters("@corps").Value = idcorps
.Parameters("@regime").Value = CMB_regime.SelectedItem
.Parameters("@cnops").Value = Val(T_num_cnops.Text)
.Parameters("@aff").Value = Val(T_num_affiliation.Text)
End With
wikiele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2011, 19h57   #8
Futur Membre du Club
 
Femme
futur développeur
Inscription : janvier 2010
Messages : 135
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 22
Localisation : Maroc

Informations professionnelles :
Activité : futur développeur

Informations forums :
Inscription : janvier 2010
Messages : 135
Points : 15
Points : 15
c'est résolu
dieu merci

il aurait fallu préciser les champs de la table: insert into employe(champs1,...) values(valeur1,....)


je vous remercie "aieeeuuuuu" pour votre coup de main

bonne semaine
wikiele est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h57.


 
 
 
 
Partenaires

Hébergement Web