Imports System.Data.OleDb
'ملاحظه تم عمل هذا البرنامج بوسطه 
''vb.net(2003)
'مسار قاعده البيانات مع الملف نفسه
'        ارجو تحويل الاتصال الي الاسلوب البرمجي 
'        لكي استطيع  اولاالتعديل عليه واستخدامه في 
'2005:
'     
Public Class Form1
    Inherits System.Windows.Forms.Form

#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 Label1 As System.Windows.Forms.Label
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
    Friend WithEvents Button1 As System.Windows.Forms.Button
    Friend WithEvents OleDbDataAdapter1 As System.Data.OleDb.OleDbDataAdapter
    Friend WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
    Friend WithEvents OleDbInsertCommand1 As System.Data.OleDb.OleDbCommand
    Friend WithEvents OleDbUpdateCommand1 As System.Data.OleDb.OleDbCommand
    Friend WithEvents OleDbDeleteCommand1 As System.Data.OleDb.OleDbCommand
    Friend WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
    Friend WithEvents DataSet11 As WindowsApplication1.DataSet1
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Dim resources As System.Resources.ResourceManager = New System.Resources.ResourceManager(GetType(Form1))
        Me.Label1 = New System.Windows.Forms.Label
        Me.TextBox1 = New System.Windows.Forms.TextBox
        Me.Label2 = New System.Windows.Forms.Label
        Me.TextBox2 = New System.Windows.Forms.TextBox
        Me.Button1 = New System.Windows.Forms.Button
        Me.OleDbDataAdapter1 = New System.Data.OleDb.OleDbDataAdapter
        Me.OleDbSelectCommand1 = New System.Data.OleDb.OleDbCommand
        Me.OleDbInsertCommand1 = New System.Data.OleDb.OleDbCommand
        Me.OleDbUpdateCommand1 = New System.Data.OleDb.OleDbCommand
        Me.OleDbDeleteCommand1 = New System.Data.OleDb.OleDbCommand
        Me.OleDbConnection1 = New System.Data.OleDb.OleDbConnection
        Me.DataSet11 = New WindowsApplication1.DataSet1
        CType(Me.DataSet11, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'Label1
        '
        Me.Label1.BackColor = System.Drawing.SystemColors.ActiveCaptionText
        Me.Label1.Font = New System.Drawing.Font("Arial", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(178, Byte))
        Me.Label1.Location = New System.Drawing.Point(224, 32)
        Me.Label1.Name = "Label1"
        Me.Label1.RightToLeft = System.Windows.Forms.RightToLeft.Yes
        Me.Label1.Size = New System.Drawing.Size(64, 24)
        Me.Label1.TabIndex = 0
        Me.Label1.Text = "رقم الحساب"
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(32, 32)
        Me.TextBox1.Multiline = True
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.RightToLeft = System.Windows.Forms.RightToLeft.Yes
        Me.TextBox1.Size = New System.Drawing.Size(184, 24)
        Me.TextBox1.TabIndex = 1
        Me.TextBox1.Text = ""
        '
        'Label2
        '
        Me.Label2.BackColor = System.Drawing.SystemColors.ActiveCaptionText
        Me.Label2.Font = New System.Drawing.Font("Arial", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(178, Byte))
        Me.Label2.Location = New System.Drawing.Point(224, 80)
        Me.Label2.Name = "Label2"
        Me.Label2.RightToLeft = System.Windows.Forms.RightToLeft.Yes
        Me.Label2.Size = New System.Drawing.Size(64, 24)
        Me.Label2.TabIndex = 2
        Me.Label2.Text = "نوع الحساب"
        '
        'TextBox2
        '
        Me.TextBox2.Location = New System.Drawing.Point(32, 80)
        Me.TextBox2.Multiline = True
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.RightToLeft = System.Windows.Forms.RightToLeft.Yes
        Me.TextBox2.Size = New System.Drawing.Size(184, 24)
        Me.TextBox2.TabIndex = 3
        Me.TextBox2.Text = ""
        '
        'Button1
        '
        Me.Button1.Font = New System.Drawing.Font("Arial", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(178, Byte))
        Me.Button1.Location = New System.Drawing.Point(112, 152)
        Me.Button1.Name = "Button1"
        Me.Button1.TabIndex = 4
        Me.Button1.Text = "اضافة"
        '
        'OleDbDataAdapter1
        '
        Me.OleDbDataAdapter1.DeleteCommand = Me.OleDbDeleteCommand1
        Me.OleDbDataAdapter1.InsertCommand = Me.OleDbInsertCommand1
        Me.OleDbDataAdapter1.SelectCommand = Me.OleDbSelectCommand1
        Me.OleDbDataAdapter1.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "Acounts", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("AcountId", "AcountId"), New System.Data.Common.DataColumnMapping("AcountName", "AcountName"), New System.Data.Common.DataColumnMapping("Acountnum", "Acountnum")})})
        Me.OleDbDataAdapter1.UpdateCommand = Me.OleDbUpdateCommand1
        '
        'OleDbSelectCommand1
        '
        Me.OleDbSelectCommand1.CommandText = "SELECT AcountId, AcountName, Acountnum FROM Acounts"
        Me.OleDbSelectCommand1.Connection = Me.OleDbConnection1
        '
        'OleDbInsertCommand1
        '
        Me.OleDbInsertCommand1.CommandText = "INSERT INTO Acounts(AcountId, AcountName, Acountnum) VALUES (?, ?, ?)"
        Me.OleDbInsertCommand1.Connection = Me.OleDbConnection1
        Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("AcountId", System.Data.OleDb.OleDbType.VarWChar, 50, "AcountId"))
        Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("AcountName", System.Data.OleDb.OleDbType.VarWChar, 50, "AcountName"))
        Me.OleDbInsertCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Acountnum", System.Data.OleDb.OleDbType.VarWChar, 50, "Acountnum"))
        '
        'OleDbUpdateCommand1
        '
        Me.OleDbUpdateCommand1.CommandText = "UPDATE Acounts SET AcountId = ?, AcountName = ?, Acountnum = ? WHERE (AcountId = " & _
        "?) AND (AcountName = ? OR ? IS NULL AND AcountName IS NULL) AND (Acountnum = ? O" & _
        "R ? IS NULL AND Acountnum IS NULL)"
        Me.OleDbUpdateCommand1.Connection = Me.OleDbConnection1
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("AcountId", System.Data.OleDb.OleDbType.VarWChar, 50, "AcountId"))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("AcountName", System.Data.OleDb.OleDbType.VarWChar, 50, "AcountName"))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Acountnum", System.Data.OleDb.OleDbType.VarWChar, 50, "Acountnum"))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_AcountId", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "AcountId", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_AcountName", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "AcountName", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_AcountName1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "AcountName", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Acountnum", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Acountnum", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbUpdateCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Acountnum1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Acountnum", System.Data.DataRowVersion.Original, Nothing))
        '
        'OleDbDeleteCommand1
        '
        Me.OleDbDeleteCommand1.CommandText = "DELETE FROM Acounts WHERE (AcountId = ?) AND (AcountName = ? OR ? IS NULL AND Aco" & _
        "untName IS NULL) AND (Acountnum = ? OR ? IS NULL AND Acountnum IS NULL)"
        Me.OleDbDeleteCommand1.Connection = Me.OleDbConnection1
        Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_AcountId", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "AcountId", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_AcountName", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "AcountName", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_AcountName1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "AcountName", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Acountnum", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Acountnum", System.Data.DataRowVersion.Original, Nothing))
        Me.OleDbDeleteCommand1.Parameters.Add(New System.Data.OleDb.OleDbParameter("Original_Acountnum1", System.Data.OleDb.OleDbType.VarWChar, 50, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "Acountnum", System.Data.DataRowVersion.Original, Nothing))
        '
        'OleDbConnection1
        '
        Me.OleDbConnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
        "ocking Mode=1;Data Source=""db1.mdb"";Jet OLEDB:Engine Type=5;Provider=""Microsoft." & _
        "Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security i" & _
        "nfo=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:Encrypt Database=F" & _
        "alse;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compa" & _
        "ct=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:" & _
        "Global Bulk Transactions=1"
        '
        'DataSet11
        '
        Me.DataSet11.DataSetName = "DataSet1"
        Me.DataSet11.Locale = New System.Globalization.CultureInfo("ar-JO")
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.BackgroundImage = CType(resources.GetObject("$this.BackgroundImage"), System.Drawing.Image)
        Me.ClientSize = New System.Drawing.Size(312, 206)
        Me.Controls.Add(Me.Button1)
        Me.Controls.Add(Me.TextBox2)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.TextBox1)
        Me.Controls.Add(Me.Label1)
        Me.Name = "Form1"
        Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
        Me.Text = "New aCount"
        CType(Me.DataSet11, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region
    Dim x As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       
        Try


            OleDbConnection1.Open()
            OleDbDataAdapter1.SelectCommand.CommandText = "select * from Acounts order by AcountId desc"
            OleDbDataAdapter1.SelectCommand.ExecuteNonQuery()
            OleDbConnection1.Close()
            OleDbDataAdapter1.Fill(DataSet11, "Acounts")
        Catch ex As OleDbException
            MessageBox.Show(ex.Message)

        End Try
        If DataSet11.Tables("Acounts").Rows.Count < 1 Then ' منشوف هون اذا في الجدول موجود معلومات ام لا اذا فاضي نضع الرقم واحد عدا ذلك نزيد عليه بمقدار واحد
            x = 1
            TextBox1.Text = x
        Else
            x = DataSet11.Tables("Acounts").Rows(0).Item(0)
            x = x + 1
            TextBox1.Text = x

        End If

    End Sub

    

    Dim check As Boolean



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        check = checkexsists() 'هذا الفنكشن الذي يقوم بفحص هل الرقم موجود في الداتا بيس ام لا
        If check = False Then
            OleDbConnection1.Open()
            OleDbDataAdapter1.SelectCommand.CommandText = "insert into Acounts (AcountId,AcountName) values('" & x & "','" & TextBox2.Text & "')"
            OleDbDataAdapter1.SelectCommand.ExecuteNonQuery()
            OleDbConnection1.Close()
            MessageBox.Show("تم اضافة الالحساب الجديد", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)


        End If

    End Sub

    'هذه الفنكشن تقوم بالفحص اذا كان هناك رقم مشابه لهذا اولا 
    Function checkexsists()
        DataSet11.Clear()
        OleDbConnection1.Open()
        OleDbDataAdapter1.SelectCommand.CommandText = "select * from Acounts where AcountId='" & x & "'"
        OleDbDataAdapter1.SelectCommand.ExecuteNonQuery()
        OleDbDataAdapter1.Fill(DataSet11, "Acounts")
        OleDbConnection1.Close()

        If DataSet11.Tables("Acounts").Rows.Count < 1 Then

            Return False
        Else
            ShowAGAIN() 'هذه الفنكشن عشان اذا موجود الرقم يروح و يزيد الرقم مره اخرى بمقدار واحد
            Return True

        End If
    End Function

    Sub ShowAGAIN()
        Try


            OleDbConnection1.Open()
            OleDbDataAdapter1.SelectCommand.CommandText = "select * from Acounts order by AcountId desc"
            OleDbDataAdapter1.SelectCommand.ExecuteNonQuery()
            OleDbConnection1.Close()
            OleDbDataAdapter1.Fill(DataSet11, "Acounts")
        Catch ex As OleDbException
            MessageBox.Show(ex.Message)

        End Try
        If DataSet11.Tables("Acounts").Rows.Count < 1 Then ' منشوف هون اذا في الجدول موجود معلومات ام لا اذا فاضي نضع الرقم واحد عدا ذلك نزيد عليه بمقدار واحد
            x = 1
            TextBox1.Text = x
        Else
            x = DataSet11.Tables("Acounts").Rows(0).Item(0)
            x = x + 1
            TextBox1.Text = x

        End If

    End Sub


End Class
