السلام عليكم ,,
لو فرضنا أن لدي قاعدة بيانات أكسس ,,
و بها جدولين ,, الاول بيانات خط ,, (line_no,line_name,from,to)
و الثاني صورة فحص الخط,, و حقوله ( line_no,imge_line)
ولدي في الفورم ,, picturebox >>
ــــــــــــــــــــــــ
والصور هي عبارة عن نموذج سكانير خاص بفحص الخط ,,
بطبيعة الحال الخط قد يحدث عليه فحص اكثر من مرة في السنة ,,
اى ان بعض الخطوط لها أكثر من صورة ,,
فعند الاستعلام برقم الخط تظهر الصورة على picturebox
وهذا كود الإستعلام على الخط
سؤالي هو كيف أقوم بالبحث عن طريق button للصورة التالية للخط بحسf رقم الخط الموجود في text
مشكورن سلفاً يا مبرمجين ,,
الاخ احمد- القاعدة ينقصها جدول tab_list كما وان جدول الصور فارغ
ارسل القاعدة التي تحتوي على الجدول المفقود و بعض البيانات التي تم ادخالها في جدول الصور
كما و انه لا يوجد ما يشير على أن الجدول img_tb مربوط مع اي جدول (لا يوجد حقل ربط)
ارفق مثال يعمل معك و ينقصه الجزئية التي سألت عنها فقط.
(24-12-16, 09:01 PM)ابو ليلى كتب : [ -> ]الاخ احمد- القاعدة ينقصها جدول tab_list كما وان جدول الصور فارغ
ارسل القاعدة التي تحتوي على الجدول المفقود و بعض البيانات التي تم ادخالها في جدول الصور
كما و انه لا يوجد ما يشير على أن الجدول img_tb مربوط مع اي جدول (لا يوجد حقل ربط)
ارفق مثال يعمل معك و ينقصه الجزئية التي سألت عنها فقط.
آسف ,,,
هذا مثال جديد
في المثال جعلت قيمة التيكست تظهر في فورم لوود ,,
ما عليك إلا وضع الموؤشر على التكست و الضغط على enter
ثم إختار من brows صورة اخرى و إضغط على add this image to this line
هنا اصبح لدينا صورتين لنفس الخط ,,
أتمنى ان تكون وصلت الفكرة
(24-12-16, 10:47 PM)ابو ليلى كتب : [ -> ]اتضح ان الجداول مرتبطة بعد مراجعة الكود
على اي حال التعديل بسيط و ان شاء الله يفي بالغرض
لدي الدالة التالية جديدة
PHP كود :
Private Function GetImageById(ByVal DataTable As DataTable, ByVal i As Integer) As Bitmap
If DataTable.Rows.Count > 0 Then
Dim bits As Byte() = CType(DataTable.Rows(i).Item("imga"), Byte())
Dim memo As New MemoryStream(bits)
Dim myimg As New Bitmap(memo)
memo.Close()
Return myimg
End If
Return Nothing
End Function
و شكل الاجراء لديك اصبح كالتالي
PHP كود :
Sub getimg()
Dim conn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;" & "data source=" & Application.StartupPath & "\db1.mdb")
Dim comm As New OleDbCommand()
PictureBox1.BackgroundImageLayout = ImageLayout.Stretch
PictureBox1.Image = Nothing
comm.Connection = conn
conn.Open()
comm.CommandText = "select * from img_tb where imname='" & linen.Text & "'"
Dim dr As OleDbDataReader = comm.ExecuteReader
Dt.Clear()
Dt.Load(dr)
conn.Close()
If Dt.Rows.Count > 0 Then
Bn.DataSource = Dt
PictureBox1.Image = GetImageById(Dt, 0)
Else
PictureBox1.Image = Nothing
Bn.DataSource = Nothing
End If
End Sub
الزر التالي للانتقال لصورة تالية
PHP كود :
If Bn.Count > 0 Then
Bn.MoveNext()
PictureBox1.Image = GetImageById(Dt, Bn.Position)
End If
و الزر التالي للانتقال لصورة سابقة
PHP كود :
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
If Bn.Count > 0 Then
Bn.MovePrevious()
PictureBox1.Image = GetImageById(Dt, Bn.Position)
End If
End Sub
انا عرفت ما يلي في بداية النموذج
PHP كود :
Dim Dt As New DataTable
Dim Bn As New BindingSource
الله اكبر ما شاء الله عليك يا استاذ ,,
الكود شغال 100% سلمت يمناك و جزاك الله عني كل خير ,,
فعلاً كان معقدني و انت حليتها
مشكوووور جداً جداً