تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
نقل البيانات من جدول الى جدول آخر
#1
السلام عليكم ورحمة الله وبركاته

هذا كود لنقل البيانات من جدول A الى جدول B

كود :
Application.DoEvents()
            Dim Del As New OleDb.OleDbCommand
            Del.Connection = Con
            Del.CommandType = CommandType.Text
            Del.CommandText = "INSERT INTO A SELECT * FROM B"
            If Con.State = ConnectionState.Open Then Con.Close()
            Con.Open()
            Del.ExecuteNonQuery()
            Con.Close()


هناك عدد 3 حقول مفتاح اساسي في الجدول
عند القيام بأرسال البيانات من الجدول A الي الدول B في المرة الأولى لا توجد مشكلة
ولكن عند تعديل بعض البيانات في الحقول التى ليست مفتاح اساسي واريد ان انقلها
من الجدول A الى الجدول B
لا يقبل لوجود تكرار و هذا بسبب المفتاح الاساسي (لانه سينشا تكرار في المفتاح الاساسي
كيف يتم ذلك حتى ولو كان في الحقول التي تحمل مفتاح اساس تشابه
يعنى في حالى التشابه يتم الحفظ فوق القديم OVERWRITE
هذا في حالة تشابه الحقول التي تحمل المفتاح الاساسي
اما في غير ذلك يعتب سجل جديد

مرفق ملف برسالة الخطأ


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود
#2
اشكرك على الرد

لكن لا يوجد لدي في جميع الجدولين حقل ترقيم تلقائي
وجميع الجدولين مكرر في في الحقول اي الحقول جميعها نفسها مع موجود عدد 3 حقول مفتاح اساسي للجدولين

بحيث تكون هذه الحقول الاساسية لعدم التكرار يعني في حالى أن السجل في الحقول الثلاث نفس البيانات يعتبر متكرر مهما كان في بقية الحقول


والغرض من الجدولين الاول A للقراءة الموقته وحذف البيانات منه بعد اجراء المطلوب فيها ومن ثم نقلها الى الجدول B الذي سيحتوى على بيانات كامل الشهر كل يوم
نضيف فيه بيانات من الجدول A الموقت
الرد }}}
تم الشكر بواسطة:
#3
المفروض في حالة التعديل في الجدول A على سطر قد سبق إضافته إلى الجدول B أن يتم التعديل على السطر المقابل له في الجدول B وليس الإضافة وذلك لوجود المفاتيح.
الصورة غير واضحة لاستخدام هذه الفكرة.
الرد }}}
تم الشكر بواسطة:
#4
كلام جميل
طيب كيف يتم التعديل علية
مع العلم أن في الجدول B عدد كبير من السجلات والمفتاح الاساسي هو من يحدد التكرار هل هذا صحيح
طيب في حالة النقل سيتم تحديد السطر من خلال المفاتيح الاساسية كيف يتم التعديل على هذا السجل

للتوضيح اكثر

لدي جدول به الاسم والرقم والمهنه والحالة الاجتماعية والمؤهل
في الجدول A
اضفنا الاسم والرقم ,,,,,, والحالة الاجتماعية ,,,,,,
ولم نضيف المهنه ولا المؤهل

ثم ارسلنا السجل الى الجدول B

وبعد ذلك قمنا بتعديل البيانات في الجدول A واضفنا المهنه والمؤهل العلمي

نريد ارسال البيانات الان الى الجدول B ولكن ليست كسجل جديد بل تعديل على السجل السابق
حيث
ان الاسم والرقم هما مفتاحين اساسين لا يتكرران في نفس الشخص
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود
#5
إذا كان الهدف هو جدول بيانات الموظفين مثلا فالطريقة الصحيحة استخدام جدول واحد وفيه رقم تعريف ID كمفتاح أساسي ولا داعي لربط عمود آخر معه.

جدول الموظفين:
ID (ترقيم تلقائي)
الاسم
الرقم
المهنه
الحالة الاجتماعية
المؤهل

يتم إضافة بيانات موظف جديد

في حالة التعديل يتم بدلالة رقم التعريف ID فقط كالتالي
كود :
UPDATE table1 SET column1 = 'جامعي' WHERE ID=123

