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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] عدم إظهار الصور مع النص فى Listview من قاعدة البيانات alims 2 1,582 27-08-23, 12:22 PM
آخر رد: رضوان الجماعي
  استفسار عن تخزين الوقت في قاعدة البيانات strongriseman 2 1,128 22-04-22, 07:27 PM
آخر رد: strongriseman
  [سؤال] مشكلة فى عرض الصورة من ادخل قاعدة البيانات alims 2 1,266 17-11-21, 10:09 AM
آخر رد: سعود
  استعلام يرجع اسماء الاعمدة و نوع البيانات في جدول معين بسام محمدغانم 0 964 23-10-21, 01:43 AM
آخر رد: بسام محمدغانم
  الحفظ فى قاعدة البيانات اسلام الكبابى 10 2,351 06-09-21, 06:52 PM
آخر رد: اسلام الكبابى
  طريقة أضافة اكثر من سيرفر على نفس قاعدة البيانات alim54 0 1,140 20-06-21, 11:20 PM
آخر رد: alim54
  ملى الصفحة تلقائياً او ربط مستعرض الانترنت بقاعدة البيانات علي عدنان 2 3,848 02-02-21, 01:31 AM
آخر رد: فارس زيدان
  كود عدم تكرار البيانات بالداتا جريد فيو ِAbou Sama 4 7,574 04-12-20, 10:59 PM
آخر رد: Osama_NY
  عمل تحديث لعرض البيانات المضافة جديداً aldery 0 1,430 23-07-20, 02:36 AM
آخر رد: aldery
  [سؤال] نقل البيانات من جدول إلى أخر SQL Server 2008 semsemalex 7 14,785 19-04-20, 12:00 AM
آخر رد: essamprog2020

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


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