تقييم الموضوع :
  • 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
الف شكر اخي العزيز سوعد
في حالة الرغبة في أن يكون السجل كامل في سطر واحد يفصل بينهم مسافة او رمز

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] فك كلمة مرور معقدة على قاعدة البيانات اكسس ahmed saba 7 5,500 أمس, 05:30 PM
آخر رد: abiza
  ظهور خطا عند سحب البيانات وعرضها في الداتا كريد باستخدم الـــ Threading HATEM KAREM 0 87 06-05-17, 04:45 PM
آخر رد: HATEM KAREM
  استفسار حول عدم تكرار البيانات المتألق9 3 152 02-04-17, 03:38 AM
آخر رد: حريف برمجة
  جلب البيانات من ملف txt djelloul 7 186 28-03-17, 03:20 PM
آخر رد: djelloul
  [سؤال] طلب صيغة عامة أو وظيفة لأضافة بيانات لقاعدة البيانات ؟ عبد الله 2 155 10-03-17, 09:36 AM
آخر رد: عبد الله
  سرعة ادخال البيانات داخل ملف اكسس atefkhalf2004 1 169 05-03-17, 04:06 AM
آخر رد: thevirus
  استعادة قاعدة البيانات من ملف النسخة الإحتياطية djelloul 2 173 28-02-17, 03:27 PM
آخر رد: djelloul
  نسخ جدول من قاعدة الي اخري مع الوصف atefkhalf2004 2 158 18-02-17, 01:34 AM
آخر رد: atefkhalf2004
  فتح قاعدة البيانات محفوظة ب باسس ورد في جملة الاتصال ahmed_elwerfalli 2 161 13-02-17, 05:27 PM
آخر رد: ahmed_elwerfalli
  الانتقال إلى السجل الثاني في قاعدة البيانات و إظهار الصورة التالية على picturebox ahmed_elwerfalli 6 487 24-12-16, 11:07 PM
آخر رد: ahmed_elwerfalli

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


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