الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة في كود التالي والسابق

بدأه thepast في 12 مايو 2013 · 12 رد · 2,334 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

 

 

انا استخدم هذا الكود  في زر السابق    بمعنى ينتقل الى السجل اللذي قبله

 

        If i = ds.Tables(0).Rows.Count - 1 Then
            i -= 1
            TextBox1.Text = ds.Tables(0).Rows(i)("id").ToString()
            TextBox2.Text = ds.Tables(0).Rows(i)("job_name").ToString()
            
        Else
            Response.Write("You have reached the begining of the records in this category")
        End If

المشكلة اذا ضغطه   ينتقل الى السجل الاول     

 

ما هو الخطأ في هذا الكود

 

 

وايضا كود    التالي   اللذي ينتقل الى السجل التالي

 

 If i < ds.Tables(0).Rows.Count - 1 Then
            i += 1
            TextBox1.Text = ds.Tables(0).Rows(i)("id").ToString()
            TextBox2.Text = ds.Tables(0).Rows(i)("job_name").ToString()
           
        Else
            Response.Write("You have reached the end of records in this category!!")
        End If

اذا قمت بالضغط عليه   يتنقل الى السجل اللذي بعده مره وحده فقط  وبعده  يقف

 

 

ارجووووكم ساعدوني في الكودين

#2

ارجووووووووووووو المساعدة

#3

مرفق مثال يوضح طريقة التنقل بين السجلات

 

وهذا رابط مفيد جدا للمبتدئين في دراسة ADO.Net

 

البدء مع ADO.NET,الدرس الشامل - طريقة الاتصال والاضافة والتعديل والحذف والبحث والطباعة

ApplicationG2.rar

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

جربت الكود اشتغل بس نفس المشكلة ظهرت في كود التالي والسابق

لاداري مالحل

#5

اين عرفت المتغير  i ?

Samir Ibrahim

VFP Blog

VB.NET Blog

#6

هذا الكود اللذي وضعته

 

ارجووكم المساعدة           المشكلة في     كود    التالي      والسابق

 

كود السابق :   برجع  لاول سجل   

 

كود التالي :  يذهب مرة واحدة للسجل التالي وبعدها  يقف         واذا كنت واقف على السجل الاخير     وضغت على التالي   ياتي  بثاني سجل  

 

 

 

Imports System
Imports System.Data
Imports System.Data.OleDb



