|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() futur développeur Inscription : janvier 2010 Messages : 135 ![]() |
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: |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
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 |
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() futur développeur Inscription : janvier 2010 Messages : 135 ![]() |
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? |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
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 |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() futur développeur Inscription : janvier 2010 Messages : 135 ![]() |
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 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 |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
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 |
|
|
00
|
|
|
#7 |
|
Futur Membre du Club
![]() futur développeur Inscription : janvier 2010 Messages : 135 ![]() |
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 |
|
|
00
|
|
|
#8 |
|
Futur Membre du Club
![]() futur développeur Inscription : janvier 2010 Messages : 135 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com