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

كيف يتم الانتقال يدويا بين البيانات Next و Prievous بالكود

بدأه خيال وحب في 1 أبريل 2009 · 6 رد · 864 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

:wub:

صباحكم|مسائك ورد جوري

اريد كود ... التالي - السابق - اضافة جديد - الحذف ...

(اما الحفظ موجود عندي بالباراميترز)

كيف تظهر لدي البيانات هنا استخدمت كونكشن سترينج وتحقق الشرط الذي اريد ولكن يتبقى الاكواد السابقة اعلاه

Public constr As New SqlConnection()
	Public cmd3 As New SqlCommand()
	Public dr3

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		Me.Label2.Text = Me.Session("modulepara")

		constr.ConnectionString = ConfigurationManager.ConnectionStrings("OESConnString").ToString
		constr.Open()
		cmd3.Connection = constr
		cmd3.CommandText = "Select * from Questions  where [Module Exam] = '" & Me.Label2.Text & "' order by QuestionID DESC"
		getValues()

	End Sub

Function getValues()
		dr3 = cmd3.ExecuteReader()
		While dr3.Read
			Me.TextBox2.Text = dr3.GetInt32(0)
			Me.TextBox3.Text = dr3.GetString(2).ToString()
			'Me.TextBox5.Text = dr3.GetString(3).ToString()
		End While
		Return 0
	End Function

محاولتي التي لم تعمل في كود Next

cmd3.Connection = constr
		cmd3.CommandText = "Select * from Questions  where (([Module Exam] = '" & Me.Label2.Text & "') and  (QuestionID = '" & Me.TextBox2.Text & "'+1))"
		getValues()

حيث اود الانتقال للسؤال الثاني في برنامج امتحانات متعدد الاسئلة والان يظهر لدي فقط السؤال الاول وعند الضغط على التالي يظهر الخطأ في بداية الكود.

شكرا للجميع

ودي وودادي

:wink:

في رعاية الله

تم تعديل هذه المشاركة بواسطة خيال وحب في 2 أبريل 2009 في 11:14

انا افكر اذا انا مبدع .... I think therfore I am Creative

#2

شباب للحين ما حصلت الحل لمشكلة الانتقال من recorde لآخر

انا افكر اذا انا مبدع .... I think therfore I am Creative

#3

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

أسهل طريقة هي استقبال البيانات في داتا تيبل ثم التحكم بها كيف ما تشاء

بعد هذا السطر

اقتباس
cmd3.Connection = constr

cmd3.CommandText = "Select * from Questions where (([Module Exam] = '" & Me.Label2.Text & "') and (QuestionID = '" & Me.TextBox2.Text & "'+1))"

getValues()

قم بعمل التالي

Dim dt As New DataTable() 
Dim da As New SqlDataAdapter(cmd) 
da.Fill(dt)

ثم قم بتعريف المتغير التالي

static int Counter = 0;

تحت زر الأول ضع التالي

TextBox1.Text = dt.Rows(0)("FieldName").ToString()

وتحت زر التالي ضع

Counter+=1 
TextBox1.Text = dt.Rows(Counter)("FieldName").ToString()

تحت زر السابق ضع

Counter-=1 
TextBox1.Text = dt.Rows(Counter)("FieldName").ToString()

تحت زر الأخير ضع

Counter = dt.Rows.Count - 1; 
TextBox1.Text = dt.Rows(Counter)("FieldName").ToString()

ستواجهك مشكلة عند وصول المستخدم للزر الأخير

فكر في حلها واذا لما تستطع سأضع لك الكود كاملاً إن شاء الله

ملحوظة هامة:

طريقتك في اضافة المتغيرات قديمة جدا وتعرض موقعك للإختراق بسهولة عن طريق الـ SQL Injection

والحل الأمثل هو استخدام الـ Parameters

بالتوفيق أخي

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#4

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

مرحبا بك Mr Mando ارجو ان توضح لي النقاط التالية

1 - تظهر رسالة خطأ لي في المتغير

static int Counter = 0;

مفادها : End of statement expected

2- سؤالي الاخر مالمقصود بال FieldName في الاكواد التالية ؟

.... جاري اكمال المحاولة بعد ردك ......

بالنسبة للملاحظة اشكرك على ذلك واذا كان لديك مقالة او شرح يوضح استخدام Parameter اتمنى ان تدرجه لاستفيد منه واحسن من اكوادي القديمة B)

3- وهل هو شبيه بكود الحفظ ؟

Dim DataSource As SqlDataSource = New SqlDataSource()
		DataSource.ConnectionString = ConfigurationManager.ConnectionStrings("DatabaseConnectionString1").ToString()
		DataSource.InsertCommand = "INSERT INTO [CustComments] ([Name], [Email], [Comments]) VALUES (@Name, @Email, @Comments)"
		Dim a, b, c As String
		a = Me.TextBox1.Text
		b = Me.TextBox2.Text
		c = Me.TextBox3.Text

		DataSource.InsertParameters.Add("Name", a)
		DataSource.InsertParameters.Add("Email", b)
		DataSource.InsertParameters.Add("Comments", c)
		DataSource.Insert()
		MsgBox("Data Sent")

تحياتي وانتظر ردك اخي الكريم

:bye:

تم تعديل هذه المشاركة بواسطة خيال وحب في 5 أبريل 2009 في 20:11

انا افكر اذا انا مبدع .... I think therfore I am Creative

#5

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

عفوا أنا كتبت لك تعريف المتغير بلغة السي شارب

قم بكتابته هكذا

Shared Counter As Integer = 0

وهذا يكتب داخل الـ Class وليس تحت أي زر

====================

المقصود بالـ FieldName هو إسم الحقل الموجود داخل قاعدة البيانات مثل CustComments و Name الموجودين في الكود الذي كتبته أنت

