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

عرض داتا قريد واضافه حقول جديدة وتعديلها وحفظها من خلال فورم أخرى

مغلق
بدأه عابرة في 24 مايو 2007 · 7 رد · 2,274 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مساء الخير

قمت بإنشاء جدول داخل قاعدة بيانات الاوراكل 9i عن طريق استخدام SQL Plus

باستخدام الأمر التالي:

create table tableTower
(
towerNo int , 
towerName varchar2(50),
radius number(7,2),
towerCost(7,2),
towerCoverage(7,2),
towerCapacity(7,2),
fileNo int
)

وفي الفيجوال بيسك 2003 قمت بالتالي:

1- انشئت Structure + عدد من الفورمز

بيانات الـ Structure كالتالي:

Public Structure structTowerInfo
	Public name As String
	Public id As Integer
	Public radius As Double
	Public cost As Double
	Public coverage As Double
	Public capacity As Double
	Public SavedToDB As Boolean
End Structure

- الفورمز التي سأتحدث عنها هي :

أ) formParent

وهي الأساسية ومن خلالها أقوم باستدعاء الداتا قريد والتعديل عليها وحفظها

ب) frmTowerInformation

والتي داخلها الداتا قريد واسميته DataGridTowInfo

وتحتوي الكود التالي:

Private Sub frmTowerInformation_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		Dim frmTowInfo As structTowerInfo
		frmTowInfo.SavedToDB = False
		dt.Columns.Add(New DataColumn("Tower No ", GetType(String)))
		dt.Columns.Add(New DataColumn("Tower Name", GetType(String)))
		dt.Columns.Add(New DataColumn("Radius ", GetType(String)))
		dt.Columns.Add(New DataColumn("Coverage ", GetType(String)))
		dt.Columns.Add(New DataColumn("Capacity", GetType(String)))
		dt.Columns.Add(New DataColumn("Cost", GetType(String)))

	End Sub

2)

عند الحفظ باسم

أقوم باستدعاء هذه الداله

Private Sub saveTowInfoToDataBase(ByVal FileNum As Integer)
		Dim frmTowInfo As frmTowerInformation
		frmTowInfo = CType(Me.MdiChildren(0), frmTowerInformation)
		Dim list As ArrayList = هنا المفروض يعد عدد الحقول في الداتا قريد
		Dim TowInfo As structTowerInfo
		 If list.Count > 0 Then
		For Each TowInfo In list
			If TowInfo.SavedToDB = False Then
				SaveTowInfoToTable(FileNum, TowInfo)
				TowInfo.SavedToDB = True
			End If
		Next
		 End If
	End Sub

هذه الدالة يتم استدعائها من خلال الدالة saveTowInfoToDataBase

	Private Function SaveTowInfoToTable(ByVal FN As Integer, ByVal TowInfo As structTowerInfo) As Boolean
		Try
			Dim con As New OracleConnection

			con.ConnectionString = "User Id=Scott;Password=tiger;Data Source=oradb"
			con.Open()
			Dim cmd As New OracleCommand
			cmd.CommandType = CommandType.Text
			cmd.Connection = con

			cmd.CommandText = "insert into tableTower(TowerNo,TowerName,Radius," & _
						"Cost,Coverage,Capacity,FileNo) values(" & TowInfo.id & _
						",'" & TowInfo.name & "'," & TowInfo.radius & "," & _
						TowInfo.cost & "," & TowInfo.coverage & "," & TowInfo.capacity & "," & _
						FN & ")"


			Dim success As Boolean

			If cmd.ExecuteNonQuery() = 1 Then
				success = True
			Else
				success = False
			End If

			cmd.Dispose()
			con.Close()
			con.Dispose()
			Return success
		Catch ex As Exception
			MessageBox.Show(ex.Message)
		End Try
	End Function

أما تعبئة الداتا قريد

فباستخدام الكود:

Private Sub fillTowerListFromDataBase(ByVal FileNum As Integer)

		Dim con As New OracleConnection

		con.ConnectionString = "User Id=Scott;Password=tiger;Data Source=oradb"
		con.Open()
		Dim cmd As New OracleCommand
		cmd.CommandType = CommandType.Text
		cmd.Connection = con
		cmd.CommandText = "select * from tableTower where FileNo = " & FileNum

		Dim dr As OracleDataReader
		Dim TowInfo As structTowerInfo

		dr = cmd.ExecuteReader()
		dr1 = dt.NewRow()
		While dr.Read()
			dr1(0) = dr(0)
			dr1(1) = dr(1)
			dr1(2) = dr(2)
			dr1(3) = dr(3)
			dr1(4) = dr(4)
			dr1(5) = dr(5)
			' psquarelist.Add(TowInfo)
		End While
				cmd.Dispose()
		con.Close()
		con.Dispose()
	End Sub

