Je réalise une application en Visual Studio 2010 et une base MS Access 2010.
Je souhaiterais récupérer les Usagers précédemment enregistrer par les rééducateurs avec qui ils ont eu une rééducation :
La ComboBox nous permet de sélectionner un rééducateur
La ListBox nous affiche les Usagers précédemment enregistré par le rééducateur "Sélectionné" dans la ComboBox
Voici le code :
Private Sub lstEnfants()
'Récupérer le numéro du rééducateur afin d'afficher les Usagers correspondants Dim vNomReeducateur As String = CStr(lstSelectEnfant.SelectedItem) <strong><span style="color:#ff0000;"><em>fourthSQL = "SELECT noReeduc FROM reeducateur WHERE nomReeduc LIKE " & vNomReeducateur & "%"</em></span></strong> dta.SelectCommand.CommandText = fourthSQL dta.Fill(dts, "reeducateur")
For i = 0 To dts.Tables("reeducateur").Rows.Count - 1 Dim en As IEnumerator en = dts.Tables("reeducateur").Rows.GetEnumerator en.Reset()
Do While en.MoveNext() vNomReeducateur = en.Current("nomReeduc") If vNomReeducateur = en.Current("nomReeduc") Then
If vNomReeducateur = dts.Tables("reeducateur").Rows(i).Item("nomReeduc") Then Dim varNoReeducateur As Integer = dts.Tables("reeducateur").Rows(i).Item("noReeduc")
'Remplir la liste des usagers firstSQL = "SELECT * FROM acte WHERE noUsager = ?" dta.SelectCommand.CommandText = firstSQL dta.SelectCommand.Parameters.Add("@p1", OleDbType.Integer).Value = varNoReeducateur dta.Fill(dts, "acte")
For j = 0 To dts.Tables("acte").Rows.Count - 1 'Récupérer tous les champs de la table acte dans des variables Dim varNoUsager As Integer = CInt(dts.Tables("acte").Rows(i).Item("noUsager")) Dim varNomUsager As String = CStr(dts.Tables("acte").Rows(i).Item("nomUsager")) Dim varPrenomUsager As String = CStr(dts.Tables("acte").Rows(i).Item("prenomUsager")) Dim varNoSem As Integer = CInt(dts.Tables("acte").Rows(i).Item("noSem")) Dim varMois As String = CStr(dts.Tables("acte").Rows(i).Item("mois")) Dim varNbActes As Integer = CInt(dts.Tables("acte").Rows(i).Item("nbActe"))
Le message d'erreur que vb.net me retourne est le suivant :
Comme vous le voyez ce code se trouve dans une procédure "Private Sub LstEnfants()",
J'appelle cette procédure dans mon ComboBox "cbBoxSelectionnerReeducateur_SelectedIndexChanged".
Le message d'erreur que VB.NET me retourne est le suivant :
"Erreur de syntaxe dans l'expression « nomReeduc LIKE% »."
Voici le détail :
L'exception System.Data.OleDb.OleDbException n'a pas été gérée ErrorCode=-2147217900 HResult=-2147217900 Message=Erreur de syntaxe dans l'expression « nomReeduc LIKE% ». Source=Microsoft Access Database Engine StackTrace: à System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) à System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) à System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) à System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) à System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) à System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) à System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) à AppBReeducateur.frmEnregistrementSemaine.lstEnfants() à AppBReeducateur.frmEnregistrementSemaine.cbBoxSelectionnerReeducateur_SelectedIndexChanged(Object sender, EventArgs e) à System.Windows.Forms.ComboBox.OnSelectedIndexChanged(EventArgs e) à System.Windows.Forms.ComboBox.set_SelectedIndex(Int32 value) à System.Windows.Forms.ComboBox.NotifyAutoComplete(Boolean setSelectedIndex) à System.Windows.Forms.ComboBox.OnKeyDown(KeyEventArgs e) à System.Windows.Forms.Control.ProcessKeyEventArgs(Message& m) à System.Windows.Forms.ComboBox.ProcessKeyEventArgs(Message& m) à System.Windows.Forms.Control.ProcessKeyMessage(Message& m) à System.Windows.Forms.ComboBox.ChildWndProc(Message& m) à System.Windows.Forms.ComboBox.ComboBoxChildNativeWindow.WndProc(Message& m) à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg) à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData) à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context) à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context) à System.Windows.Forms.Application.Run(ApplicationContext context) à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun() à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel() à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine) à AppBReeducateur.My.MyApplication.Main(String[] Args) à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() à System.Threading.ThreadHelper.ThreadStart_Context(Object state) à System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) à System.Threading.ThreadHelper.ThreadStart() InnerException:
Si ça peux vous aidez, quand je fais du pas à pas détailler il me dit Nothing à la déclaration suivante :
"Dim vNomReeducateur As String = CStr(lstSelectEnfant.SelectedItem)"
J'ai trouvé la première solution :
Je récupérer la valeur de la listBox au lieu du combobox voici le changement :
'Récupérer le numéro du rééducateur afin d'afficher les Usagers correspondants Dim vNomReeducateur As String = CStr(cbBoxSelectionnerReeducateur.SelectedItem)
fourthSQL = "SELECT noReeduc FROM reeducateur WHERE nomReeduc = ?" dta.SelectCommand.CommandText = fourthSQL dta.SelectCommand.Parameters.Add("@pNomReeducateur", OleDbType.Integer).Value = vNomReeducateur dta.Fill(dts, "reeducateur")
Mon nouveau problème est :
"Échec de la conversion de la valeur de paramètre d'un String en un Int32."
Pourquoi j'ai ce problème alors que je ne converti que ma combobox en string mais rien en int32, quel est le problème ?