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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  حذف سجلات من جدول فجأة atefkhalf2004 1 43 28-09-17, 08:27 PM
آخر رد: wale90
  مسار قاعدة البيانات اكسس Mostafa Yousry 6 1,618 24-09-17, 08:23 PM
آخر رد: alsouf
  [سؤال] مشكلة الاختلاف بين ترتيب الصفوف في قاعدة البيانات والداتا جريد فيو waelalmsry75 2 139 18-08-17, 05:40 PM
آخر رد: waelalmsry75
  هل يمكن حفظ البيانات من dataGridView مباشرة؟ abozeyd 3 181 15-08-17, 02:11 PM
آخر رد: abozeyd
  طلب كود رسالة تبين أن هذه البيانات موجودة من قبل ولا يسمح بتكررها waelalmsry75 2 169 19-07-17, 03:24 PM
آخر رد: waelalmsry75
Rainbow [VB.NET] كيف يمكنني الإتصال بملف قاعدة البيانات نوع Paradox sniperjawadino 2 172 12-07-17, 01:20 PM
آخر رد: sniperjawadino
  البحث في قاعدة البيانات مع تجاهل التشكيل waelalmsry75 16 705 03-07-17, 05:04 AM
آخر رد: K39
  [سؤال] كيف احفظ صورة الطالب الى قاعدة البيانات عبداللطيف2017 6 326 25-06-17, 01:47 PM
آخر رد: silverlight
  [سؤال] فك كلمة مرور معقدة على قاعدة البيانات اكسس ahmed saba 7 6,072 28-05-17, 05:30 PM
آخر رد: abiza
  [كود] كنت عايز كود التحديث في قاعدة البيانات لسه مبتدئ 3 240 12-05-17, 01:59 PM
آخر رد: Adrees

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


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