علما بأن المتغيرين التاليين عرفتهم في الاعلى:

Public Class frmTowerInformation
	Inherits System.Windows.Forms.Form
	Dim dt As New DataTable
	Dim dr1 As DataRow

معلوماتي قليلة في هذا الشأن

لم تفلح كل محاولاتي لتعبئة الداتا قريد

ولا مناداتها من خلال الفورم الرئيسية

أتمنى منكم مساعدتي

post-96763-1180020526_thumb.jpg

تم تعديل هذه المشاركة بواسطة عابرة في 24 مايو 2007 في 18:35

#2

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

الموضوع هذا جيد لذلك اريد المساعدة

في مثال عملتة ربما يكون مقارب الي البيانات المطلوبة ولكني استخدمتة علي الفيجول بيسك دوت نت 2005 مع قاعدة بيانات اكسس

ملاحظة : التعامل مع قاعدة بيانات اكسس نفس التعامل مع اوراكل او اس اكيو ال سيرفر بس الاختلاف في طريقة الاتصال

وايضا ارجو ان يكون عندك فيجول بيسك 2005 لانة ما بختلف كتير عن 2003

ولكن اذا اضطريت احولة كلة علي الفيجول بيسك 2003 انا مستعد

ولكن قبل كل شئ جربي هذا المثال المرفق

test.rar

test.rar

test.txt

تم تعديل هذه المشاركة بواسطة sammoorraa_9999 في 24 مايو 2007 في 20:41

sssfd8.jpg
#3
sammoorraa_9999 كتب:
السلام عليكم ورحمة الله

الموضوع هذا جيد لذلك اريد المساعدة

في مثال عملتة ربما يكون مقارب الي البيانات المطلوبة ولكني استخدمتة علي الفيجول بيسك دوت نت 2005 مع قاعدة بيانات اكسس

ملاحظة : التعامل مع قاعدة بيانات اكسس نفس التعامل مع اوراكل او اس اكيو ال سيرفر بس الاختلاف في طريقة الاتصال

وايضا ارجو ان يكون عندك فيجول بيسك 2005 لانة ما بختلف كتير عن 2003

ولكن اذا اضطريت احولة كلة علي الفيجول بيسك 2003 انا مستعد

ولكن قبل كل شئ جربي هذا المثال المرفق

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

شكرا جزيلا لك

للأسف لم اثبت الـ 2005

ولا استطيع التحويل الان، قمت بعمل المشروع بالكامل على ال 2003 والاوراكل وتبقت هذه الجزئية كتحسين للنتائج

سأحاول تطبيق ما جاء في الملف النصي

بارك الله فيك

تم تعديل هذه المشاركة بواسطة عابرة في 24 مايو 2007 في 20:43

#4

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

حولت البرنامج في المثال السابق الي الفيجول بيسك 2003 في المثال المرفق

ومستعد لأي سؤال في ذلك

وهذة صورة البرنامج المصمم

eelq9.jpg

test2.rar

تم تعديل هذه المشاركة بواسطة sammoorraa_9999 في 24 مايو 2007 في 21:10

sssfd8.jpg
#5

جزاك الله الجنة وفرج همك ونفع بك

بإذن الله أرد عليك قريب بالنتائج

ألف شكر لك

#6

مع الأسف حاولت كثير ولم أفلح

عندي 3 فورمز ( forums)

1- وحدة منهم رئيسية: formParent

وهذه صورتها:

/uploads/...-1180020526.jpg

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

2- frmTowerInformation

سبق وشرحتها وكلتخيص لها:

عليها data grid اسمه : DG

ومن خلال الخصائص--> table style --> اخترت Collection --> اضفت DataGridTableStyle1 اسميته TS --> ثم Grid columns styles اخترت Collection واضفت الاتي:

CS1 واسميته Tower No

CS2 واسميته Tower Name

CS3 واسميته Radius

CS4 واسميته Coverage

CS5 واسميته Capacity

CS6 واسميته Cost

وهذا الكود