المسألة تحتاج مزيد من العمل المتقن........
الرد }}}
تم الشكر بواسطة: aftfm , مبرمج بلا حدود
#6
الف شكر اخي العزيز vbnet

سؤال آخر

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

كود :
With SaveFileDialog1
            .Title = "select"
            .Filter = "فقط الملفات النصية(*.txt|*.txt|All files(*.*)|*.*"
            .FilterIndex = 1
            If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim TextFile As New System.IO.StreamWriter(SaveFileDialog1.FileName, False, System.Text.Encoding.Default)
                Dim sSQL As String = String.Empty
                sSQL = "SELECT * FROM tbl1"
                Dim COMMAND As New OleDbCommand(sSQL, Con)
                If Con.State = ConnectionState.Open Then Con.Close()
                Con.Open()
                Dim READER As OleDbDataReader = COMMAND.ExecuteReader()
                If READER.HasRows = True Then
                    While READER.Read()
                        TextFile.WriteLine(READER.GetString(0) & "@" & READER.GetString(1) & "@" & READER.GetDateTime(2) & "@" & READER.GetString(3) & "@" & READER.GetString(4) & "@" _
                                           & READER.GetString(5) & "@" & READER.GetString(6) & "@" & READER.GetString(7) & "@" & READER(8) & "@" & READER.GetString(9) & "@")
                    End While
                    TextFile.Close()
                End If
                Con.Close()
            Else
                Exit Sub
            End If
        End With

ما هي مشكلة الحقول الفارغة

وكيف حلها
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود
#7
اخوانا الاعزاء اضبطو محاذاة الكود لليسار ...
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء، اللهم أصلح لي ديني الذي هو عصمة أمري، وأصلح لي دنياي التي فيها معاشي، وأصلح لي آخرتي التي فيها معادي، واجعل الحياة زيادة لي في كل خير، واجعل الموت راحة لي من كل شر
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي جدي وهزلي وخطأي وعمدي وكل ذلك عندي، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود
#8
كود :
With SaveFileDialog1
            .Title = "select"
            .Filter = "فقط الملفات النصية(*.txt|*.txt|All files(*.*)|*.*"
            .FilterIndex = 1
            If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                Dim TextFile As New System.IO.StreamWriter(SaveFileDialog1.FileName, False, System.Text.Encoding.Default)
                Dim sSQL As String = String.Empty
                sSQL = "SELECT * FROM tbl1"
                Dim COMMAND As New OleDbCommand(sSQL, Con)
                If Con.State = ConnectionState.Open Then Con.Close()
                Con.Open()
                Dim READER As OleDbDataReader = COMMAND.ExecuteReader()
                If READER.HasRows = True Then
                    While READER.Read()
                        TextFile.WriteLine(READER.GetString(0) & "@" & READER.GetString(1) & "@" & READER.GetDateTime(2) & "@" & READER.GetString(3) & "@" & READER.GetString(4) & "@" _
                                           & READER.GetString(5) & "@" & READER.GetString(6) & "@" & READER.GetString(7) & "@" & READER(8) & "@" & READER.GetString(9) & "@")
                    End While
                    TextFile.Close()
                End If
                Con.Close()
            Else
                Exit Sub
            End If
        End With
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء، اللهم أصلح لي ديني الذي هو عصمة أمري، وأصلح لي دنياي التي فيها معاشي، وأصلح لي آخرتي التي فيها معادي، واجعل الحياة زيادة لي في كل خير، واجعل الموت راحة لي من كل شر
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي جدي وهزلي وخطأي وعمدي وكل ذلك عندي، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: مبرمج بلا حدود
#9
مارايك بالمثال التالي:


وهذا الكلاس
كود :
Imports System.Data.OleDb

