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

اظهار رقم جديد عند الاضافة

مغلق
بدأه flodi في 12 يناير 2008 · 14 رد · 1,729 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ابحث عن كود يقوم بعرض للرقم الجديد للسجل المراد اضافته الى قاعدة بيانات البرنامج وذلك عند الضغط على زر ( اضافة ) علماً بان البرنامج مصمم بـ vb.net 2005 و sqlserver 2000 وحقل الرقم مضبوط على ان يكون مفتاح اساسي وغير مكرر ومتزايد تلقائياً الا انه عند تنفيذ البرنامج اقوم باضافة اي رقم وعند الحفظ يقوم باعطائه رقم متسلسل

اتمنى المساعدة من الجميع واصحاب الخبرة

شكراً

#2

السلام عليكم أخ flodi

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

متى يصـــل البُنيان تمامــه *** إذا كنت تبنيه وغـيرك يهدمه

لـو كان سهماً واحــداً لتقيته *** ولكنه ســهم وثانيـــة وثالثه

#3

الغى التزايد التلقائى للمفتاح الأساسى

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#4

الاخ sql_ado ممكن زيادة توضيح

لاني عملت dataset وعملت ربط للتكست بوكس معها ولكن عند الضغط على زر اضافه ياتيني برقم واحد وعند عمل اضافه ياتي بخطاء بانه لا توجد قيمه ولا يقبل قيمه فارغه

وبالنسبه للاخ njd هل عند الغاء التزايد التلقائي سيقوم باعطائي رقم تلقائي جديد عند كل اضافه

ولكم جزيل الشكر على الاهتمام والتجاوب

#5

الأخ flodi طبعاً لا يمكنك عند ألغاء التزايد التلقائى ان تزيد المفتاح تلقائيا ولكن هناك طريقة سهلة راجع البرنامج الذى أرفقته فى الموقع (فواتير البيع والشراء والعملاء والموردين ) وستجد الطريقة لعمل لتزايد المفتاح راجع البرنامج

كل من فى الوجود يطلب صيداً :::: غير ان الشباك مختلفات

#6

السلام عليكم إليك أخى هذا الكود وهو شغال مع اكسس وإن شاء الله يشتغل مع السيكول

ولو مشتغل ياريت تقول

  Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\yourdb.mdb")
	Dim ds As New DataSet
	Dim da As OleDbDataAdapter

	Dim bind As New BindingSource

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

			cn.Open()
			da = New OleDbDataAdapter("select * from Table1", cn)
			'/////////////////////////////////////////////////////
			da.FillSchema(ds, SchemaType.Source, "Table1")
			'/////////////////////////////////////////////////////
			da.Fill(ds, "Table1")
			cn.Close()

			bind.DataSource = ds
			bind.DataMember = "Table1"

			Me.TextBox1.DataBindings.Add(New Binding("Text", bind, "idd", True))
			Me.TextBox2.DataBindings.Add(New Binding("Text", bind, "sname", True))

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


	End Sub

	Private Sub btnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNew.Click

		bind.AddNew()
	End Sub

	Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
		bind.MoveNext()

	End Sub

	Private Sub btnProv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProv.Click
		bind.MovePrevious()
	End Sub

لاحظ كتابة السطر دا

			da.FillSchema(ds, SchemaType.Source, "Table1")

متى يصـــل البُنيان تمامــه *** إذا كنت تبنيه وغـيرك يهدمه

لـو كان سهماً واحــداً لتقيته *** ولكنه ســهم وثانيـــة وثالثه

#7

شكراً اخي sql_ado

الكود يعمل بشكل ممتاز

ولكن عندي مشكله في البحث اولاً لا اعلم كيف اجري بحث بشكل عام وثانياً ارغب باستخدام movenext و moveprevious بعد اجراء البحث وبالتالي يقوم باستعراض البيانات التي طلبة البحث عنها فقط

حالياً استخدم command في البحث

