- tarik
- عدد المساهمات : 134
تاريخ التسجيل : 08/10/2012
طريقه عمل تقرير وفاتورة بفلتر بكل سهولة فى داتا جريد وليبل وداتا بيز اكسس (مبسط جدا)
الإثنين أكتوبر 15, 2012 9:33 am
السلام عليكم ورحمه الله وبركاته
اخوانى انا طبعا فى الفترة الاخيرة كنت بحاول اعمل فاتورة او تقرير وفشلت بشتي الطرق هههههههه
ولله الحمد عملته بطريقه غريبة شوية كعادتى انى بحاول اوصل لمفهوم برمجى من منظورى انا
والحمد لله على انى وصلت اخيرا للحل
وشغال مليون فى الميه وحرفعلكم المثال ولكن انا عاوز تحاولوا الاول وبعدين ارفق المثال لو احتجتم لكن صدقونى الموضوع مش محتاج اكتر من اكود ولا اى حاجه تانيه
فياريت شوية تركيز بس وانا معاكم ولو فى اى مشكلة انا حاضر للاجابة
ومع العلم انى لو وفقت فمن عند الله ولو اخطأت فمن الشيطان ونفسي
وربنا ما يجيب اخطاء ان شاء الله
الهدف ان شاء الله عمل فاتورة على شكل معين وقابله للطابعه
الاستعلام حيكون عن طريق رقم الفاتورة
وكمان حنطبع فى الاخر على برنتر عاديه او PDF برنتر عشان نحفظه على الجهاز لو حبينا ولكن لازم تكون البرنتر او الطابعه الافتراضيه لاننا لن نختارها ولو حبينا نضيف دى ممكن نضيفها بسهولة لكن مش هى موضوعنا
بسم الله نبدء المطلوب
1 قاعده بيانات اكسس وبها جدولين واحد للعملاء والاخر للبضاعه اللى حنضيفها فى فاتورة البيع
2- فيجوال ستوديو 2008 ( 2005 لن يضر سيعمل بنفس الاكواد ان شاء الله )
3- متابعه جيده لخطورة خطوة
بسم الله الرحمن الرحيم
سنستخدم التالى فى البابلك كلاس
الباقي معروف
حاجات اساسية وبعض المتغيرات المستخدمه
فى الحدث Load مش حنستخدمه غير انه يجيب التاريخ بالكود ده طبعا
https://2img.net/r/ihimizer/img413/2237/invexplain.png
حنحتاج حوالى 23 ليبل
1 تكست بوكس
2 بوتون
واحد داتا جريد فيو
بس
الفكرة فى سحب بيانات الفاتورة برقم الفاتورة من الداتا بيز
وعرضها فى الداتا جريد
وسحب من نفس الجدول بيان رقم العميل واستخدامه فى سحب بيانات العميل من جدول العميل فى الاعلى
ثم اخيرا الطباعه وده كود جاهز
على فكرة الاكواد فيها كتير مقتبس طبعا ( هو اساسا مفيش حد بيألف اكاود على مزاجه ههههه )
نكمل الاكواد
اول زرار البحث فى الداتا بيز بأستخدام رقم الفاتورة فى التكست بوكس
حنضغط على الزرار مرتين عشان يجيبلنال الكود الخاص بيه
ونحط فيه الكود التالي انا حاطت عليه كونتات ولكن حنقول اللى فيه لو عاوزين طبعا
وده معناه ان فيه حدث احنا عاملينه مستقل حنستدعيه وده ناخده نحطه لوحده تحت الكود بتاع البوتون الاول ولكن طبعا بعد End Sub
المهم فى حاجه تانيه مهمه ودى بنستخدمها لحسب بيانات العميل
وحنحطها فى حدث منفصل زى اللى قبلها قبل End Class وبعد End Sub
ونحط الاكواد التاليه عشان نطبع الفاتورة
فى انتظار الردود يا شباب
ومحدش ينسي زرار الشكر الجميل ده
سعر الشرح دعوة بالرزق والستر
اخوانى انا طبعا فى الفترة الاخيرة كنت بحاول اعمل فاتورة او تقرير وفشلت بشتي الطرق هههههههه
ولله الحمد عملته بطريقه غريبة شوية كعادتى انى بحاول اوصل لمفهوم برمجى من منظورى انا
والحمد لله على انى وصلت اخيرا للحل
وشغال مليون فى الميه وحرفعلكم المثال ولكن انا عاوز تحاولوا الاول وبعدين ارفق المثال لو احتجتم لكن صدقونى الموضوع مش محتاج اكتر من اكود ولا اى حاجه تانيه
فياريت شوية تركيز بس وانا معاكم ولو فى اى مشكلة انا حاضر للاجابة
ومع العلم انى لو وفقت فمن عند الله ولو اخطأت فمن الشيطان ونفسي
وربنا ما يجيب اخطاء ان شاء الله
الهدف ان شاء الله عمل فاتورة على شكل معين وقابله للطابعه
الاستعلام حيكون عن طريق رقم الفاتورة
وكمان حنطبع فى الاخر على برنتر عاديه او PDF برنتر عشان نحفظه على الجهاز لو حبينا ولكن لازم تكون البرنتر او الطابعه الافتراضيه لاننا لن نختارها ولو حبينا نضيف دى ممكن نضيفها بسهولة لكن مش هى موضوعنا
بسم الله نبدء المطلوب
1 قاعده بيانات اكسس وبها جدولين واحد للعملاء والاخر للبضاعه اللى حنضيفها فى فاتورة البيع
2- فيجوال ستوديو 2008 ( 2005 لن يضر سيعمل بنفس الاكواد ان شاء الله )
3- متابعه جيده لخطورة خطوة
بسم الله الرحمن الرحيم
- الكود:
Imports System
Imports System.Data.OleDb
Imports System.Drawing.Imaging
Imports System.Drawing.Printing
سنستخدم التالى فى البابلك كلاس
- الكود:
Public Class Form2
Dim b As Boolean
Dim Con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" & Application.StartupPath & "\Store.mdb")
Dim sqlstr1 As String
Dim cmd As OleDbCommand
Dim dr As OleDbDataReader
Dim dt1 As OleDbDataAdapter
Dim ID As Integer
Dim DataSet1 As New DataSet
Dim DataSet2 As New DataSet
الباقي معروف
حاجات اساسية وبعض المتغيرات المستخدمه
فى الحدث Load مش حنستخدمه غير انه يجيب التاريخ بالكود ده طبعا
- الكود:
Label23.Text = Date.Now
https://2img.net/r/ihimizer/img413/2237/invexplain.png
حنحتاج حوالى 23 ليبل
1 تكست بوكس
2 بوتون
واحد داتا جريد فيو
بس
الفكرة فى سحب بيانات الفاتورة برقم الفاتورة من الداتا بيز
وعرضها فى الداتا جريد
وسحب من نفس الجدول بيان رقم العميل واستخدامه فى سحب بيانات العميل من جدول العميل فى الاعلى
ثم اخيرا الطباعه وده كود جاهز
على فكرة الاكواد فيها كتير مقتبس طبعا ( هو اساسا مفيش حد بيألف اكاود على مزاجه ههههه )
نكمل الاكواد
اول زرار البحث فى الداتا بيز بأستخدام رقم الفاتورة فى التكست بوكس
حنضغط على الزرار مرتين عشان يجيبلنال الكود الخاص بيه
ونحط فيه الكود التالي انا حاطت عليه كونتات ولكن حنقول اللى فيه لو عاوزين طبعا
- الكود:
'================= البحث برقم الفاتورة=========================
DataSet1.Clear()
If TextBox1.Text = "" Then
MsgBox("يجب ملأ الفراغ", MsgBoxStyle.Information)
TextBox1.Focus()
Else
sqlstr1 = "SELECT Quntity As الكمية,Price As السعر,inv As رقم_الفاتورة,ItemCode As سيريال_الاجهزة,ItemName As المواصفات,ClientCode As رقم_العميل From out WHERE inv LIKE '%" & TextBox1.Text & "%'"
Try
Con.Open()
Catch ex As Exception
End Try
cmd = New OleDbCommand(sqlstr1, Con)
dr = cmd.ExecuteReader
Do While dr.Read
TextBox1.Text = dr("رقم_الفاتورة")
Loop
Con.Close()
dt1 = New OleDbDataAdapter(sqlstr1, Con)
dt1.Fill(DataSet1, "out")
DataGridView1.DataSource = DataSet1
DataGridView1.DataMember = "out"
End If
'=========================== جمع الاسعار ==========================
Dim sum As Double
For i = 0 To DataGridView1.RowCount - 1
sum += DataGridView1.Rows(i).Cells(1).Value
Next
Label17.Text = sum
Label14.Text = Label17.Text * 10 / 100
Label16.Text = Label14.Text + +Label17.Text
============================== سحب بيانات الليبلز للعميل ======================
Try
Label19.DataBindings.Add("Text", DataSet1, "Out.رقم_العميل")
Catch ex As Exception
End Try
Call clientdata()
وده معناه ان فيه حدث احنا عاملينه مستقل حنستدعيه وده ناخده نحطه لوحده تحت الكود بتاع البوتون الاول ولكن طبعا بعد End Sub
- الكود:
Private Sub clientdata()
'======================= bayanat el3amel fe labels
sqlstr1 = "select ClientName As اسم_العميل,Phone AS رقم_التليفون,Mobile AS رقم_الموبايل,Fax AS رقم_الفاكس,Address As العنوان From Client WHERE Code LIKE '%" & Label19.Text & "%'"
Try
Con.Open()
Catch ex As Exception
End Try
cmd = New OleDbCommand(sqlstr1, Con)
dr = cmd.ExecuteReader
Do While dr.Read
Label18.Text = dr("اسم_العميل")
Label22.Text = dr("رقم_التليفون")
Label20.Text = dr("رقم_الفاكس")
Label21.Text = dr("العنوان")
Loop
Con.Close()
'
dt1 = New OleDbDataAdapter(sqlstr1, Con)
dt1.Fill(DataSet1, "Client")
End Sub
المهم فى حاجه تانيه مهمه ودى بنستخدمها لحسب بيانات العميل
وحنحطها فى حدث منفصل زى اللى قبلها قبل End Class وبعد End Sub
- الكود:
Private Sub getdata()
Con.Open()
Dim DataAdapter1 As New OleDbDataAdapter(sqlstr1, Con)
DataAdapter1.Fill(DataSet2, "Out")
Con.Close()
End Sub
ونحط الاكواد التاليه عشان نطبع الفاتورة
- الكود:
Private Declare Auto Function BitBlt Lib "gdi32.dll" (ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As System.Int32) As Boolean
Private Const SRCCOPY As Integer = &HCC0020
Private Function GetFormImage() As Bitmap
' Get this form's Graphics object.
Dim me_gr As Graphics = Me.CreateGraphics
' Make a Bitmap to hold the image.
Dim bm As New Bitmap(Me.ClientSize.Width, Me.ClientSize.Height, me_gr)
Dim bm_gr As Graphics = me_gr.FromImage(bm)
Dim bm_hdc As IntPtr = bm_gr.GetHdc
' Get the form's hDC. We must do this after
' creating the new Bitmap, which uses me_gr.
Dim me_hdc As IntPtr = me_gr.GetHdc
' BitBlt the form's image onto the Bitmap.
BitBlt(bm_hdc, 0, 0, Me.ClientSize.Width, Me.ClientSize.Height, _
me_hdc, 0, 0, SRCCOPY)
me_gr.ReleaseHdc(me_hdc)
bm_gr.ReleaseHdc(bm_hdc)
' Return the result.
Return bm
End Function
' Variables used to print.
Private m_PrintBitmap As Bitmap
Private WithEvents m_PrintDocument As PrintDocument
' Print the picture.
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
' Copy the form's image into a bitmap.
m_PrintBitmap = GetFormImage()
' Make a PrintDocument and print.
m_PrintDocument = New PrintDocument
m_PrintDocument.Print()
End Sub
' Print the form image.
Private Sub m_PrintDocument_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles m_PrintDocument.PrintPage
' Draw the image centered.
Dim x As Integer = e.MarginBounds.X + _
(e.MarginBounds.Width - m_PrintBitmap.Width) 2
Dim y As Integer = e.MarginBounds.Y + _
(e.MarginBounds.Height - m_PrintBitmap.Height) 2
e.Graphics.DrawImage(m_PrintBitmap, x, y)
' There's only one page.
e.HasMorePages = False
End Sub
Private Sub btnPrintForm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
' Copy the form's image into a bitmap.
m_PrintBitmap = GetFormImage()
Make a PrintDocument and print.
m_PrintDocument = New PrintDocument
m_PrintDocument.Print()
End Sub
End Class
فى انتظار الردود يا شباب
ومحدش ينسي زرار الشكر الجميل ده
سعر الشرح دعوة بالرزق والستر
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى