تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طباعة السجل الحالي
#11
(19-06-16, 03:06 AM)hitman48 كتب : راح ارفقلك مثال الصحيح ان شاء الله يساعدك

كود :
Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine


Public Class Form1
   Dim conn As New SqlConnection("Data source=.\SQLEXPRESS; Database=yours;Integrated Security=true")
   Dim cmd As SqlCommand
   Dim reader As SqlDataReader
   Dim r As Integer
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim SqlQuery As String = "select * from table WHERE id = " & DataGridView1.SelectedRows(0).Cells(0).Value & ""

       Dim SqlCommand As New SqlCommand
       Dim SqlAdepter As New SqlDataAdapter
       Dim TABLE As New DataTable

       With SqlCommand
           .CommandText = SqlQuery
           .Connection = conn
       End With
       With SqlAdepter
           .SelectCommand = SqlCommand
           .Fill(TABLE)
       End With
       Dim crystal As New CrystalReport1
       crystal.SetDataSource(TABLE)
       CrystalReportViewer1.ReportSource = crystal
       CrystalReportViewer1.Refresh()

   End Sub


   Private Sub showdata()
       Dim conn As SqlConnection = New SqlConnection("Data source=.\SQLEXPRESS; Database=yours;Integrated Security=true")
       Dim sqlstr = "select * from table"
       Dim da As SqlDataAdapter = New SqlDataAdapter(sqlstr, conn)
       Dim ds As New DataSet
       da.Fill(ds)
       DataGridView1.DataSource = ds.Tables(0)



   End Sub

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



   End Sub



End Class

بدون استخدام الدتاقريد فيو وكذلك قاعدة البيانات اكسس
الرد }}}
تم الشكر بواسطة: hitman48
#12
وين الحلول يااستذة
الرد }}}
تم الشكر بواسطة:
#13
وين المساعدة ياستذة تكفون
الرد }}}
تم الشكر بواسطة:
#14
يا علي،

أنت مغير في برنامجك، بس ما ادري ايش اقولك عن طريقتك، لكن تفضل التعديل
PHP كود :
Imports System.Data
Imports System
.Data.OleDb
Public Class Form1
    Dim cmd 
As OleDbCommand
    Dim SQLstr 
As String "SELECT *FROM tabl1"
    
Dim tbl_ght_table As New DataTable
    Dim tbl_kind_table 
As New DataTable
    Dim myDatatable 
As DataTable
    Dim Bn1 
As New BindingSource
    Friend myPosition 
As Integer



    
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        
' قراءة قاعدة البيانات '
        
ReadDatabase()
        
btn_Save.Enabled False
        
'btn_update.Enabled = False
        '
1br.Enabled False
        ts
.Text "الصادر والوارد "
        '
        record_count()

    End Sub

    ' 
قراءة قاعدة البيانات '
    Private Sub ReadDatabase()
        Using da As New OleDbDataAdapter("SELECT * FROM [Tabl1] ", con)
            myDatatable = New DataTable
            da.Fill(myDatatable)
            Bn1.DataSource = myDatatable
            '
Me.DataGridView1.DataSource Bn1
        End Using
    End Sub

  



    
'مجموع السجلات
    Private Sub record_count()

        Label14.Text = " عدد السجلات " & Bn1.Position + 1 & _
                " من " & Bn1.Count() & " سجل / سجلات   "


    End Sub

    '
تنظيف التيكس بوكس
    
Public Sub cler()
        
Me.txtid.Text ""
        
Me.txt_date.Text ""
        
Me.tex1.Text ""
        
Me.tex.Text ""
        
Me.tex5.Text ""
        
Me.tex6.Text ""
        
Me.tex3.Text ""
        
Me.par.Text ""
        'Me.PictureBox1.Image = Nothing
    End Sub


    Dim id As Integer

    Private Sub btn_Add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Add.Click

        ' 
معرفة السنة الهجرية الحالية حسب التقويم الهجري نظام الويندوز '
        Dim nowHijriYear As Integer = New System.Globalization.HijriCalendar().GetYear(Now)
        ' 
معرفة السنة الهجرية الحالية حسب تقويم أم القرى في نظام الويندوز '
        ''Dim nowHijriYear As Integer = New System.Globalization.UmAlQuraCalendar().GetYear(Now)

        ' 
معرفة أكبر رقم مسجل للسنة الحالية '
        Dim maxHijriID As Integer = GetMaxHijriID(nowHijriYear)

        If maxHijriID <> -1 Then
            '
conn.Open()

            
'========== إضافة البيانات =========='
            
txtid.Text maxHijriID 1
            txt_date
.Text Date.Today
            tex1
.Text Date.Now
            
'usr.Text = Login.txt_Username.Text
            tme.Text = TimeOfDay
            dte.Text = Date.Today
            par.Text = maxHijriID + 1

            tex3.Focus()
            '
Using comm As New OleDbCommand(" SELECT MAX([HijriID]) FROM [Tab1] WHERE [HijriYear] = @HijriYear "conn)
            
'    comm.Parameters.AddWithValue("@HijriYear", nowHijriYear)

            '    
txtid.Text maxHijriID 1

            
'End Using

            con.Close()
            Me.tex1.Text = ""
            Me.tex.Text = ""
            Me.tex5.Text = ""
            Me.tex6.Text = ""
            Me.tex3.Text = ""
            btn_Save.Enabled = True
            br.Enabled = True
            GroupBox1.Enabled = True
            Label13.Text = " جاهز لإضافة سجل جديد"
        End If
    End Sub

    Private Function GetMaxHijriID(ByVal hijriYear As Integer) As Integer
        Try

            con.Open()

            '
========== معرفة أكبر رقم مسجل للسنة الحالية =========='
            ' 
متغير من نوع أوبجكت تحسباً لرجوع قيمة فارغة '
            Dim maxHijriID As Object
            Using comm As New OleDbCommand(" SELECT MAX([HijriID]) FROM [tabl1] WHERE [HijriYear] = @HijriYear ", con)
                comm.Parameters.AddWithValue("@HijriYear", hijriYear)
                maxHijriID = comm.ExecuteScalar
            End Using
            ' 
في حالة القيمة الفارغة يتم تحويلها إلى رقم صفر '
            maxHijriID = IIf(maxHijriID.GetType Is GetType(System.DBNull), 0, maxHijriID)

            con.Close()

            Return maxHijriID

        Catch ex As Exception
            MsgBox(ex.Message)
            Return -1
        End Try
    End Function

    Private Sub txtm_subject_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        Select Case e.KeyChar
            Case "ا" To "ي", ControlChars.Back, Chr(Keys.Space)
                e.Handled = False
            Case Else
                e.Handled = True
        End Select
    End Sub

    Private Sub btn_exit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        
        Me.Close()
    End Sub
   
   

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        '
Me.ToolStripLabel1.Text "       مرحبا بك من جديد " Login.txt_Username.Text
        Me
.ToolStripLabel2.Text Format(Now"dd--MMMM--yyyy")
        
Me.ToolStripLabel3.Text "      الوقت الان  " TimeOfDay
    End Sub

    

    
