مساء الخير
قمت بإنشاء جدول داخل قاعدة بيانات الاوراكل 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 Sub2)
عند الحفظ باسم
أقوم باستدعاء هذه الداله
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
معلوماتي قليلة في هذا الشأن
لم تفلح كل محاولاتي لتعبئة الداتا قريد
ولا مناداتها من خلال الفورم الرئيسية
أتمنى منكم مساعدتي