==========================

بالنسبة لاستخدام الـ Parameters فأنت بالفعل استخدمتها مع جملة Insert ولكن أهميتها الكبرى مع الـ Select لأنها تخرج بيانات من داخل قاعدة البيانات فلو أنك تتعامل مع جدول به بيانات هامة ولا تريد إلا عرض جزء معين فقط واستخدمت الطريقة العادية وهي دمج محتويات الـ Text Box إلى جملة الإستعلام فمن الممكن بسهولة التحايل على جملة الإستعلام وعرض بيانات ليس من حقل المستخدم رؤيتها

لذلك...

لكي نبتعد تماما عن هذه المشاكل نستخدم الـ Parameters في أي جملة سيكوال سواء كانت

Insert OR Update OR Select OR Delete

=====================================

ملحوظة أخيرة:

السطر التالي

MsgBox("Data Sent")

هذه الرسالة لن تظهر لمتصفح المستخدم ولكن ستظهر على السيرفر وللتعويض عنها نستخدم كود جافا سكريبت

تمنياتي لك بالتوفيق

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

#6

مرحبا .... لقد واجهت مشكلة في الكود السابق ولكنني حاولت البحث والتجربة كثيرا واخيرا استنتجت بعض الاكواد ومن خلال الداتا تيبل كتبت الكود التالي للانتقال بين البيانات والرجوع وهو يعمل جيدا الان

Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
	Inherits System.Web.UI.Page

	Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		If Not Page.IsPostBack Then
			Session("Record") = 0
		End If
		Dim City As String = "UK"
		Dim myConnection As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("MyDBConnectionString1").ConnectionString)
		Dim MyAdapter As New SqlDataAdapter("SELECT * FROM Emp WHERE City='" & City & "'", myConnection)
		Dim MyDataset As New DataSet()
		MyAdapter.Fill(MyDataset)
		Dim row_count As Integer = MyDataset.Tables(0).Rows.Count = 0
		Response.Write(row_count.ToString())
		Dim rec_count As Integer = Session("Record")
		Me.TextBox1.Text = (MyDataset.Tables(0).Rows(rec_count).Item(0))
		Me.TextBox2.Text = (MyDataset.Tables(0).Rows(rec_count).Item(1))
		Me.TextBox3.Text = (MyDataset.Tables(0).Rows(rec_count).Item(2))

	End Sub

	Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
		Dim city As String = Me.TextBox2.Text
		Dim myConnection As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("MyDBConnectionString1").ConnectionString)
		Dim MyAdapter As New SqlDataAdapter("SELECT * FROM Emp WHERE City='" & city & "'", myConnection)
		Dim MyDataset As New DataSet()
		MyAdapter.Fill(MyDataset)
		Dim rec_count As Integer = Session("Record")
		Dim row_count As Integer = MyDataset.Tables(0).Rows.Count - 1
		Response.Write(row_count.ToString())
		If rec_count <> 0 Then
			Session("Record") = rec_count - 1
			rec_count = rec_count - 1
			Me.TextBox1.Text = (MyDataset.Tables(0).Rows(rec_count).Item(0))
			Me.TextBox2.Text = (MyDataset.Tables(0).Rows(rec_count).Item(1))
			Me.TextBox3.Text = (MyDataset.Tables(0).Rows(rec_count).Item(2))
		Else
			Response.Write("first record")
		End If
	End Sub

	Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
		Dim city As String = Me.TextBox2.Text
		Dim myConnection As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("MyDBConnectionString1").ConnectionString)
		Dim MyAdapter As New SqlDataAdapter("SELECT * FROM Emp WHERE City='" & city & "'", myConnection)
		Dim MyDataset As New DataSet()
		MyAdapter.Fill(MyDataset)
		Dim rec_count As Integer = Session("Record")
		Dim row_count As Integer = MyDataset.Tables(0).Rows.Count - 1
		Response.Write(row_count.ToString())
		If rec_count <> row_count Then
			Session("Record") = rec_count + 1
			rec_count = rec_count + 1
			Me.TextBox1.Text = (MyDataset.Tables(0).Rows(rec_count).Item(0))
			Me.TextBox2.Text = (MyDataset.Tables(0).Rows(rec_count).Item(1))
			Me.TextBox3.Text = (MyDataset.Tables(0).Rows(rec_count).Item(2))
		Else
			MsgBox("Last record")
		End If
	End Sub
End Class

شكرا جزيلا لك اخي الكريم Mr. Mando واذا كان لديك الوقت ارجو ان تضع كود الباراميتر كاملا لمزيد من المعرفة :rolleyes: واشكر لك ملاحظاتك القيمة عن الاختراق ورسالة الجافا

تقبل احر التحايا مني .. خيال وحب

B)

تحياتي للجميع

انا افكر اذا انا مبدع .... I think therfore I am Creative

#7

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

أخي الكريم, جيد أنك حاولت قدر المستطاع حتى لا تنسى الحل

المشروع الموجود في المرفقات مكتوب بلغة السي شارب وطبعا التحويل إلى الفيجوال بيزك سهل جدا

هذا المشروع كتبناه أثناء التدريب في إحدى الشركات ستجد فيه كود الـ Navigations بالكامل

وفيه استخدام البارميتر أيضا وستجده داخل كلاس بإسم Cinema

حاول تستفيد منه بقدر ما تستطيع وإذ وجدت أي جزء منه غامض بالنسبة لك فقم بكتابته هنا وسأحاول شرحه لك إن شاء الله

TicketsOperations.rar

إذا أردت أن تـجـعـلـنـي سـعـيـداً ... فـعـلـمـنـي شـيـئـاً جـديـداً

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

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

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

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

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