2014-09-20 113 views
0
Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    GetPicture() 
End Sub 


Public Sub GetPicture() 

    con.Open() 

    Dim dt As New DataTable("Users") 
    Dim rs As New OleDb.OleDbDataAdapter("Select * from Users where StudentNumber='" & TextBox1.Text & "' ", con) 
    rs.Fill(dt) 
    DataGridView1.DataSource = dt 
    DataGridView1.Refresh() 
    Label1.Text = dt.Rows.Count 
    rs.Dispose() 
    con.Close() 

    If Val(Label1.Text) = 1 Then 
     Dim i As Integer 
     i = DataGridView1.CurrentRow.Index 
     PictureBox1.Image = FixNull(DataGridView1.Item(6, i).Value) 


    End If 
______________________________ 

我就行了这个错误:PictureBox1.Image = FixNull(DataGridView1.Item(6,I).value的)如何显示/从Access数据库获取图像到图片框在VB

-> Unable to cast object of type 'System.Byte[]' to type 'System.Drawing.Image'.


截图:

回答

0

我只是figgured出来,这是解决方案


公共类形式

Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\UsersDB.accdb") 
Dim cmd As New OleDbCommand("", con) 
Dim Reader As OleDb.OleDbDataReader 
Dim cn As New OleDbConnection 
Dim i As Integer 

公用Sub的GetData()

con.Open() 
    Dim dt As New DataTable("Users") 
    Dim rs As New OleDb.OleDbDataAdapter("Select * from Users where StudentNumber='" & TextBox1.Text & "' ", con) 
    rs.Fill(dt) 
    DataGridView1.DataSource = dt 
    DataGridView1.Refresh() 
    Label1.Text = dt.Rows.Count 
    rs.Dispose() 
    con.Close() 

    If Val(Label1.Text) = 1 Then 
     Dim i As Integer 
     i = DataGridView1.CurrentRow.Index 
     'Image 
     Dim bytes As [Byte]() = (DataGridView1.Item(6, i).Value) 
     Dim ms As New MemoryStream(bytes) 
     PictureBox1.Image = Image.FromStream(ms) 

    End If 

结束子

末级


相关问题