شكرا يا استاذى و سوف اقوم بالبحث
درس في ADO.NET 2005
السلام عليكم
استاذى ياسر الشيخ
لو سمحت كنت عايز استفسر على حاجة الرسالة دى معناها اية
ExecuteReader: Connection Property has not been initialized
دى معناها اية انا رفقتلك المشروع معاه و ياريت تقولى الخطا فين
جزاك الله خيرا بهذا العلم الذى تفيد به الناس
السلام عليكم
استاذى ياسر انا اتبعت كل تعليماتك بس منجحتش انا مش عارف العمل اية
جزاك الله خيرا بهذا العلم الذى تفيد به الناس
أخي مرسي ..
سبب الرساله هو أنك عند إعداد كائن الامر لم تعده بشكل جيد حيث أنك لم تمرر له كائن الاتصال ولذلك لم يتمكن كائن الامر من تنفيذ الأمر ExecuteReader ..
ولي ملاحظة أنت أستخدمت الوضعين المتصل والمنفصل في أن واحد وبدون سبب وجيه ، ويبدو لي أنك مرتبك ومتلخبط على الأخر ، أرجو أن تعمل بنصيحتي وتباشر التعلم من الدرس الذي كنت قد وجهتك إليه لانك لو قرأت الدرس ما كنت لتقع في مثل هذا الخطأ البسيط .. وإليك الكود بعد التعديل ..
Imports System.Data
Imports System.Data.OleDb
Public Class showindg
Dim constr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" & Application.StartupPath & "\addnewemp.mdb"
Dim connection As New OleDbConnection(constr)
Dim mydr As OleDbDataReader
Dim cmd As New OleDbCommand
Private Sub showindg_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Try
connection.Open()
Dim sql As String = "select * from emps"
cmd.Connection = connection
cmd.CommandType = CommandType.Text
cmd.CommandText = sql
mydr = cmd.ExecuteReader
Dim strString As String
Do While mydr.Read
strString = "id : " & mydr.Item("id_emps") & vbNewLine & "name : " & mydr.Item("name_emps") & vbNewLine & "tel : " & mydr.Item("tel_emps") & vbNewLine & "salary : " & mydr.Item("salary_emps")
MsgBox(strString)
Loop
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
connection.Close()
mydr.Close()
End Try
End Sub
End Class1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .
2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .
-------------------------------------------------------
درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005
السلام عليكم اخى الكريم ياسر
اتقدم لك بالشكر لانى بجد لم اجد مثلك فى التعبير عن الكود بهذة البساطة .
الكود اشتغل بصورة سهلة جدا الله يكرمك والله بدعيلك من قلبى ان ربنا يزيدك من علمه بما تنفع بة الناس
جزاك الله كل الخير
السلام عليكم ورحمه الله و بركاتة استاذى ياسر
تحية طيبة لاهل الجنة و بعد
كان عندى استفسار اخر فى السطر دا
daTheBankAndData.Fill(MyDS, "TheBankAndData")
"thebankanddata"
انا مش فاهم دى اية انا علمت عليها و عملت كليل يمين و اختارت go to definition و لكن فتحت كلاسات كتيرة و مفهمتش حاجة يا ريت تفيدنى فى دى
الى ما لا نهاية شكرا ليك و جزاك الله خيرا على فكرة انا مش بشكرك عشان انت بتساعدنى ولا كن عشان انت بتساعد الناس كلها و ربنا يزودك اكتر انت تستحق كتير الله معاك
اخي مرسي ..
شرحها بالتفصيل تجده من خلال متابعتك للدروس الموجوده في الرابط التالي ...
والله الموفق ..
1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .
2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .
-------------------------------------------------------
درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005
السلام عليكم و رحمة الله و بركاتة الاستاذ الغلى ياسر الشيخ
شكرا على نصايحك الغالية و الله يجعلة فى ميزان حسناتك
و جارى البحث ................. :D
السلام عليكم أخي ياسر
عندي فورم أضفت داخل groupbox أربعة lables وأربعة textbox
يحتوي على رقم الموظف وإسم الموظف ورقم هاتفة وراتبة
وgroupbox آخر يحتوي على خمسة butons وهي للإضافة والحذف والتعديل وحفظ التعديل والبحث وأربعة butons للسجل الاول والتالي والسجل السابق والسجل الجديد
ولكن تعبت وأنا أجرب أكواد موجودة لكن مورايضية تضبط معاي ماني عارفة ليه ممكن تساعدوني وتقولولي كيف بيكون شكل الكود
في groupbox1 ول groupbox2 وأنا أستخدم برنامج sql server وvisual studio .net 2003
أنا بإنتظار ردكم >>>>
موفق لكل خير
السلام عليكم...
؟؟؟؟؟؟
اقتباستعبت وأنا أجرب أكواد موجودة لكن مورايضية تضبط معاي ماني عارفة ليه ممكن تساعدوني وتقولولي كيف بيكون شكل الكود
للأسف لم تحددي المشكله ، كما أنك لم تحددي الكود المطلوب ..
أرجو إرفاق مثال ..
1 - سقوط الإنسان ليس فشلاً ، ولكن الفشل أن يبقى حيث سقط .
2 - الفاشلون قسمان : قسم فكر ولم يفعل ، وقسم فعل ولم يفكر .
-------------------------------------------------------
درس في ADO.NET 2005, التعامل مع الجداول المترابطة في ado.net 2005
السلام عليكم أخ ياسر ..
ألحمدلله ألمشكلة تم حلها وذلك بفضل دروسك الرائعة والمفيدة ..
لكن ظهلرت لي مشكلة أخرى بالنسبة لكود الاضافة أضاف لي بيانات في قاعدة البيانات ولكن عند الكتابة في البرنامج باللغة العربية تتحول الكتابة في ألجدول الموجود في قاعدة
البيانات بهذا الشسكل؟؟؟؟؟؟ ؟؟؟؟ مكان كل حرف عربي يتم كتابتة في ال textbox مع أنني خزنت معلومات في ألجداول باللغة العربية وكله تمام ولكن لما أضيف البيانات عن طريق
ألنموذج تتحول ألكتابة إلى علامات إستفهام انقلب عقلي :wacko:
هذه المشكلة بالنسبة للحروف العربية فقط أما الأرقام والحروف الإنجليزية تكتب كما هي
من فضلك كيف يمكنني أن أحل هذه ألمشكلة .........
-waf
مرحبا أخي Yaser
أنا قرأت دروسك وقمت بتطبيقها على مشروعي لكن من ضمن الاشياء التي لم يتم تطبيقها
التنقل بين السجبلات عندي بعض الاستفسارات فيها أتمنى يتسع صدرك لها فمثلا هذا الكود
MyCurrencyManager.Position = 0
' Show the current record position...
ShowPosition()
إلى ماذا يرمز هذا MyCurrencyManager
وأين يتم التعريف عنه وفي أي حدث
عندي إستفسار آخر إذا ممكن
عندي فورم للدخول ولكن أبغاها تكون محملة داخل الفورم الأساسي Form1 داخل الفورم الاول كتبت الكود التالي
في Form1_load
Dim f2 as new form2
f2.show
كتبت هذا الكود ولكن عند إدخال كلمة السر وإسم المستخدم وأنقر على button1 للدخول
ماتدخلني على الفورم ألأساسي وتظل الفورم الاول معروض (فورم الدخول )
إذا ممكن ترد على تساؤلاتي مهمة جدا بالنسبة لي ومتوقف مشروعي على ردودك أخي Yaser
ألسلام عليكم
ليه مايوجد رد على أسإلتي .......
السلام عليكم
الأخ الكريم المبدع ما شاء الله تبارك الرحمن عليك يااستاذ ياسر ال الشيخ
تعرف من قال هالبيت / احمده ربي واشكره ومن مساوي عملي استفغره [ جاوب ]
أما عن طلبي فهو كالتالي
لدي جدولين الاول به id المفتاح الرئيسي
والجدول الثاني مرتبط بالمفتاح الرئيسي للجدول الاول
الذي اريده هو مثال ولو بسيط بحيث يكون الجدول الثاني الفرعي مربتط بالرئيسي
وموضوعك الذي اكتب فيه هو شرحا لذلك
لكن الاشكاليه التي عندي
انني اريد ان ادخل سجلات عن طريق الداتا قريد للجدول الثاني كلها مرتبطه برقم Id في الجدول الرئيسي
كمثال
الجدول الاول يحتوي على الاتي
اسم الجدول الرئيسي : Table1 وبه الحقول التاليه [ Id كفتاح رئيسي : نوعه ترقيم تلقائي , االاسم : نوعه نص ]
الجدول الثاني الفرعي اسمه :Table 2 وبه الحقول [ Id2 للربط ونوعه : رقم , الاجراءات : نوعه نص ]
ماااريده :
ان يكون الادخال سجلات الحدول الثاني في حقل الاجراءات عن طريق الدات قريد ويتم حفظه تلقائيا
للتوضيح
Id = 1 تابع له من الجدول الثاني : اجراء 1 اجراء 2 اجراء 3
كذلك طباعة الاجراءات التابعه لرقم الايدي رقم 1
اتمنى اني وضحت مااريده
هل هنااااااااااااااااااااااااااااااك جديد في طريقة الاضافة والحذف وغيرها في داتا ريليشن
فين error
Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form
Dim myPosition As Byte
Dim objConnection As New SqlConnection("server=;database=;user id=;password=;")
Dim strConn
Friend strSQL As String = "SELECT Bank.id, Bank.Number, data.ask, data.answer FROM Bank INNER JOIN data ON Bank.ID = data.ID ORDER BY Bank.Number;"
Friend cn As New SqlConnection(strConn)
Friend daBankAndData As New SqlDataAdapter(strSQL, cn)
Friend MyDS As DataSet
Friend MyDataView As DataView
Friend MyCurrencyManager As CurrencyManager
Friend intOption As Byte = 0
Dim strSearch As String
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
Friend WithEvents TextBox3 As System.Windows.Forms.TextBox
Friend WithEvents Label3 As System.Windows.Forms.Label
Friend WithEvents Label4 As System.Windows.Forms.Label
Friend WithEvents TextBox4 As System.Windows.Forms.TextBox
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents Button2 As System.Windows.Forms.Button
Friend WithEvents Button3 As System.Windows.Forms.Button
Friend WithEvents Button4 As System.Windows.Forms.Button
Friend WithEvents Button5 As System.Windows.Forms.Button
Friend WithEvents Button6 As System.Windows.Forms.Button
Friend WithEvents Button7 As System.Windows.Forms.Button
Friend WithEvents Button8 As System.Windows.Forms.Button
Friend WithEvents Button9 As System.Windows.Forms.Button
Friend WithEvents Button10 As System.Windows.Forms.Button
Friend WithEvents TextBox5 As System.Windows.Forms.TextBox
Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
Friend WithEvents DataGrid1 As System.Windows.Forms.DataGrid
Friend WithEvents lblPosition As System.Windows.Forms.Label
Friend WithEvents textBox6 As System.Windows.Forms.TextBox
Friend WithEvents TextBox7 As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.TextBox1 = New System.Windows.Forms.TextBox
Me.Label1 = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.TextBox2 = New System.Windows.Forms.TextBox
Me.TextBox3 = New System.Windows.Forms.TextBox
Me.Label3 = New System.Windows.Forms.Label
Me.Label4 = New System.Windows.Forms.Label
Me.TextBox4 = New System.Windows.Forms.TextBox
Me.Button1 = New System.Windows.Forms.Button
Me.Button2 = New System.Windows.Forms.Button
Me.Button3 = New System.Windows.Forms.Button
Me.Button4 = New System.Windows.Forms.Button
Me.Button5 = New System.Windows.Forms.Button
Me.Button6 = New System.Windows.Forms.Button
Me.Button7 = New System.Windows.Forms.Button
Me.Button8 = New System.Windows.Forms.Button
Me.Button9 = New System.Windows.Forms.Button
Me.Button10 = New System.Windows.Forms.Button
Me.TextBox5 = New System.Windows.Forms.TextBox
Me.ComboBox1 = New System.Windows.Forms.ComboBox
Me.DataGrid1 = New System.Windows.Forms.DataGrid
Me.lblPosition = New System.Windows.Forms.Label
Me.textBox6 = New System.Windows.Forms.TextBox
Me.TextBox7 = New System.Windows.Forms.TextBox
CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'TextBox1
'
Me.TextBox1.Location = New System.Drawing.Point(40, 24)
Me.TextBox1.Name = "TextBox1"
Me.TextBox1.Size = New System.Drawing.Size(112, 20)
Me.TextBox1.TabIndex = 0
Me.TextBox1.Text = ""
'
'Label1
'
Me.Label1.Location = New System.Drawing.Point(176, 24)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(64, 23)
Me.Label1.TabIndex = 1
Me.Label1.Text = "ID"
'
'Label2
'
Me.Label2.Location = New System.Drawing.Point(168, 56)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(72, 23)
Me.Label2.TabIndex = 2
Me.Label2.Text = "number"
'
'TextBox2
'
Me.TextBox2.Location = New System.Drawing.Point(40, 56)
Me.TextBox2.Name = "TextBox2"
Me.TextBox2.Size = New System.Drawing.Size(112, 20)
Me.TextBox2.TabIndex = 3
Me.TextBox2.Text = ""
'
'TextBox3
'
Me.TextBox3.Location = New System.Drawing.Point(40, 88)
Me.TextBox3.Name = "TextBox3"
Me.TextBox3.Size = New System.Drawing.Size(112, 20)
Me.TextBox3.TabIndex = 4
Me.TextBox3.Text = ""
'
'Label3
'
Me.Label3.Location = New System.Drawing.Point(168, 88)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(64, 23)
Me.Label3.TabIndex = 5
Me.Label3.Text = "ask"
'
'Label4
'
Me.Label4.Location = New System.Drawing.Point(168, 120)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(56, 24)
Me.Label4.TabIndex = 6
Me.Label4.Text = "answer"
'
'TextBox4
'
Me.TextBox4.Location = New System.Drawing.Point(40, 128)
Me.TextBox4.Name = "TextBox4"
Me.TextBox4.Size = New System.Drawing.Size(112, 20)
Me.TextBox4.TabIndex = 7
Me.TextBox4.Text = ""
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(16, 176)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(40, 23)
Me.Button1.TabIndex = 8
Me.Button1.Text = "<<"
'
'Button2
'
Me.Button2.Location = New System.Drawing.Point(56, 176)
Me.Button2.Name = "Button2"
Me.Button2.Size = New System.Drawing.Size(32, 23)
Me.Button2.TabIndex = 9
Me.Button2.Text = "<"
'
'Button3
'
Me.Button3.Location = New System.Drawing.Point(88, 176)
Me.Button3.Name = "Button3"
Me.Button3.Size = New System.Drawing.Size(48, 23)
Me.Button3.TabIndex = 10
Me.Button3.Text = ">>"
'
'Button4
'
Me.Button4.Location = New System.Drawing.Point(136, 176)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(48, 23)
Me.Button4.TabIndex = 11
Me.Button4.Text = ">"
'
'Button5
'
Me.Button5.Location = New System.Drawing.Point(32, 216)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(40, 24)
Me.Button5.TabIndex = 12
Me.Button5.Text = "Exit"
'
'Button6
'
Me.Button6.Location = New System.Drawing.Point(88, 216)
Me.Button6.Name = "Button6"
Me.Button6.Size = New System.Drawing.Size(48, 23)
Me.Button6.TabIndex = 13
Me.Button6.Text = "Save"
'
'Button7
'
Me.Button7.Location = New System.Drawing.Point(152, 216)
Me.Button7.Name = "Button7"
Me.Button7.Size = New System.Drawing.Size(48, 24)
Me.Button7.TabIndex = 14
Me.Button7.Text = "Cancel"
'
'Button8
'
Me.Button8.Location = New System.Drawing.Point(208, 216)
Me.Button8.Name = "Button8"
Me.Button8.Size = New System.Drawing.Size(48, 23)
Me.Button8.TabIndex = 15
Me.Button8.Text = "Delete"
'
'Button9
'
Me.Button9.Location = New System.Drawing.Point(264, 216)
Me.Button9.Name = "Button9"
Me.Button9.TabIndex = 16
Me.Button9.Text = "aDD"
'
'Button10
'
Me.Button10.Location = New System.Drawing.Point(56, 256)
Me.Button10.Name = "Button10"
Me.Button10.Size = New System.Drawing.Size(64, 24)
Me.Button10.TabIndex = 17
Me.Button10.Text = "Find"
'
'TextBox5
'
Me.TextBox5.Location = New System.Drawing.Point(136, 256)
Me.TextBox5.Name = "TextBox5"
Me.TextBox5.TabIndex = 18
Me.TextBox5.Text = ""
'
'ComboBox1
'
Me.ComboBox1.Location = New System.Drawing.Point(256, 256)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(121, 21)
Me.ComboBox1.TabIndex = 19
'
'DataGrid1
'
Me.DataGrid1.DataMember = ""
Me.DataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText
Me.DataGrid1.Location = New System.Drawing.Point(0, 288)
Me.DataGrid1.Name = "DataGrid1"
Me.DataGrid1.Size = New System.Drawing.Size(392, 120)
Me.DataGrid1.TabIndex = 20
'
'lblPosition
'
Me.lblPosition.Location = New System.Drawing.Point(272, 80)
Me.lblPosition.Name = "lblPosition"
Me.lblPosition.TabIndex = 21
Me.lblPosition.Text = "Label5"
'
'textBox6
'
Me.textBox6.Location = New System.Drawing.Point(208, 176)
Me.textBox6.Name = "textBox6"
Me.textBox6.TabIndex = 22
Me.textBox6.Text = "TextBox6"
'
'TextBox7
'
Me.TextBox7.Location = New System.Drawing.Point(48, 152)
Me.TextBox7.Name = "TextBox7"
Me.TextBox7.TabIndex = 23
Me.TextBox7.Text = "TextBox7"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(392, 404)
Me.Controls.Add(Me.TextBox7)
Me.Controls.Add(Me.textBox6)
Me.Controls.Add(Me.lblPosition)
Me.Controls.Add(Me.DataGrid1)
Me.Controls.Add(Me.ComboBox1)
Me.Controls.Add(Me.TextBox5)
Me.Controls.Add(Me.Button10)
Me.Controls.Add(Me.Button9)
Me.Controls.Add(Me.Button8)
Me.Controls.Add(Me.Button7)
Me.Controls.Add(Me.Button6)
Me.Controls.Add(Me.Button5)
Me.Controls.Add(Me.Button4)
Me.Controls.Add(Me.Button3)
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.TextBox4)
Me.Controls.Add(Me.Label4)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.TextBox3)
Me.Controls.Add(Me.TextBox2)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.TextBox1)
Me.Name = "Form1"
Me.Text = "Form1"
CType(Me.DataGrid1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = Application.ProductName & "/" & Application.ProductVersion
cn.Open()
' Fill the DataSet and bind the fields...
Call FillDataSetAndView()
Call BindFields()
' Show the current record position...
Call ShowPosition()
' Add items to the combo box...
ComboBox1.Items.Add("Number")
ComboBox1.Items.Add("Ask")
ComboBox1.Items.Add("Answer")
' Make the first item selected...
ComboBox1.SelectedIndex = 0
End Sub
Private Sub FillDataSetAndView()
Try
' Initialize a new instance of the DataSet object...
MyDS = New DataSet
MyDS.Clear()
' Fill the DataSet object with TheBankAndData...
daBankAndData.Fill(MyDS, "TheBankAndData")
' Set the DataView object to the DataSet object...
MyDataView = New DataView(MyDS.Tables("TheBankAndData"))
' Set our CurrencyManager object to the DataView object...
MyCurrencyManager = CType(Me.BindingContext(MyDataView), CurrencyManager)
cn.Close()
Catch ex As Exception
MessageBox.Show(ex.Message, " Fill the DataSet and bind the fields... ", MessageBoxButtons.OK, _
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, _
MessageBoxOptions.RtlReading)
End Try
End Sub
Sub BindFields()
' Clear any previous bindings...
TextBox1.DataBindings.Clear()
TextBox2.DataBindings.Clear()
TextBox3.DataBindings.Clear()
TextBox4.DataBindings.Clear()
' Add new bindings to the DataView object...
TextBox1.DataBindings.Add(New Binding("Text", MyDataView, "id"))
TextBox2.DataBindings.Add(New Binding("Text", MyDataView, "number"))
TextBox3.DataBindings.Add(New Binding("Text", MyDataView, "ask"))
TextBox4.DataBindings.Add(New Binding("Text", MyDataView, "answer"))
' Add new bindings to the DataGridView object...
DataGrid1.AccessibleDescription = True
DataGrid1.DataSource = MyDS
DataGrid1.DataMember = "BankAndData"
' Display a ready status...
TextBox6.Text = "Ready"
End Sub
Private Sub ShowPosition()
' Display the current position and the number of records
lblPosition.Text = MyCurrencyManager.Position + 1 & _
" of " & MyCurrencyManager.Count()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Set the record position to the first record...
MyCurrencyManager.Position = 0
' Show the current record position...
ShowPosition()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' Move to the next record...
MyCurrencyManager.Position += 1
' Show the current record position...
ShowPosition()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
' Move to the previous record...
MyCurrencyManager.Position -= 1
' Show the current record position...
ShowPosition()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
' Set the record position to the last record...
MyCurrencyManager.Position = MyCurrencyManager.Count - 1
' Show the current record position...
ShowPosition()
End Sub
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
' Determine the appropriate item selected and set the
' Sort property of the DataView object...
Select Case ComboBox1.SelectedIndex
Case 0 'Number Name
MyDataView.Sort = "number"
TextBox6.Text = "Records Sorted By Number"
Case 1 'ask
MyDataView.Sort = "ask"
TextBox6.Text = "Records Sorted By Ask"
Case 2 'answer
MyDataView.Sort = "Answer"
TextBox6.Text = "Records Sorted By Answer"
End Select
' Call the click event for the MoveFirst button...
Button1_Click(Nothing, Nothing)
' Display a message that the records have been sorted...
End Sub
Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click
If TextBox7.Text = "" Then
textBox6.Text = "Write Any Text For Search"
ComboBox1_SelectedIndexChanged(Nothing, Nothing)
Exit Sub
End If
' Declare local variables...
Dim intPosition As Integer
Call Search()
'MyDataView.RowFilter = "ask like('" + Trim(txtFind.Text) + "%')"
intPosition = MyDataView.Find(strSearch)
strSearch = Nothing
If intPosition = -1 Then
' Display a message that the record was not found...
textBox6.Text = "Record Not Found"
Else
' Otherwise display a message that the record was
' found and reposition the CurrencyManager to that
' record...
textBox6.Text = "Record Found"
'MyCurrencyManager.Position = intPosition
End If
' Show the current record position...
ShowPosition()
End Sub
Private Sub Search()
Dim sql2 As String
Dim da2 As New SqlDataAdapter
Dim ds2 As New DataSet
MyDataView.Sort = "ask"
sql2 = "SELECT ask FROM Data where ask like ('%" + Trim(TextBox7.Text) + "%');"
cn.Open()
da2.SelectCommand = New SqlCommand(sql2, cn)
ds2 = New DataSet("BankAndData")
If cn.State = ConnectionState.Open Then
da2.MissingSchemaAction = MissingSchemaAction.AddWithKey
da2.Fill(ds2, "BankAndData")
End If
If ds2.Tables("BankAndData").Rows.Count <> 0 Then strSearch = ds2.Tables("BankAndData").Rows(0)("ask")
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim response As MsgBoxResult
textBox6.Text = "Exit program?"
response = MsgBox("Exit program?", vbYesNo)
If response = vbYes Then
End
Else
textBox6.Text = "Ready"
End If
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
' Save AddNew
Try
Dim InsertCommand As SqlCommand = New SqlCommand
' Open the connection, execute the command
If cn.State = ConnectionState.Closed Then cn.Open()
' Set the SqlCommand object properties...
InsertCommand.Connection = cn
' AddNew Record From Thebank Table
InsertCommand.CommandText = "INSERT INTO bank(Asknumber) VALUES(?);"
'Add parameters for the placeholders in the SQL in the CommandText property...
'Parameter for the Asknumber column...
InsertCommand.Parameters.Add("?", TextBox2.Text)
' Execute the OleDbCommand object to insert the new data...
InsertCommand.ExecuteNonQuery()
' Get The ID Value from TheBank Table..
Dim IdValue As String = CInt(ValueOfFields("bank", "ID"))
' AddNew Record From Thebank Table
InsertCommand.CommandText = "INSERT INTO Data(id,Ask,Answer) VALUES(?,?,?);"
'Add parameters for the placeholders in the SQL in the CommandText property...
'Parameter for the id column...
InsertCommand.Parameters.Clear()
InsertCommand.Parameters.Add("?", IdValue)
'Parameter for the ask column...
InsertCommand.Parameters.Add("?", TextBox3.Text)
'Parameter for the answer column
InsertCommand.Parameters.Add("?", TextBox4.Text)
' Execute the SqlCommand object to insert the new data...
InsertCommand.ExecuteNonQuery()
' Close the connection...
cn.Close()
' Fill the dataset and bind the fields...
Call FillDataSetAndView()
BindFields()
' Set the record position to the one that you saved...
MyCurrencyManager.Position = MyCurrencyManager.Count - 1
' Show the current record position...
ShowPosition()
' Display a message that the record was added...
textBox6.Text = "Record Added"
'Dispose Declare local variables and objects
InsertCommand.Dispose()
InsertCommand = Nothing
Catch ex As SqlException
MessageBox.Show(ex.Message, " Save AddNew ", MessageBoxButtons.OK, _
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, _
MessageBoxOptions.RtlReading)
End Try
intOption = False
End Sub
Private Function ValueOfFields(ByVal MyTable As String, ByVal Field As String) As String
Try
'=================================================================
' يقوم هذا الإجراء بإرجاع قيمة "الأيدي" لاخر سجل في جدول
' من ملف قاعدة البانات "Data"
'=================================================================
Dim daTheBank As SqlClient.SqlDataAdapter
Dim TheBankTable As DataTable = New DataTable
Dim strValue As String
Dim CountMyTable As Integer
If cn.State = ConnectionState.Closed Then cn.Open()
daTheBank = New SqlClient.SqlDataAdapter("SELECT " & Field & " from " & MyTable & "", cn)
daTheBank.Fill(TheBankTable)
CountMyTable = TheBankTable.Rows.Count
strValue = TheBankTable.Rows(CountMyTable - 1).Item("id")
Return strValue
daTheBank.Dispose()
TheBankTable.Dispose()
Catch oExcept As SqlException
MessageBox.Show(oExcept.Message)
End Try
End Function
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Dim response As MsgBoxResult
textBox6.Text = "Ready To Delete This Record"
response = MsgBox("Are You Sure ! You Want Delete This Record ?", vbYesNo)
If response = vbYes Then
Try
' Declare local variables and objects...
Dim intPosition As Integer
Dim DeleteCommand As SqlCommand = New SqlCommand
' Save the current record position - 1 for the one to be
' deleted...
intPosition = Me.BindingContext(MyDataView).Position - 1
' If the position is less than 0 set it to 0...
If intPosition < 0 Then
intPosition = 0
End If
' Set the Command object properties...
DeleteCommand.Connection = cn
' Delete Record From Data Table
DeleteCommand.CommandText = "DELETE FROM thebank WHERE id = ?;"
'"DELETE FROM Data WHERE id = ?;"
' Parameter for the title_id field...
DeleteCommand.Parameters.Add _
("?", BindingContext(MyDataView).Current("id"))
' Open the database connection...
cn.Open()
' Execute the SqlCommand object to update the data...
DeleteCommand.ExecuteNonQuery()
' Delete Record From Data Table
DeleteCommand.CommandText = "DELETE FROM Data WHERE id = ?;"
' Parameter for the title_id field...
DeleteCommand.Parameters.Add _
("?", BindingContext(MyDataView).Current("id"))
' Execute the SqlCommand object to update the data...
DeleteCommand.ExecuteNonQuery()
' Close the connection...
cn.Close()
' Fill the DataSet and bind the fields...
FillDataSetAndView()
BindFields()
' Set the record position to the one that you saved...
Me.BindingContext(MyDataView).Position = intPosition
' Show the current record position...
ShowPosition()
' Display a message that the record was deleted...
textBox6.Text = "Record Deleted"
'Dispose Declare local variables and objects
DeleteCommand.Dispose()
DeleteCommand = Nothing
intPosition = Nothing
Catch ex As SqlException
MessageBox.Show(ex.Message, " Delete Record ", MessageBoxButtons.OK, _
MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, _
MessageBoxOptions.RtlReading)
End Try
Else
textBox6.Text = "Delete This Record Is Canceled"
End If
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
' Fill the DataSet and bind the fields...
FillDataSetAndView()
BindFields()
' Set the record position to the one that you saved...
Me.BindingContext(MyDataView).Position = myPosition
' Show the current record position...
ShowPosition()
' Display a message that the record was Command Cancel...
textBox6.Text = "Command AddNew Cancel"
End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Dim BackPosition
' Clear the teh Text Box fields...
Call CLEARDATA()
TextBox2.Focus()
intOption = True
If MyCurrencyManager.Count = 0 Then
BackPosition = 0
Else
BackPosition = MyCurrencyManager.Position
End If
textBox6.Text = "Ready To Add New Record"
End Sub
Private Sub CLEARDATA()
End Sub
End Class
السلام عليكم ورحمة الله
انا قرات مشروعك اخى ياسر وهو منمق وجميل ولكن اعذرنى فى شىء
انت تكثر من كتابة الكود فيما لايستدعى ذلك كما انك تصل الى ماتريد باصعب الطرق
عند استخدام مكتبة الادو دوت نت مع الفيجوال 2005 توجد طريقتين لربط قاعدة البيانات والتعامل معها مهما كان نوعها
الطريقة الاولى ado.ne offline mode
الطريقة الثانية ado.net online mode
وساتحدث معك بختصار مبدئيا عن الطريقة الاولى :
تعتمد هذه الطريقة فى مجملها على انشاء كائن data adapter لانشاء الوصلة بين قاعدة البيانات والداتا سيت
وايضا تقوم بعمل تحديث لقاعدة البيانات وخطوات الطريقة بالتفصيل كالاتى :
1-الاتصال بقاعدة البيانات connection
2- انشاء command حتى تستطيع ارسال جمل الاستعلام
3-انشاء command builder حتى تستطيع معالجة جمل الاستعلام
4-انشاء data adapter وهى الوصلة بين قاعدة البيانات والداتا سيت وتقوم ايضا بعمل تحديث لقاعدة البيانات
5-انشاء dataset وهى نسخة من قاعدة البيانات فى الذاكرة وجميع العمليات التى تقوم فيها الى ان تقوم باصدار الامر للداتا ادبتور لتحديث قاعدةالبيانات
6-datatable ويوجد بداخله الكائن rows
ولان كيفية البدء فى العمل : لنفترض ان عندى جدول داخل قاعدة البيانات يسمى cust وقاعدة البيانات تسمى bank
اولا : منطقة التصريحات العامة module
نقوم باستيراد مكتبة الادو بالامر imports system.data.oledb
ثانيا : فى داخل الموديول نقوم بالاعلان عن الكائنات التى سيتم استخدامها من المكتبة
وهذا يعنى انشاء مصفوفة بعدد الجداول الموجودة داخل قاعدة البيانات()public abdate as integer
ويتم كتابة عدد عناصر المصفوفة بين القوسين مثلا لو انا عندى 5 جداول اكتب رقم 4 لو انا عندى 7 جداول اكتب رقم 6 وهكذا.....
ثم نقوم بالاعن عن باقى المتغير كالاتى :
1- public cn as new oledbconnection
2- public cmdcust as new oledbcommand
3- public adcust as new oledbdataAdpter
4- public cust as new datatable
5- public cmdb as new oledbcommandbuilder
6- public dbs as new dataset
7- public rec as datarow
public frec() as datarow
8- public r as integerوساقوم الان بشرح الكود المكتوب :
1- الاعلان عن الاتصال الذى سنقوم من خلاله بالاتصال بقاعدة البيانات لاخذ نسخة منها بالذاكرة
2-الاعلان عن الكائن (command) وتم الاعلان عن كائن لجدول واحد هو cust ويمكن اضافة اكثر من جدول بنفس الطريقة
3-الاعلان عن الكائن (adapter) لجدول واحد ويمكن اضافة اكثر من جدول
4- الاعلان عن الكائن datatable لكل جدول من الجداول اذا وجد اكثر من جدول وفى مثالنا جدول واحد فقط هو cust
5-الاعلان عن الكائن commandbuilder والذى سيتم استخدامه فى جمل الاستعلام
6-الاعلان عن الكائن data set الذى سيتم من خلاله حفظ قاعدة البيانات فى الذاكرة
7-الاعلان عن الكائن data row للتعامل مع السجلات داخل الجداول وتم الاعلان عن كائنين احدهما يستخدم للتعديل والتنقل بين السجلات والاخر يستخدم فى عملية البحث
8- الاعلان عن متغير من نوع رقمى صحيح لمعرفة ارقام السجلات التى يتم التنقل بينها
ثانيا:الكود الخاص فى الشاشة الرئيسية وفى الحدث form load
"cn.connectionstring ="provider = microsoft.jet.oledb.4.0;dat source =bank.mdb
()cn.open
cmdcust.connection = cn
cmdcust.commandtype = commandtype.text
"cmdcust.commandtext = "select * from cust
adcust.selectcommand =cmdcust
("adcust.fill(dbs, "cust
("cust = dbs , tables ("cust
()cmdcust.connection.close
()cn.close
هذه اساسيات التعامل مع الادو دوت نت بطريقة الاوف لاين مود وان اعجبتك هذه الطريقة ساقوم ان شاء الله بارفاق ملف صغير به مثال مكتوب بالكود كاملا بجميع المفاتيح التى تريدها من جديد وحفظ وبحث وتعديل وحذف والجلات الول والتالى والسابق والاخير
والله الموفق
اخوك
سلام عليكم اخي HellStorm.
ياليت تعمل لنا المثال بكل العمليات بطريقة المنفصله ويكون جدولين وبينهم رابط الجدول الاول يعرض في تكست بوكس والثاني في قريد وتتم عليها جميع العمليات وخاصه عملية البحث والعرض في لست وعند النقر عليها مرتين تعرض البيانات التفصيلية في فورم اخر
ويكون بااقرب وقت
جاري تطبيق المثال - لكن هناك سؤال لو وضعنا كلمة مرور على قاعدة البيانات
هل التقارير تطبع الكريستال ريبورت - كانت هذه مشكلتي في 2003
الف شكر لكل المشاركين
السلام عليكم
اشكرك استاذ ياسر الشيخ
واشكر جميع الاعضاء الذين شاركوك في ‘يضاح هذه المعلومات المهمه
واسل الله العلي العظيم ان يجعله في ميزان حسناتكم
ولكن عن إطلاعي على الدروس وإطلاعي قواعد البيانات التي ارفقها استاذ ياسر في برنامجه وجدت أن الربط بين الجداول بطريقة queries
وانا ربطت قواعد بياناتي باستخدام relationships
فما الفرق بين الطريقتين وكيف الربط قواعد البيانات
وشكراً
شكراً جزيلاً على الدرس
اخي احييك على هذا الجهد الكبير ....... والله استفد منه كثيرا :D لكن عندي بعض الطلبات اتمنى الا تردني خائبا :wink:
انا كنت من عشاق الفجوال القديم وحولت الي الدوت نت وقرأت عنها كثيرا وتعلمت الكثير ولكن كلما اتعلم شي ارى اني لم ازل في بداية الطريق نسبة لان الاكواد تختلف من شخص الى آخر ذلك طلباتي هي :-
- ان يكون التواصل بيننا دوما connected
- لو كان بالامكان ان ترسل لي المشروع على بريدي الالكتروني huss22379181@gmail.com
- أريد انشاء مستخدمون وكلمات مرور بحسب الصلاحيات وامكانية التعديل فيها
- كيف تكون سلسلة الاتصال في حالة تعيين كلمة مرور لقاعدة البيانات
ولك مني وافر الشكر -وجعل الله ذلك في ميزان حسناتك
شكرا لك اخي عل هذا الدرس الرائع وبارك الله فيك
جزاك الله كل خير يا اخى و كلنا معاك و ربنا يجعله فى ميزان حسناتك