من کد اضافه کردن عکس به دیتابیس اکسس رو میخوام البته گشتم کدهای موچوذ با بانک اس کیو ال کار می کنه که تو تبدیل به اکسس ارور میده و مشکلات زیادی داره ممنوم میشم کسی بتونه کمک کنه
من کد اضافه کردن عکس به دیتابیس اکسس رو میخوام البته گشتم کدهای موچوذ با بانک اس کیو ال کار می کنه که تو تبدیل به اکسس ارور میده و مشکلات زیادی داره ممنوم میشم کسی بتونه کمک کنه
این کد رو با عجله نوشتم. شاید به دردتون بخوره. اگه اشکالی داشت مطرح کنین.
Dim fs As IO.FileStream = New IO.FileStream("D:\1.gif", IO.FileMode.OpenOrCreate, IO.FileAccess.Read)
Dim rawData() As Byte = New Byte(fs.Length) {}
fs.Read(rawData, 0, System.Convert.ToInt32(fs.Length))
fs.Close()
OleDbDataAdapter1.InsertCommand.Parameters.Add("im age", OleDb.OleDbType.VarBinary).Value = rawData
Me.OleDbConnection1.Open()
OleDbDataAdapter1.InsertCommand.CommandText = "Insert Into tImages Values(@image)"
OleDbDataAdapter1.InsertCommand.ExecuteNonQuery()
MsgBox("Image saved to database")
Me.OleDbConnection1.Close()
با تشکر از راهنمائی شما
من کد شمارو به شکل زیرکار کردم
s3 = "provider=microsoft.jet.oledb.4.0;data source =" + Application.StartupPath + "\db1.mdb; jet oledb:database password=;"
con = New OleDbConnection(s3)
con.Open()
s4 = "select * from regist "
da = New OleDbDataAdapter(s4, con)
da.Fill(ds, "regist")
Dim fs As IO.FileStream = New IO.FileStream("c:\1.jpg", IO.FileMode.OpenOrCreate, IO.FileAccess.Read)
Dim rawData() AsByte = NewByte(fs.Length) {}
fs.Read(rawData, 0, System.Convert.ToInt32(fs.Length))
fs.Close()
da.InsertCommand.Parameters.Add("image", OleDb.OleDbType.VarBinary).Value = rawData
Me.con.Open()
da.InsertCommand.CommandText = "Insert Into tImages Values(@image)"
da.InsertCommand.ExecuteNonQuery()
MsgBox("Image saved to database")
اما ارور میده
من تیبلم یک فیلد از نوع oleb هستش به نام picture در تیبل regist از دیتابیس db1
حالا نمیدونم اشکال کحاست
امکان اضافه کردن از طریق دیتاست نیستش ؟
Dim ms AsNew MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim arrImage() AsByte = ms.GetBuffer
ms.Close()
Dim isConnecting AsBoolean = True
Dim imageStream As MemoryStream = New MemoryStream()
While isConnecting
Try
Dim northwindConnection AsNew OleDbConnection(connectionstring)
Dim strSQL AsString = _
"INSERT INTO table1 (img)" & _
"VALUES (@image)"
Dim cmd AsNew OleDbCommand(strSQL, northwindConnection)
With cmd
.Parameters.Add(New OleDbParameter("@image", arrImage)) '.Value = arrImage
EndWith
northwindConnection.Open()
cmd.ExecuteNonQuery()
northwindConnection.Close()
isConnecting = False
MessageBox.Show(arrFilename(0) & " saved to the database.", _
"Image Save Status", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
Catch sqlExc As OleDbException
MessageBox.Show(sqlExc.ToString, "SQL Exception Error!", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
ExitWhile
Catch exc As Exception
EndTry
EndWhile
این کد می تونه عکس رو ذخیره کنه.
البته من این رو برای بانک ا طلاعاتی خودم نوشتم.
شما باید مراقب عناوین مربوط به بانک و فیلدهاتون باشید
ممکنه بگین اسم دیتابیس ،جدول ، فیلد بانک شما چیه که من بتونم عوض کنم و کچای این کد شما به بانک متصل میشید ؟
ایا جدول باید دارای یک فیلد باشد ؟یا می توان فیلدهای متعدد داشت و عکس را به یک فیلد مشخص نسبت داد ؟
در ضمن این کد مربوط به بانک اسکیو ال هست ؟
با سلام
می بخشید کمی دیر جواب می دم
اگه مشکلتون حل نشده می شه پیغام خطا رو بنویسید؟
سلام
این رو من برای بانک اطلاعاتی اکسس کار کردم. مشکلی نداره. البته بازیابیش رو نمی دونم می تونید انجام بدید یا نه.
اسم بانک اطلاعاتی رو توی کانکشن استرینگ می یارید و البته من اینجا تعریف نکردم. من فقط cn رو تعریف کردم که نماینده همون کانکشن استرینگ هست. رشته اتصال من اینه:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:\db1.mdb"
اسم بانک اطلاعاتی در رشته بالا مشخصه.
Data Source=I:\db1.mdb
اگه هم در کد زیر دقت کنی مبینی که اسم جدول table1 هست. می تونی اسم جدول خودت رو بنویسی. نام فیلد هم img هستش. من برای شفافیت مثال، فقط یه فیلد در نظر گرفتم. شما می تونید هر چند تا که بخواید اضافه کنید. فقط باید نوع فیلد عکستون رو ole در نظر بگیرید که مثل اینکه همین کار رو هم کرده اید.
این مثال رو من قبلا برای sql نوشته بودم اما چون وقت نداشتم، خیلی سریع تغییراتی توش دادم که با اکسس کار می کنه اگه به استرینگ دقت کنی متوجه می شی.
اما اگه جایی از کلمه sql نام بردم، دقت کنید متوجه می شید که فقط یه رشته بوده و نه چیز دیگه.
اصلا اجازه بده کد رو شفاف تر واست بنویسیم.
PrivateSub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
Dim ms AsNew MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim arrImage() AsByte = ms.GetBuffer
ms.Close()
Dim isConnecting AsBoolean = True
Dim imageStream As MemoryStream = New MemoryStream()
While isConnecting
Try
Dim Connection AsNew OleDbConnection(connectionstring)
Dim str_insert AsString = _
"INSERT INTO table1 (img)" & _
"VALUES (@image)"
Dim cmd AsNew OleDbCommand(str_insert, Connection)
cmd.Parameters.Add(New OleDbParameter("@image", arrImage)) '.Value = arrImage
Connection.Open()
cmd.ExecuteNonQuery()
Connection.Close()
isConnecting = False
msgbox ("image saved")
Catch Exc As OleDbException
MessageBox.Show(Exc.ToString, " Exception Error!", _
MessageBoxButtons.OK, MessageBoxIcon.Error)
ExitWhile
Catch exc As Exception
EndTry
EndWhile
EndSub
با تشکر از همه دوستان
مشکل من خل شد و انشاالله راهی که استفاده کردم (که البته دوستان کمک کردند)را برای دوستان می نویسم البته بدون کوئری وبا دیتاست که بازیابی هم اسان باشد
سلام
کد سورس تحت به دو زبان VB و #C با اتصال به اکسس و تحت وب:
http://www.h-two.info/Download.aspx?...timeImages.zip
این کد برای اضافه کردن عکس به دیتابیس اکسس از طریق دیتاست
لازم به ذکر است که تمام این کد توسط دوستان در این تاپیک و تاپیک های دیگز نوشته شده و من صرفا کدها را برای برنامه خودم مرتب کردم(بابا حق کپی رایت )
Imports System.Data
Imports System.Data.OleDb
Public Class Form1
Dim con, con2 As OleDbConnection
Dim da, da2 As OleDbDataAdapter
Dim ds, ds2 As New DataSet
Dim s1, s2, s3, s4, s5 As String
Dim newrow, row1, row2 As DataRow
Dim cb As OleDbCommandBuilder
Dim adr1, adr2, ograt As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
‘در این قسمت شما به دیتابیس متصل می شوید اسم دیتابیس gldb.mdb
ds.Clear()
s1 = "provider=microsoft.jet.oledb.4.0;data source =" + Application.StartupPath + "\gldb.mdb; jet oledb:database password=;"
con = New OleDbConnection(s1)
con.Open()
s2 = "select * from regist"
da = New OleDbDataAdapter(s2, con)
da.Fill(ds, "regist")
newrow = ds.Tables("regist").NewRow
‘در این قسمت شما یک پیکچرباکس حاوی یک عکس دارید
‘فیلدی است که عکس درونش ذخیره می شود temp1
Dim fs As New IO.FileStream("adr1", System.IO.FileMode.Create)
PictureBox1.Image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg)
Dim aArray(CType(fs.Length, Integer) - 1) As Byte
fs.Position = 0
fs.Read(aArray, 0, aArray.Length)
newrow.Item("temp1") = aArray
fs.Close()
‘و در اخر اطلاعات را از دیناست به جدول بر می گردانم
ds.Tables("regist").Rows.Add(newrow)
cb = New OleDbCommandBuilder(da)
da = cb.DataAdapter
da.Update(ds, "regist")
MsgBox("اطلاعات ثبت شد")
لطفا در مورد عکسی (که از پایگاه select شده )میخواهیم در picturebox قرار دهیم اگر کسی در vb.net اطلاعی دار ه توضیح بده
منظور اینه که عکس در بانک است یا ادرس عکس ؟
بازیابی تصویر ذخیره شده بستگی داره به نوع ذخیره.
همونطور که دوستمون عزیزمون اشاره کرده اند، دو روش بازیابی وجود دارد. بازیابی تصویری که مسیرش در بانک ذخیره شده و بازیابی تصویری که خودش در بانک ذخیره شده.
روش اول خیلی سادس.
کد روش دوم اینجوری هستش.
Dim arrPicture() AsByte = CType(dsPictures.Tables(0).Rows(X)(Y), Byte())
Dim ms AsNew MemoryStream(arrPicture)
With PictureBox2
.Image = Image.FromStream(ms)
.SizeMode = PictureBoxSizeMode.StretchImage
.BorderStyle = BorderStyle.Fixed3D
EndWith
ms.Close()
اولاً اگر تاریخ تاپیک رو ملاحظه می فرمودید متوجه می شدید که علت این امر چیست با این حال برای نمونه این برنامه رو تست کنید
سلام
من می خواهم در فرم اکسس دکمه (Buttom) ای را تعریف کنم که با زدن آن پنجره Browsers باز شده و عکسی را انتخاب کرده و آن را در قسمتی از فرم که مشخص کرده ایم نشان دهد و درون اکسس ذخیره شود همچنین دکمه ای برای حذف آن نیز تعریف کنم .
مشابها برای فیلم نیز این کار را انجام دهد به صورتی که فیلم در مکان مورد نظر قرار گرفته و مدیا پلیر آن را اجرا کند . مشابه عکس
من اطلاعاتی در مورد برنامه نویسی ندارم لطفا به طور کامل راهنمایی کنید .
ممنون
سلام به همگی
من یه دیتابیس اکسس درست کردم واسه تنظیم فاکتور که توی اون یه Table به اسم فروشنده - یکی به اسم خریدار- و یکی هم به اسم صدور فاکتور تنظیم کردم بعد توی relationships بین خریدار و صدور فاکتور یک ارتباط یک به چند درست کردم و ارتباط بین فروشنده و صدور فاکتور یک به یک هست. یک به چند نمیشه.
بعد یه Query از صدور فاکتور گرفتم و هرسه جدول صدور فاکتور - خریدار و فروشنده رو گذاشتم .حالا که میخوام چند تا فاکتور صادر کنم به تکرار کد فروشنده ایراد می گیره.
لطفا راهنماییم کنین که چطوری میتونم ارتباط رو یک به چند کنم یا اینکه بتونم یه فروشنده واسه همه فاکتورام به عنوان سربرگ داشته باشم.
سلام
شاید تاپیک زیر کمک کند:نوشته شده توسط mohsen200339
https://barnamenevis.org/showthread.php?p=369669
دانلود مستقیم نمونه کد:
http://support.h02.ir/fwlink/?LinkId=1000198547
اگر فیدهای خود را به درستی index و primarykey کنید رابطه درست برقرار خواهد شد.نوشته شده توسط mreza1983
اگر نیازمند یک رابطه یک به چند هستید، باید primarykey جدول "فروشنده" را به فیلدی غیر primarykey (و ترجیحاً index دار) از جدول "فاکتور" متصل کنید.
برای خطا هم لطفاً متن کامل خطا را به همراه نام و نوع تک تک فیلدهای جدول اینجا قرار دهید تا بتوان بهتر متوجه دلیل خطا شد و کمک دقیقتری کرد.
موفق باشید.
سلام میشه کد ذخیره و بازیابی عکس در بانک را به زبان C# هم بذارید من خیلی لازم دارم