Private Sub tex5_KeyPress(ByVal sender As System.ObjectByVal e As System.Windows.Forms.KeyPressEventArgsHandles tex5.KeyPress
        
If Char.IsControl(e.KeyChar) = False Then
            
If Char.IsDigit(e.KeyCharThen
            
Else
                
MsgBox(" الحقل لا يقبل الا الارقام فقط "MessageBoxIcon.Error)
                
e.Handled True
            End 
If
        
End If
    
End Sub

    
Private Sub tex10_KeyPress(ByVal sender As System.ObjectByVal e As System.Windows.Forms.KeyPressEventArgs)
        If 
Char.IsControl(e.KeyChar) = False Then
            
If Char.IsDigit(e.KeyCharThen
            
Else
                
MsgBox(" الحقل لا يقبل الا الارقام فقط "MessageBoxIcon.Error)
                
e.Handled True
            End 
If
        
End If
    
End Sub

    
Private Sub btn_Save_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btn_Save.Click
        
'btn_Sav()
        '
If Not check() Then
        
'    Exit Sub
        '
End If

        Try
            
' الحقل HijriYear هو فقط لمعرفة الرقم التسلسلي المفترض وضعه '
            ' الحقل HijriID هو من نوع رقم عادي وليس ترقيم تلقائي لأن الترقيم يتم برمجياً '

            ' معرفة السنة الهجرية الحالية حسب التقويم الهجري نظام الويندوز '
            
Dim nowHijriYear As Integer = New System.Globalization.HijriCalendar().GetYear(Now)
            
' معرفة السنة الهجرية الحالية حسب تقويم أم القرى في نظام الويندوز '
            ''
Dim nowHijriYear As Integer = New System.Globalization.UmAlQuraCalendar().GetYear(Now)

            
' معرفة أكبر رقم مسجل للسنة الحالية '
            
Dim maxHijriID As Integer GetMaxHijriID(nowHijriYear)

            If 
maxHijriID <> -1 Then
                con
.Open()

                
'========== إضافة البيانات =========='
                
Using comm As New OleDbCommand(" INSERT INTO [Tabl1] ( [HijriID],[HijriYear], [b], [b1], [b2],[b3],[b4],[b17],[g1],[g2],[g3] ) VALUES ( @HijriID,@HijriYear,@b,@b1,@b2,@b3,@b4,@b13,@g1,@g2,@g3) "con)


                    
comm.Parameters.AddWithValue("@HijriID"txtid.Text' نضيف واحد '
                    
comm.Parameters.AddWithValue("@HijriYear"nowHijriYear)
                    
comm.Parameters.AddWithValue("@b"tex.Text)
                    
comm.Parameters.AddWithValue("@b1"txt_date.Text)
                    
comm.Parameters.AddWithValue("@b2"tex3.Text)
                    
comm.Parameters.AddWithValue("@b3"tex5.Text)
                    
comm.Parameters.AddWithValue("@b4"tex6.Text)
                    
comm.Parameters.AddWithValue("@b17"par.Text)
                    
comm.Parameters.AddWithValue("@g1"usr.Text)
                    
comm.Parameters.AddWithValue("@g2"dte.Text)
                    
comm.Parameters.AddWithValue("@g3"tme.Text)
                    
'comm.Parameters.AddWithValue("@Pic", PictureBox1.Image)
                    comm.ExecuteNonQuery()
                End Using

                con.Close()
                MsgBox("تمت عملية الاضافة والحفظ في قاعدة البيانات بنجاح", 64, "حفظ الاضافة")

                id = txtid.Text

                ' 
قراءة قاعدة البيانات '
                ReadDatabase()
                '
br.Enabled False
                GroupBox1
.Enabled False
                cler
()
                
'MyCurrencyManager.Position = MyCurrencyManager.Count - 1
                '
record_count()
                
Label13.Text ""
            
End If

            
'Me.DataGridView1.CurrentCell = DataGridView1.Rows(Me.DataGridView1.Rows.Count - 1).Cells(0)

        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub


    Private Sub btn_cancel_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
        '
If MessageBox.Show("هل تريد حقا الغاء الامر ؟""تأكيد التراجع  "MessageBoxButtons.YesNoMessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
        
'    Label13.Text = "تم الغاء الامر"
        '    
Me.txtid.Text ""
        '    Me.txt_date.Text = Date.Today
        '    
Me.tex1.Text ""
        '    Me.tex.Text = ""
        '    
Me.tex5.Text ""
        '    Me.tex6.Text = ""
        '    
Me.tex3.Text ""
        '    br.Enabled = False
        '    
btn_Save.Enabled False
        
'Else

        '    
Exit Sub
        
'End If

        '
Me.Close()
    
End Sub

    
Private Sub btn_exit_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgsHandles btn_exit.Click
        End
    End Sub

    
Private Sub DataGridView1_CellClick(ByVal sender As ObjectByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
        
record_count()
    
End Sub

    
Private Sub Form1_Resize(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Resize
        Dim g 
As Graphics Me.CreateGraphics()
        
Dim startingPoint As Double = (Me.Width 2) - (g.MeasureString(Me.Text.TrimMe.Font).Width 2)
        
Dim widthOfASpace As Double g.MeasureString(" "Me.Font).Width
        Dim tmp 
As String " "
        
Dim tmpWidth As Double 0

        
Do
            
tmp += " "
            
tmpWidth += widthOfASpace
        Loop 
While (tmpWidth widthOfASpace) < startingPoint

        Me
.Text tmp Me.Text.Trim tmp
    End Sub

    
Private Sub br_Click(ByVal sender As System.ObjectByVal e As System.EventArgsHandles br.Click
        
'Dim myreport As New CrystalReport1
        '
myreport.SetParameterValue("Amount"TextBox1.Text)
        
''Sql "SELECT * FROM [Tbl1] "
        ''
Dim std(1) As String
        
''Std(0) = DataGridView1.CurrentRow.Cells(1).Value
        
''Dim Frme As New brcod(std(1))
        
Dim Report As New CrystalReport1
        
'da As New OleDbDataAdapter("SELECT * FROM [Tbl1] ", con)
        '
Report.SetParameterValue("HID"txtid.Text)

        
Dim q From x In myDatatable Where x.Item("id") = id
        
If q.Count 0 Then
            Report
.SetDataSource(q.CopyToDataTable)

            
Form2.CrystalReportViewer1.ReportSource Report
            Form2
.CrystalReportViewer1.Zoom(80%)
            
Form2.CrystalReportViewer1.Refresh()
            
Form2.Show()
        
End If
    
End Sub

    
Private Sub Button2_Click(ByVal sender As System.ObjectByVal e As System.EventArgs)
        
'frmBic.Show()




    End Sub

    Private Sub txtid_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtid.TextChanged
        '
Pi.BackgroundImage Code128(TextBox3.Text"A")
    
End Sub
End 
Class 
الرد }}}
تم الشكر بواسطة:
#15
اخي الوادي وضعت التعديل ولكن يعطي خطاء بسبب id

Dim q = From x In myDatatable Where x.Item("id") = id
الرد }}}
تم الشكر بواسطة:
#16
يا علي،

ترى التعديل أكثر من هذا السطر،
انسخ الكود كامل اللي في مشاركتي السابقة واستبدله بد اللي عندك.
الرد }}}
تم الشكر بواسطة:
#17
مشكور اخي الوادي على المساعدة واشتغل الكود 100%
بس ممكن تقولي واش الاضافة التي عملتها في الكود لو تكرمت
الرد }}}
تم الشكر بواسطة: الوادي
#18
يا علي،