Public Class frmTowerInformation
	Inherits System.Windows.Forms.Form
	Dim dt1 As New DataTable
	Dim dr1 As DataRow

	Private Sub frmTowerInformation_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		'Dim frmTowInfo As structTowerInfo
		'frmTowInfo.SavedToDB = False
		'dt1.Columns.Add(New DataColumn("Tower No ", GetType(String)))
		'dt1.Columns.Add(New DataColumn("Tower Name", GetType(String)))
		'dt1.Columns.Add(New DataColumn("Radius ", GetType(String)))
		'dt1.Columns.Add(New DataColumn("Coverage ", GetType(String)))
		'dt1.Columns.Add(New DataColumn("Capacity", GetType(String)))
		'dt1.Columns.Add(New DataColumn("Cost", GetType(String)))
		Dim con As New OracleConnection

		con.ConnectionString = "User Id=Scott;Password=tiger;Data Source=oradb"
		con.Open()
		Dim cmd As New OracleCommand
		cmd.CommandType = CommandType.Text
		cmd.Connection = con
		cmd.CommandText = "select * from tableTower "

		If Not DG.TableStyles.Contains("tableTower") Then
			TS.MappingName = "tableTower"
			CS1.MappingName = "towerNo"
			CS2.MappingName = "towerName"
			CS3.MappingName = "radius"
			CS4.MappingName = "towerCoverage"
			CS5.MappingName = "towerCapacity"
			CS6.MappingName = "towerCost"
			DG.SetDataBinding(cmd.CommandText, "")
		End If

		Dim dr As OracleDataReader
		Dim TowInfo As structTowerInfo

		' dr = cmd.ExecuteReader()
		'dr1 = dt1.NewRow()
		'While dr.Read()
		'dr1(0) = dr(0)
		'dr1(1) = dr(1)
		'dr1(2) = dr(2)
		'dr1(3) = dr(3)
		'dr1(4) = dr(4)
		'dr1(5) = dr(5)
		' psquarelist.Add(TowInfo)
		'End While
		'dt.Rows.Add(dr1)
		'i += 1
		'frmTowInfo.DataGridTowInfo.DataSource = dt
		'frmTowInfo.DataGridTowInfo.Refresh()
		cmd.Dispose()
		con.Close()
		con.Dispose()


	End Sub

	Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
		Me.Close()
	End Sub
End Class

أما الفورم الثانية والتي عليها داتا قريد أيضا (FrmResult)

فتأخذ بيناتها من نتائج أحد الدوال وليس من قاعدة البيانات

وقد قمت فعلا بتشغيلها على نفس الفورم الرئيسية (formParent)

أي أنني وضعت الداتا قريد داخل لformParent واشتغلت

ولكن عندما نقلتها على فورم ثانية FrmResult ويتم مناداتها من الفورم الرئيسية formParent لم تعمل

وقد قمت ببرمجتها كالتالي:

من formParent

عرفت متغيرين في الكلاس:

Public Class formParent
	Inherits System.Windows.Forms.Form
	Dim dt As New DataTable
	Dim dr As DataRow
end class

rivate Sub formParent_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

		dt.Columns.Add(New DataColumn("Cluster No ", GetType(String)))
		dt.Columns.Add(New DataColumn("Coverage ", GetType(String)))
		dt.Columns.Add(New DataColumn("Capacity", GetType(String)))
		dt.Columns.Add(New DataColumn("Cost", GetType(String)))
		dt.Columns.Add(New DataColumn("Tower Site", GetType(String)))
		dt.Columns.Add(New DataColumn("Cluster Goup", GetType(String)))

	End Sub

وهذه الدالة ويتم مناداتها من دالة أخرى داخل formParent ومن خلالها يتم تعبتئة الداتا قريد لاظهار النتائج

	Private Sub affichage(ByVal square As classSquare, ByVal i As Integer)

		Dim childForm As New FrmResult
		'childForm = CType(Me.ActiveMdiChild, FrmResult)

		dr = dt.NewRow()
		dr(0) = i
		dr(1) = square.pMediodGroup.coverage
		dr(2) = square.pMediodGroup.capacity
		dr(3) = towerinfo.cost
		dr(4) = square.pMediodGroup.Mediod
		dr(5) = strClustersElements

		dt.Rows.Add(dr)

		childForm.DataGrid1.DataSource = dt
		childForm.DataGrid1.Refresh()

		   End Sub

كما اضفت زر عند الضغط عليه يتم اظهار النتائج:

Private Sub cmdsresult_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdsresult.Click
		Dim frm2 As New FrmResult
		frm2.Show()
	End Sub

أرجو ارشادي لاخطائي فأنا أتعثر كثيرا في البرمجة :(

#7

للرفع

لم استطع تحويل الكود للقاعدة اوراكل

#8

تم حل المشكلة :)

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

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

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

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

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

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