واكتب في خانة commandtext التالي

select * from tabel1

where id=@id

وفي الكود اكتب التالي

sqlcommand.parameters("@id").value=textbox1.text

dim read as sqlclient.sqldatareader

read=sqlcommand.executereader

textbox1.text=read.item("id")

etc

#8

ابشركم وجدت الحل

select * from table1 where (id=@id + N'%')

بقية الان مشكلة الانتقال بين السجلات المبحوث عنها

#9

السلام عليكم أخ flodi

أولاً إذا كنت تستخدم الـ dataset من وجهة نظرى دلوقتى انت عندك كل البيانات في الـ dataset موجودة في الكلاينت أى موجودة على application بتاعك سليم كل واحد ليه أسلوبة في البحث مادام انا عندى البيانات في الـ dataset ليه انا ابعت command يعملى بحث في الـ database دى وجهى نظرى وجرب الكود دا في موضوع البحث

ds.Tables(TableName).DefaultView.RowFilter = ColumnSearch & "like'*" & TextSearch & "*'"

الكود دا هيعرض البيانات المطابقة للبحث فقط من الـ dataset (وباقى البيانات طبعاً موجودة بس بعدين)

طبعاً ColumnSearch هو أسم الحقل المراد البحث بإستدلاله

و TextSearch هو نص البحث سليم

سواء حقل واحد أو أكثر ممكن بنفس زرار الفورمة بتاعت MoveNext و MoveLast تقدر تتنقل بين صفوف البحث عادى

علشان ترجع كامل البيانات الموجودة قبل البحث

نفس الكود مع أختلاف بسيط

ds.Tables(TableName).DefaultView.RowFilter = ""

والأختلاف دا هو نص البحث علامتين تنصيص "" فقط

أرجو الإستفادة ولو في مشاكل أرفع الكود كاملاً ونحاول نحله مع بعض

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

ولو عايز تستخدمها على أول حروف مثلاً

استبدل الكود السابق بالكود دا

ColumnSearch & " Like'" & TextSearch & "%'"

اخوك في الله

متى يصـــل البُنيان تمامــه *** إذا كنت تبنيه وغـيرك يهدمه

لـو كان سهماً واحــداً لتقيته *** ولكنه ســهم وثانيـــة وثالثه

#10

السلام عليكم اخي sql_ado

الحقيقه اني ما استخدم dataset

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

وضعت radiobutton بجانب كل textbox ارغب باستخدامه في البحث بحيث عن اختياره يصبح البحف على التكست المختار واستخدمت لذلك commandtext وكتبت فيها sql للبحث كما ذكرتلك في اخر مشاركه واقوم بعدها بعمل read ومقارنة القراءه واليك الكود كاملاً

If RadioButton1.Checked = True Then
			SqlCommand3.Parameters("@student_no").Value = TextBox1.Text
			Dim read As SqlClient.SqlDataReader
			SqlConnection1.Open()
			read = SqlCommand3.ExecuteReader
			If Not read.Read Then
				MsgBox("رقم الطالب خطاء")
				Call clear()
				Call cancel()
				read.Close()
				SqlConnection1.Close()
			Else
				TextBox1.Text = read.Item("student_no")
				TextBox2.Text = read.Item("student_name")
				ComboBox1.Text = read.Item("nationality")
				TextBox3.Text = read.Item("id_no")
				MaskedTextBox1.Text = read.Item("birth_date")
				TextBox7.Text = read.Item("birth_city")
				TextBox8.Text = read.Item("edu_degre")
				TextBox13.Text = read.Item("job_father")
				ComboBox3.Text = read.Item("city")
				TextBox5.Text = read.Item("books")
				MaskedTextBox2.Text = read.Item("student_date")
				TextBox11.Text = read.Item("student_order_no")
				TextBox9.Text = read.Item("file_no")
				TextBox12.Text = read.Item("doct_report")
				TextBox6.Text = read.Item("note")
				ComboBox2.Text = read.Item("gender")
				ComboBox4.Text = read.Item("teacher_name")
				ComboBox5.Text = read.Item("student_stat")
				TextBox4.Text = read.Item("teacher_report")
				TextBox10.Text = read.Item("teacher_no")
				TextBox14.Text = read.Item("student_pic")
				read.Close()
				SqlConnection1.Close()
			End If
		End If

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

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