التغييرات التي تمت لحل موضوعك أربع فقط:

(1)
عمل متغير id:
تم عمل المتغير على مستوى الفورم أي ليس داخل أي إجراء من أجل الاحتفاظ رقم id للسجل بشكل عام لكود الفورم
Private id As Integer


في حدث زر الحفظ:

(2)
تم الاحتفاظ بعد ظهور رسالة تمام عملية الحفظ بالرقم الموجود في txtid.Text والذي هو رقم الصادر الوار
id = txtid.Text


في حدث زر طباعة الباركود:

(3)
تم عمل الاستعلام بناء على رقم المتغير id
Dim q = From x In myDatatable Where x.Item("id") = id

(4)
وبما أن نتيجة الاستعلام تكون مصفوفة لهذا تفقدنا عدد المصفوفة إذا كان ليس (صفرا) أي أنه توجد نتيجة عندها تتم إجراءات الطباعة
If q.Count > 0 Then



وأعتذر لعدم توضيحي للتغييرات

ولكني سعيد جددددددا بسؤالك (واش الاضافة التي عملتها في الكود)
الرد }}}
تم الشكر بواسطة:
#19
مشكور اخي الوادي على الايضاح
الرد }}}
تم الشكر بواسطة:
#20
اخي الوادي وجهتني مشكلة وهي عند حذف البيانات من قاعدة البيانات لتهيئة البرانامج للعمل علية فان كود الباركود لايعمل نهائي فما هو الحل لهذة المشكلة

شكراً تم حل المشكلة وذلك بتبديل هذا السطر

Dim q = From x In myDatatable Where x.Item("id") = id


بهذا السطر

Dim q = From x In myDatatable Where x.Item("HijriID") = id


هل الطريقة صحيحة ام ستسبب مشكلة فيما بعد
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف من الممكن طباعة كل سجل في صفحة مستقلة ( Report Viewer ) abomo3ath 2 803 24-09-23, 09:31 AM
آخر رد: abomo3ath
  طباعة داتا جريد في جدولين على الريبورت ahmed_elwerfalli 1 514 21-08-23, 05:53 PM
آخر رد: Taha Okla
  [سؤال] مشكلة في طباعة footer تقرير كريستال ريبورت i1982 5 1,121 29-03-23, 11:30 PM
آخر رد: sanyor77
  طباعة بيانات من عدّة جداول عبد العزيز البسكري 2 2,392 19-07-21, 12:37 AM
آخر رد: Lathe1
  طباعة سجلات متعددة فى تقارير متعددة mr_hso 0 1,566 14-09-20, 06:09 PM
آخر رد: mr_hso
  لا استطيع طباعة التقرير bassant 6 2,563 09-06-20, 10:43 AM
آخر رد: bassant
  [VB.NET] طباعة كريستال ريبورت tahaayyoub 0 1,692 29-04-20, 04:11 AM
آخر رد: tahaayyoub
  [VB.NET] معالجة مشكل طباعة الفاتورة دون حفضها sniperjawadino 5 2,494 07-10-19, 12:39 PM
آخر رد: sniperjawadino
  [سؤال] ظهور خطأ no such interface عند طباعة صفحة word ويندوز windows 10 عبد الله 2 2,142 01-10-19, 03:41 AM
آخر رد: عبد الله
  [سؤال] طباعة كل سجل في الجدول بصفحة محاسب يوسف 13 6,920 04-09-19, 01:50 PM
آخر رد: Hassan.syria

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم