PDA

View Full Version : سوال: دستور آپديت اطلاعات همراه با متن و عكس كد شده



bhasoft
شنبه 27 فروردین 1390, 11:12 صبح
با سلام.خسته نباشيد جميعا.
دوستان عزيز كسي بلده چطور با اين دستورات درج ،دستورات آپديت رو بنويسم؟
Dim Save As New OleDbCommand()
Save.Connection = myconnection
Save.CommandText = "Insert Into UP Values (@UsName,@Pass,@FirstName,@LastName,@FatherName,@M elliCode,@Semat,@HomePhone,@MobilePhone,@Address,@ Admin,@Plane,@TSearch,@TSave,@TEdit,@TDelete,@TRep ort,@TOption,@Timage)"
Save.Parameters.AddWithValue("@UsName", T1.Text)
Save.Parameters.AddWithValue("@Pass", T2.Text)
Save.Parameters.AddWithValue("@FirstName", T3.Text)
Save.Parameters.AddWithValue("@LastName", T4.Text)
Save.Parameters.AddWithValue("@FatherName", T5.Text)
Save.Parameters.AddWithValue("@MelliCode", Long.Parse(T6.Text))
Save.Parameters.AddWithValue("@Semat", T7.Text)
Save.Parameters.AddWithValue("@HomePhone", Long.Parse(T8.Text))
Save.Parameters.AddWithValue("@MobilePhone", Long.Parse(T9.Text))
Save.Parameters.AddWithValue("@Address", T10.Text)
Save.Parameters.AddWithValue("@Admin", "0")
Save.Parameters.AddWithValue("@Plane", ChBx1.CheckState)
Save.Parameters.AddWithValue("@TSearch", CBx1.CheckState)
Save.Parameters.AddWithValue("@TSave", CBx2.CheckState)
Save.Parameters.AddWithValue("@TEdit", CBx3.CheckState)
Save.Parameters.AddWithValue("@TDelete", CBx4.CheckState)
Save.Parameters.AddWithValue("@TReport", CBx5.CheckState)
Save.Parameters.AddWithValue("@TOption", CBx6.CheckState)
Save.Parameters.AddWithValue("@Timage", ConvertImageToByte(OFD.FileName))

Save.ExecuteNonQuery()



من با اين دستورات به خوبي درج ميكنم.
دستور آپديت من هم معموليه اما چون عكس از نوع آبجكت هست نميشه با string بگيرم و ذخيره كنم.

اين هم دستور آپديت من ما بدون عكس .اگه كسي بلده دستورات درج رو به آپديت تبديل كنه ممنونش ميشم...

Dim update As String

update = "update T_Address set code_P =" & T11.Text & "," & _
"shahr='" & T12.Text & "'," & _
"roosta='" & T13.Text & "'," & _
"khiaban='" & T14.Text & "'," & _
"kooy='" & T15.Text & "'," & _
"kuche='" & T16.Text & "'," & _
"bonbast='" & T17.Text & "'," & _
"mojtama='" & T18.Text & "'," & _
"aparteman='" & T19.Text & "'," & _
"tabage='" & T20.Text & "'," & _
"pelak='" & T21.Text & "'" & _
"where code_P=" & Int(T11.Text)

Dim d As New OleDb.OleDbCommand(update, myconnection)
d.ExecuteNonQuery()

alimanam
شنبه 27 فروردین 1390, 11:49 صبح
با سلام

از این سورسی که واستون نوشتم میتونین استفاده کنین البته این راهو به شما نشون میده شما باید با توجه به پایگاه داده خودتون تغییرش بدین .


