[ BackoSoft @ 06.01.2012. 19:01 ] @
Napravio sam formu sa picture box-om i dva gumba. save i dodaj sliku, tu imam i combo box sa kojim vrsim pretragu po rednom broju iz baze. Medutim imam problem sto kod nece da radi. u cemu je problem. Code: Imports System.IO Imports System.Text Imports System.Data.OleDb Imports System.ComponentModel Imports Microsoft.VisualBasic.CompilerServices Imports System.Runtime.CompilerServices Public Class Form1 Private img As Image Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click Dim builder As New StringBuilder builder.Append(ObjectType.StrCatObj("DELETE FROM images WHERE imageId = ", Me.cmbImgIds.SelectedItem)) If New Connection().doInsertData(builder.ToString) Then Interaction.MsgBox("The image is Deleted successfully", 0, Nothing) Me.picBox.Image = Nothing Me.getListOfImages() End If End Sub Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click Dim command As OleDbCommand Dim connection As OleDbConnection Dim stream As New FileStream(Me.imgFile.FileName, FileMode.Open, FileAccess.Read) Try Dim cmdText As String = "insert into images([image]) VALUES(?)" connection = New OleDbConnection(StringType.FromObject(New Connection().getConnectionString)) connection.Open() command = New OleDbCommand(cmdText, connection) Dim array As Byte() = New Byte((CInt((stream.Length - 1)) + 1) - 1) {} stream.Read(array, 0, array.Length) stream.Close() Dim parameter As New OleDbParameter("@Picture", OleDbType.LongVarBinary, array.Length, ParameterDirection.Input, False, 0, 0, Nothing, DataRowVersion.Current, array) command.Parameters.Add(parameter) command.ExecuteNonQuery() Interaction.MsgBox("Image is saved successfully to the Database", 0, "Successfully Saved") Me.getListOfImages() Me.btnSave.Enabled = False Catch exception1 As Exception ProjectData.SetProjectError(exception1) Dim exception As Exception = exception1 Interaction.MsgBox(("Error : " & exception.Message), 0, "Error Occured") ProjectData.ClearProjectError() Finally connection = Nothing command = Nothing End Try End Sub Private Sub cmbImgIds_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbImgIds.SelectedIndexChanged Dim stream As MemoryStream Me.btnDelete.Enabled = False Dim builder As New StringBuilder Dim table As New DataTable builder.Append(ObjectType.StrCatObj("SELECT image FROM images WHERE imageId = ", Me.cmbImgIds.SelectedItem)) table = New Connection().doDBconnection(builder.ToString, "Image") Dim row As DataRow For Each row In table.Rows Me.btnDelete.Enabled = True Dim buffer As Byte() = DirectCast(row.Item("image"), Byte()) stream = New MemoryStream(buffer) Next Me.picBox.Image = Image.FromStream(stream) End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.getListOfImages() Me.btnDelete.Enabled = False End Sub Public Sub getListOfImages() Dim enumerator As IEnumerator Dim builder As New StringBuilder Dim table As New DataTable builder.Append("SELECT imageId FROM images") table = New Connection().doDBconnection(builder.ToString, "ImageId") Me.cmbImgIds.Items.Clear() If (table.Rows.Count = 0) Then Me.btnDelete.Enabled = False End If Try enumerator = table.Rows.GetEnumerator Do While enumerator.MoveNext Dim current As DataRow = DirectCast(enumerator.Current, DataRow) Me.cmbImgIds.Items.Add(RuntimeHelpers.GetObjectValue(current.Item("imageId"))) Loop Finally If TypeOf enumerator Is IDisposable Then DirectCast(enumerator, IDisposable).Dispose() End If End Try End Sub Private Sub imgFile_FileOk(ByVal sender As Object, ByVal e As CancelEventArgs) Try Me.img = Image.FromFile(Me.imgFile.FileName) Me.btnSave.Enabled = True Me.btnSave.Focus() Me.picBox.Image = Me.img Catch exception1 As Exception ProjectData.SetProjectError(exception1) Dim exception As Exception = exception1 If (Strings.InStr(Strings.UCase(exception.Message), Strings.UCase("Out of memory"), 0) > 0) Then Interaction.MsgBox("Please select images only", 0, "Error Occured") End If ProjectData.ClearProjectError() End Try End Sub Private Sub btndodaj_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btndodaj.Click Me.btnDelete.Enabled = False Me.imgFile.ShowDialog() End Sub Public Function doDBconnection(ByVal sQuery As String, ByVal DataTableName As String) As DataTable Dim table As DataTable Dim command As OleDbCommand Dim connection As OleDbConnection Dim dataSet As New DataSet Try connection = New OleDbConnection(StringType.FromObject(Me.getConnectionString)) command = New OleDbCommand(sQuery, connection) New OleDbDataAdapter(command).Fill(dataSet, DataTableName) table = dataSet.Tables.Item(DataTableName) Catch exception1 As Exception ProjectData.SetProjectError(exception1) Dim exception As Exception = exception1 Interaction.MsgBox(("Error Occured : " & exception.Message), 0, "Naslov Poruke") ProjectData.ClearProjectError() Finally connection = Nothing command = Nothing End Try Return table End Function Public Function doInsertData(ByVal sInsertQuery As String) As Boolean Dim message As String Dim connection As OleDbConnection Try message = "" connection = New OleDbConnection(StringType.FromObject(Me.getConnectionString)) connection.Open() New OleDbCommand(sInsertQuery, connection).ExecuteNonQuery Catch exception1 As Exception ProjectData.SetProjectError(exception1) Dim exception As Exception = exception1 message = exception.Message Interaction.MsgBox(("Error : " & message), 0, "Mindfire Solutions") ProjectData.ClearProjectError() Finally connection = Nothing End Try Return (StringType.StrCmp(Strings.Trim(message), "", False) = 0) End Function Public Function getConnectionString() As Object Return ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & Application.StartupPath & "\image.mdb; User Id=admin; Password=") End Function End Class |