Public Class WebForm1
    Inherits System.Web.UI.Page
    Dim Con As New OleDb.OleDbConnection()  REM HnHn : "تعريف كائن الاتصال "
    'Dim cmd As New OleDbCommand()          REM HnHn : " تعريف كائن أمر لتمرير الاستعلام ثم الاتصال  "
    Dim Dp As OleDb.OleDbDataAdapter        REM HnHn : " تعريف كائن تدفق البيانات بمعنى المصدر أو المزود "
    Dim rs As New DataSet()                 REM HnHn : "تعريف كائن التعامل مع البيانات  في الذاكرة  "
    'Dim ConnString As String               REM HnHn : "تعريف متغير لتخزين مسار القاعدة "
    'Shared                                 REM HnHn : لمشاركة القاعدة على مستوى المشروع 
    Shared ConnString As String = "Provider=MSDAORA.1;Password=tiger;User ID=scott;Data Source=orcl;Persist Security Info=True"

    Dim SQL As String                       REM HnHn : "متغير لتخزين الاستعلام"
    Dim Rec As Integer
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Con.ConnectionString = ConnString     REM HnHn : "الاتصال بمسار القاعدة"
        Con.Open()                            REM HnHn : فتح الاتصال 
        SQL = "SELECT * fROM dept order by deptno"         REM HnHn : "وضع استعلام لسحب البيانات من الجدول"

        'cmd.Connection = Con
        'cmd.CommandText = SQL
        'cmd.ExecuteNonQuery()

        Dp = New OleDb.OleDbDataAdapter(SQL, Con)     REM HnHn : "تدفق البيانات مع الاتصال في المتحول"
        Dp.Fill(rs, "dept")                        REM HnHn : "التعامل مع سجلات الجدول في الدات سيت"
        Con.Close()                                   REM HnHn : أغلاق الاتصال بالقاعدة 
        Rec = 0                                       REM HnHn : "رقم السجل الاقتراضي"

        Call ViewRecord()
        REM HnHn : Check Then Open DataBase OR NOT 
        'If (Con.State And ConnectionState.Open) <> 0 Then
        'MsgBox("تم فتح الاتصال بنجاح")
        'Else
        'MsgBox("تم اغلاق الاتصال")
        'End If
    End Sub

    Private Sub ViewRecord()
        REM HnHn :  اظهار بيانات الجدولفي الحقول المخصصة 
        TextBox1.Text = rs.Tables("dept").Rows(Rec).Item(0)
        TextBox2.Text = rs.Tables("dept").Rows(Rec).Item(1)
        'TextBox3.Text = rs.Tables("HnHnEmp").Rows(Rec).Item(2)
        ' Label9.Text = Rec & Space(2) & "OF" & Space(2) & rs.Tables("HnHnEmp").Rows.Count



    End Sub

    Protected Sub first_Click(ByVal sender As Object, ByVal e As EventArgs) Handles first.Click

        REM HnHn : First
        Rec = 0
        Call ViewRecord()
    End Sub

    Protected Sub prev_Click(ByVal sender As Object, ByVal e As EventArgs) Handles prev.Click
        Rec = Rec - 1
        'HnHn : التحقق من المتغيير اذا كان اقل من الصفر واعادة تخزين اخر قيمة   
        If Rec < 0 Then

            MsgBox("لا توجد سجلات للأنتقال إليها")
            Rec = 0
            Exit Sub
        Else
            Call ViewRecord()
        End If
    End Sub

    Protected Sub nex_Click(ByVal sender As Object, ByVal e As EventArgs) Handles nex.Click
        Rec = Rec + 1
        'HnHn : التحقق من المتغيير اذا كان اكبر من مجموع عدد السجلات الكلي واعادة تخزين اخر قيمة 
        If Rec > rs.Tables("dept").Rows.Count - 1 Then
            MsgBox("لا توجد سجلات للأنتقال إليها")
            Rec = rs.Tables("dept").Rows.Count - 1
            Exit Sub
        Else
            Call ViewRecord()
        End If
    End Sub

    Protected Sub last_Click(ByVal sender As Object, ByVal e As EventArgs) Handles last.Click
        Rec = rs.Tables("dept").Rows.Count - 1
        Call ViewRecord()
    End Sub
End Class

ارجوووك المساعدة

#7

الكود شغال 100% على Winform application

 

الا اذا كنت تقصد WebForm application??

Samir Ibrahim

VFP Blog

VB.NET Blog

#8

نعم هذا مااقصده    webform application

 

لانه اشتغل معي كود الاول   والاخير   بس  كود  التالي والسابق    مش مظبوط

تم تعديل هذه المشاركة بواسطة thepast في 13 مايو 2013 في 16:21

#9

هل يختلف  الويب فورم   عن  الويندو فورم 

 

 

بس كل الاكود اشتغلت معي   معادا   كودي   التالي والسابق

 

 

ارجووووو المساعدة

#10

في webform عندما تضغط على button فانه يعمل postback, postpack load the page again.

يعني هذا ان الكود بداخل page_load سوف ينفذ وليس هو الحال كما في winform حيث form_load تنفذ مرة واحدة فقط

لا اعلم ما هو الحل في حالتك

Samir Ibrahim

VFP Blog

VB.NET Blog

#11

مالحل ياشباب ارجوووووووو المساعدة

#12

انا لست خبيرا بال asp.net ولكن هذا السؤال اثار اهتمامي

 

المشكلة هى بالحفاظ على قيمة المتغير Rec مع وجود Postback or CallBack

 