Imports System.IO
Imports System.Data.OleDb
Public Class Form1
''' <summary>
''' Coding By : Ali Dakhilzadeh
''' Date : 2011-16-03
''' For any Question about code contact me by e-mail [ali.dakhilzadeh@gmail.com]
''' Enjoy it !
''' </summary>
''' <remarks></remarks>
Private CnnString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb"
Private Sub LoadData()
Dim ad As New OleDbDataAdapter("Select * from Table1", CnnString)
Dim dt As New DataTable
ad.Fill(dt)
dgv.DataSource = dt
End Sub
Private Sub UpdateRow(ByVal id As Integer, ByVal filename As String)
Dim cnn As New OleDb.OleDbConnection(CnnString)

Dim sampleImage As Bitmap = New Bitmap(filename)
Dim mStream As New System.IO.MemoryStream
Dim ImageBytes As Byte()

sampleImage.Save(mStream, Imaging.ImageFormat.Png)
ImageBytes = mStream.ToArray

Dim cmd As New OleDb.OleDbCommand("Update Table1 Set path=@filename, img =@img Where id =" & id, cnn)

cmd.Parameters.Add("@filename", OleDb.OleDbType.VarChar)
cmd.Parameters.Add("@img", OleDb.OleDbType.Binary)

cmd.Parameters("@filename").Value = filename
cmd.Parameters("@img").Value = ImageBytes

If cnn.State = ConnectionState.Closed Then cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()
MsgBox("تصویر مورد نظر با موفقیت در پایگاه داده ذخیره شد", MsgBoxStyle.Information)
LoadData()

End Sub
Private Sub InsertRow(ByVal filename As String)
Dim cnn As New OleDb.OleDbConnection(CnnString)

Dim sampleImage As Bitmap = New Bitmap(filename)
Dim mStream As New System.IO.MemoryStream
Dim ImageBytes As Byte()

sampleImage.Save(mStream, Imaging.ImageFormat.Png)
ImageBytes = mStream.ToArray

Dim cmd As New OleDb.OleDbCommand("Insert Into Table1 (path, img) Values (@filename, @img)", cnn)

cmd.Parameters.Add("@filename", OleDb.OleDbType.VarChar)
cmd.Parameters.Add("@img", OleDb.OleDbType.Binary)

cmd.Parameters("@filename").Value = filename
cmd.Parameters("@img").Value = ImageBytes

If cnn.State = ConnectionState.Closed Then cnn.Open()
cmd.ExecuteNonQuery()
cnn.Close()
MsgBox("تصویر مورد نظر با موفقیت در پایگاه داده ذخیره شد", MsgBoxStyle.Information)
LoadData()
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim ofd As New OpenFileDialog
ofd.FilterIndex = 1
ofd.Filter = "All Image|*.jpg;*.bmp;*.png;*.gif"
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
InsertRow(ofd.FileName)
End If
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
LoadData()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Not dgv.Rows.Count = 0 Then
Dim ofd As New OpenFileDialog
ofd.FilterIndex = 1
ofd.Filter = "All Image|*.jpg;*.bmp;*.png;*.gif"
If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
UpdateRow(dgv.CurrentRow.Cells(0).Value, ofd.FileName)
End If

End If
End Sub
End Class


موفق باشید ./

bhasoft
دوشنبه 29 فروردین 1390, 20:06 عصر
با سلام دوباره خدمت داداش گلم.با زحمتها؟
داداش علي من از كدهات استفاده كردم و دستورات آپديت رو شبيه دستورات درج خودم نوشتم.ولي بعد از آپديت دوباره عكس وقتي مشخصات كاربر رو دوباره ميخوام لود كنم و عمليات بعد از ويرايش رو نشون بدم ايراد ميگيره و ميگه عكسي وجود نداره تا از طريق تابع بايت به ايميج تبديل كنم..!
چيكار كنم داداش؟

اينهم دستورات آپديت من:

myconnection.Open()
Dim save As New OleDbCommand()
save.Connection = myconnection

save.CommandText = "Update UP Set UsName=@UsName,Pass=Pass,FirstName=@FirstName,Last Name=@LastName,FatherName=@FatherName,MelliCode=@M elliCode,Semat=@Semat,HomePhone=@HomePhone,MobileP hone=@MobilePhone,Address=@Address,Plane=@Plane,TS earch=@TSearch,TSave=@TSave,TEdit=@TEdit,TDelete=@ TDelete,TReport=@TReport,TOption=@TOption Where UsName = '" & Combo1.Text & "'"

save.Parameters.AddWithValue("@UsName", T1.Text)
save.Parameters.AddWithValue("@FirstName", T3.Text)
save.Parameters.AddWithValue("@LastName", T4.Text)
save.Parameters.AddWithValue("@FatherName", T5.Text)
save.Parameters.AddWithValue("@MelliCode", Long.Parse(T6.Text))
save.Parameters.AddWithValue("@Semat", T7.Text)
save.Parameters.AddWithValue("@HomePhone", Long.Parse(T8.Text))
save.Parameters.AddWithValue("@MobilePhone", Long.Parse(T9.Text))
save.Parameters.AddWithValue("@Address", T10.Text)
save.Parameters.AddWithValue("@Plane", ChBx1.CheckState)
save.Parameters.AddWithValue("@TSearch", CBx1.CheckState)
save.Parameters.AddWithValue("@TSave", CBx2.CheckState)
save.Parameters.AddWithValue("@TEdit", CBx3.CheckState)
save.Parameters.AddWithValue("@TDelete", CBx4.CheckState)
save.Parameters.AddWithValue("@TReport", CBx5.CheckState)
save.Parameters.AddWithValue("@TOption", CBx6.CheckState)

''***********Moshkel ba Update Pics!
If OFD.FileName <> "" Then

save.CommandText = "Update UP Set Timage=@Timage Where UsName = '" & Combo1.Text & "'"

save.Parameters.AddWithValue("@Timage", ConvertImageToByte(OFD.FileName))

End If
''***********Moshkel ba Update Pics!

save.ExecuteNonQuery()

MsgBox("اطلاعات مورد نظر با موفقیت ذخیره شد", MsgBoxStyle.Information)
myconnection.Close()




myconnection.Open()
'****Combo load
Combo1.Text = ""
Dim str As String = "SELECT * FROM UP"
Dim ad As New OleDb.OleDbDataAdapter(str, myconnection)

ad.SelectCommand.CommandText = "SELECT * FROM UP where Usname <> 'admin'"

Dim table As New DataTable()
ad.Fill(table)


Combo1.DataSource = table
Combo1.DisplayMember = "Usname"
'****Combo load
myconnection.Close()

alimanam
سه شنبه 30 فروردین 1390, 22:28 عصر
با سلام

دوست عزیز من نمیدونم شما تو تابع ConvertImageToByte چکار کردین ؟ من در پست شماره 2 دقیقاً کدی که نیاز داشتی رو وقت گذاشتم نوشتم شما هم مثل همون کد میتونی هم آپدیت کنی هم اینسرت پس دیگه مشکلت چیه ؟ شما مثل کدهای شماره 2 انجام بده مطمئن باش هیچ مشکلی پیدا نمیکنی . من همین پروژه رو برات آپ میکنم تا بهتر متوجه بشی .

موفق باشید ./

bhasoft
چهارشنبه 31 فروردین 1390, 20:38 عصر
مرسي داداش علي.دست گلت درد نكنه.شرمندم ميكني...
واقعا ممنونم..............

راستي اينهم كد تبديل عكسم به بايته:

Private Function ConvertImageToByte(ByVal ImageLocation As String) As Byte()
Dim fs As New FileStream(ImageLocation, FileMode.Open, FileAccess.Read)
Dim br As New BinaryReader(fs)
Dim picture As Byte()
Dim fInfo As New FileInfo(ImageLocation)
Dim numBytes As Long = fInfo.Length
picture = br.ReadBytes(CInt(numBytes))
Return picture
End Function