Member 14592882 Ответов: 1

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. Чтобы показать вам полный сценарий, был показан полный код. Надеюсь, теперь вы поможете мне это исправить.

1 Ответов

Рейтинг:
0

OriginalGriff

Видеть здесь: Почему я получаю "параметр не является допустимым." исключение, когда я читаю изображение из своей базы данных?[^] - код-это C#, но это точно такое же решение, и код довольно прост. Если вы не можете решить это, то это может помочь: Преобразователь кода C# в VB и VB в C# – Telerik[^]