لقد اجريت بعد التحريات والابحاث وقد علمت ان هناك اكثر من طريقة لعمل ذلك Cache(), Session() viewstate() s

 

انا جربت cache() ولقد عملت جيدا ولكني مع ذلك انصحك بقراءة المزيد عن هذه الطريقة لترى ان كانت فعالة او لديها SideEffect on server

 

Public Class WebForm1
    Inherits System.Web.UI.Page

    Dim Con As New OleDb.OleDbConnection()  REM HnHn : "تعريف كائن الاتصال "
    Dim Dp As OleDb.OleDbDataAdapter        REM HnHn : " تعريف كائن تدفق البيانات بمعنى المصدر أو المزود "
    Dim rs As New DataSet()                 REM HnHn : "تعريف كائن التعامل مع البيانات  في الذاكرة  "
    Shared ConnString As String = My.Settings.cnn

    Dim SQL As String                       REM HnHn : "متغير لتخزين الاستعلام"
    Dim Rec As Integer 
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Me.IsPostBack then
            Rec = Cache("row_ndx")
            rs  = Cache("rs")
        Else
            Con.ConnectionString = ConnString     REM HnHn : "الاتصال بمسار القاعدة"
            Con.Open()                            REM HnHn : فتح الاتصال 
            SQL = "SELECT * fROM customers order by company"         REM HnHn : "وضع استعلام لسحب البيانات من الجدول"
            Dp = New OleDb.OleDbDataAdapter(SQL, Con)     REM HnHn : "تدفق البيانات مع الاتصال في المتحول"
            Dp.Fill(rs, "dept")                        REM HnHn : "التعامل مع سجلات الجدول في الدات سيت"
            Con.Close()                                   REM HnHn : أغلاق الاتصال بالقاعدة 

            Cache.Insert("row_ndx",Rec)
            Cache.Insert("rs",rs)
        End If
        
        Call ViewRecord()

    End Sub
    
    Private Sub ViewRecord()
        REM HnHn :  اظهار بيانات الجدولفي الحقول المخصصة 
        TextBox1.Text = rs.Tables("dept").Rows(Rec).Item(0)
        TextBox2.Text = rs.Tables("dept").Rows(Rec).Item(1)
    End Sub

    Protected Sub first_Click(ByVal sender As Object, ByVal e As EventArgs) Handles first.Click

        REM HnHn : First
        Rec = 0
        Cache.Insert("row_ndx",Rec)
        Call ViewRecord()
    End Sub

    Protected Sub prev_Click(ByVal sender As Object, ByVal e As EventArgs) Handles prev.Click
        Rec = Rec - 1
        'HnHn : التحقق من المتغيير اذا كان اقل من الصفر واعادة تخزين اخر قيمة   
        If Rec < 0 Then
            MsgBox("لا توجد سجلات للأنتقال إليها")
            Rec = 0
        Else
            Call ViewRecord()
        End If
        Cache.Insert("row_ndx",Rec)
    End Sub

    Protected Sub nex_Click(ByVal sender As Object, ByVal e As EventArgs) Handles nex.Click
        Rec = Rec + 1
        'HnHn : التحقق من المتغيير اذا كان اكبر من مجموع عدد السجلات الكلي واعادة تخزين اخر قيمة 
        If Rec > rs.Tables("dept").Rows.Count - 1 Then
            MsgBox("لا توجد سجلات للأنتقال إليها")
            Rec = rs.Tables("dept").Rows.Count - 1
        Else
            Call ViewRecord()
        End If
        Cache.Insert("row_ndx",Rec)
    End Sub

    Protected Sub last_Click(ByVal sender As Object, ByVal e As EventArgs) Handles last.Click
        Rec = rs.Tables("dept").Rows.Count - 1
        Cache.Insert("row_ndx",Rec)
        Call ViewRecord()
    End Sub
End Class

 

 

تم تعديل هذه المشاركة بواسطة samir ibrahim في 14 مايو 2013 في 10:22

Samir Ibrahim

VFP Blog

VB.NET Blog

#13

مشكوووور يااخي

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…