#11

أخي الحبيب أفضل ان تعمل بنصيحة الاخ sql_ado حيث أنها أوفر لك من ذلك لأن الاداة sqldatareader لايمكن البحث عنها مباشرة كما في الاداة dataset

وبالنسبة للتنقل بين السجلات فليس من الاداة dataset بل من أداة الربط bindingsource

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

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

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#12

تصحيح للمشاركة رقم #8

الكود الصحيح هو التالي

select * from table1 where (id like @id + N'%')

اسف للخطاء الغير مقصود

#13

السلام عليكم

اخي sql_ado

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

وارفق لك الكود عسى ان تدلني على مكامن الاخطاء مشكور

Dim ds As New DataSet
	Dim da As New SqlDataAdapter
	Dim bind As New BindingSource
	Private Sub users_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		SqlConnection1.Open()
		da = New SqlDataAdapter("select * from em_user", SqlConnection1)
		da.FillSchema(ds, SchemaType.Source, "em_user")
		da.Fill(ds, "em_user")
		bind.DataSource = ds
		bind.DataMember = "em_user"
		Me.TextBox1.DataBindings.Add("Text", bind, "em_name")
		Me.TextBox2.DataBindings.Add("Text", bind, "id_no")
		Me.ComboBox1.DataBindings.Add("Text", bind, "em_level")
		Me.ComboBox2.DataBindings.Add("Text", bind, "em_sec")
		Me.UserText.DataBindings.Add("Text", bind, "em_user_name")
		Me.PassText.DataBindings.Add("Text", bind, "em_password")
		Me.Pass1Text.DataBindings.Add("Text", bind, "em_rpassword")
		Me.ComboBox3.DataBindings.Add("Text", bind, "user_type")
		SqlConnection1.Close()
		Label14.Text = username

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

If RadioButton1.Checked = True Then
			If TextBox1.Text = "" Then
				MsgBox("خطاء في البحث !! الرجاء ادخال اسم الموظف")
				Call cancel()
				Call clear()
			Else
				SqlCommand4.Parameters("@em_name").Value = TextBox1.Text
				Dim read As SqlClient.SqlDataReader
				SqlConnection1.Open()
				read = SqlCommand4.ExecuteReader
				If Not read.Read Then
					MsgBox("الاسم غير موجود")
					read.Close()
					SqlConnection1.Close()
					Call cancel()
					Call clear()
				Else
					TextBox1.Text = read.Item("em_name")
					ComboBox1.Text = read.Item("em_level")
					ComboBox2.Text = read.Item("em_sec")
					UserText.Text = read.Item("em_user_name")
					PassText.Text = read.Item("em_password")
					Pass1Text.Text = read.Item("em_rpassword")
					TextBox2.Text = read.Item("id_no")
					ComboBox3.Text = read.Item("user_type")
					read.Close()
					ds.Tables("em_user").DefaultView.RowFilter = "em_name" Like "@em_name + N '%'"
					SqlConnection1.Close()
				End If
			End If
		End If
#14

السلام عليكم يا أخ flodi

بإذن الله هيتم الرد قريباً جداً لضيق الوقت

متى يصـــل البُنيان تمامــه *** إذا كنت تبنيه وغـيرك يهدمه

لـو كان سهماً واحــداً لتقيته *** ولكنه ســهم وثانيـــة وثالثه

#15

اخي sql_ado شكراً لك وانا في انتظار ردك

هذا الموضوع مغلق.

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