Public Class Form1
    Dim str As String = "provider=microsoft.ace.oledb.12.0;data source=|datadirectory|\db.accdb"
    Dim con As New OleDbConnection(str)
    Private Sub fild(ByVal t As DataSet)
        If d.InvokeRequired Then
            d.Invoke(New Action(Of DataSet)(AddressOf fild), t)
        Else
            d.DataSource = t
        End If
    End Sub
    Private Sub fild2(ByVal t As String)
        If d.InvokeRequired Then
            d.Invoke(New Action(Of String)(AddressOf fild2), t)
        Else
            d.DataMember = t
        End If
    End Sub



    Private Sub gd()
        Dim ds As New DataSet
        Dim da As New OleDbDataAdapter("select * from tb", con)
        ds.Clear()
        ' d.DataSource = Nothing
        fild(Nothing)

        da.Fill(ds, "tb")
        fild(ds)
        fild2("tb")

      
    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim ath As New Threading.Thread(AddressOf gd)
        If ath.IsAlive = False Then
            ath.Start()
        End If
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim txtpath As String = Application.StartupPath & "\t.txt"
        Dim cm As New OleDbCommand("select * from tb", con)
        If con.State = ConnectionState.Closed Then
            con.Open()
        End If
        Dim dr As OleDbDataReader = cm.ExecuteReader
        Dim all As String = ""
        While dr.Read
            all &= "[ID=] " & dr.Item("tid") & vbNewLine
            all &= "[Name=] " & dr.Item("tn") & vbNewLine
            all &= "[Age=] " & dr.Item("age") & vbNewLine
        End While

        all &= vbNewLine & "---------------------------" & vbNewLine & "مثال بسيط عن فكرة تصدير البيانات لملف نصي"

        My.Computer.FileSystem.WriteAllText(txtpath, all, False)

    End Sub
End Class

d ==datagridview
اللهم إني أعوذ بك من غلبة الدين وغلبة العدو، اللهم إني أعوذ بك من جهد البلاء ومن درك الشقاء ومن سوء القضاء ومن شماتة الأعداء، اللهم أصلح لي ديني الذي هو عصمة أمري، وأصلح لي دنياي التي فيها معاشي، وأصلح لي آخرتي التي فيها معادي، واجعل الحياة زيادة لي في كل خير، واجعل الموت راحة لي من كل شر
اللهم اغفر لي خطيئتي وجهلي، وإسرافي في أمري وما أنت أعلم به مني، اللهم اغفر لي جدي وهزلي وخطأي وعمدي وكل ذلك عندي، اللهم اغفر لي ما قدمت وما أخرت، وما أسررت وما أعلنت وما أنت أعلم به مني، أنت المقدم وأنت المؤخر وأنت على كل شيء قدير
الرد }}}
تم الشكر بواسطة: aftfm , مبرمج بلا حدود
#10
الف شكر اخي العزيز سوعد
في حالة الرغبة في أن يكون السجل كامل في سطر واحد يفصل بينهم مسافة او رمز

كيف يكون الكود
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ما هو كود معرفة نوع البيانات من اكسس؟ justforit 2 134 منذ 8 ساعة مضت
آخر رد: justforit
  [سؤال] حول مشكلة توافق نوع البيانات عند الاستعلام في اكسل justforit 2 121 28-04-24, 03:35 PM
آخر رد: justforit
  [سؤال] عدم إظهار الصور مع النص فى Listview من قاعدة البيانات alims 2 1,593 27-08-23, 12:22 PM
آخر رد: رضوان الجماعي
  استفسار عن تخزين الوقت في قاعدة البيانات strongriseman 2 1,138 22-04-22, 07:27 PM
آخر رد: strongriseman
  [سؤال] مشكلة فى عرض الصورة من ادخل قاعدة البيانات alims 2 1,285 17-11-21, 10:09 AM
آخر رد: سعود
  استعلام يرجع اسماء الاعمدة و نوع البيانات في جدول معين بسام محمدغانم 0 972 23-10-21, 01:43 AM
آخر رد: بسام محمدغانم
  الحفظ فى قاعدة البيانات اسلام الكبابى 10 2,379 06-09-21, 06:52 PM
آخر رد: اسلام الكبابى
  طريقة أضافة اكثر من سيرفر على نفس قاعدة البيانات alim54 0 1,150 20-06-21, 11:20 PM
آخر رد: alim54
  ملى الصفحة تلقائياً او ربط مستعرض الانترنت بقاعدة البيانات علي عدنان 2 3,872 02-02-21, 01:31 AM
آخر رد: فارس زيدان
  كود عدم تكرار البيانات بالداتا جريد فيو ِAbou Sama 4 7,617 04-12-20, 10:59 PM
آخر رد: Osama_NY

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم