Vb.net: параметр недопустим!
Мой проект просто хранит информацию о сотрудниках вместе с их фотографиями в базе данных MS Access.
У меня есть объект mdiform с меню 'PEProfile'. При нажатии на этот элемент меню запускается событие загрузки формы, в котором выполняется Sub Navigaterecords (). наконец я получаю сообщение об ошибке, как указано ниже:
System.ArgumentException was unhandled Message="Parameter is not valid." Source="System.Drawing"
Не могли бы вы помочь мне это исправить?
Спасибо
М Д ШИВАРАМ
Что я уже пробовал:
Private Sub PEProfilefrm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.MdiParent = MDIParent1 Me.SetStyle(ControlStyles.UserPaint, True) Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True) Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True) Browse.Enabled = False Dim tm As String inc = 0 FillCombo() Con = New OleDbConnection(cnString) tm = ComboBox1.SelectedItem.ToString Dim SQLstr As String = "Select * from Images where Team = '" & tm & "'" Try Con.Open() Catch ex As Exception MsgBox(ex.Message) End Try Adapter = New OleDb.OleDbDataAdapter(SQLstr, Con) DS = New DataSet Adapter.Fill(DS, "Pyramid") MaxRows = DS.Tables("Pyramid").Rows.Count TotalPElbl.Text = "Total PE's :" & MaxRows NavigateRecords() End Sub Private Sub ComboBox1_SelectionChangeCommitted(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectionChangeCommitted Dim msm As String Dim sqlcmd As String Con.Close() msm = ComboBox1.SelectedItem.ToString sqlcmd = "Select * from Images where Team = '" & msm & "'" Try Con.Open() Catch ex As Exception MsgBox(ex.Message) End Try Adapter = New OleDb.OleDbDataAdapter(sqlcmd, Con) DS = New DataSet Adapter.Fill(DS, "Pyramid") DT = DS.Tables("Pyramid") NavigateRecords() End Sub
Public Sub NavigateRecords() Try Dim fstrmImage As New FileStream("ASPE-Pyramid.jpg", FileMode.Create) Dim blob As Byte() = DirectCast(DS.Tables("Pyramid").Rows(inc).Item(1), Byte()) fstrmImage.Write(blob, 0, blob.Length) Dim MyImage As Image = Image.FromStream(fstrmImage) PictureBox1.Image = MyImage PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage PictureBox1.Refresh() TextBox1.Text = DS.Tables("Pyramid").Rows(inc).Item(2).ToString TextBox2.Text = DS.Tables("Pyramid").Rows(inc).Item(3).ToString TextBox3.Text = DS.Tables("Pyramid").Rows(inc).Item(4).ToString TextBox4.Text = DS.Tables("Pyramid").Rows(inc).Item(5).ToString fstrmImage.Close() fstrmImage = Nothing MyImage.Dispose() MyImage = Nothing Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub PEProfileMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PEProfileMenuItem.Click ActiveMdiChild.Close() Dim frm4 As New PEProfilefrm frm4.MdiParent = Me frm4.Show() frm4.WindowState = FormWindowState.Maximized End Sub
Richard Deeming
Dim SQLstr As String = "Select * from Images where Team = '" & tm & "'"
Не делай этого так!
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
Member 14592882
На самом деле код показывает приведенное выше сообщение об ошибке в строке frm4.WindowState = FormWindowState.Maximized. Чтобы показать вам полный сценарий, был показан полный код. Надеюсь, теперь вы поможете мне это исправить.