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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  بحث و إظهار صورة من قاعة البيانات علىPictureBox ahmed_elwerfalli 0 36 29-11-16, 01:34 AM
آخر رد: ahmed_elwerfalli
  [سؤال] المساعدة في نقل سجلات من جدول الى جدول اخر مهندس حيدر 7 266 13-11-16, 02:16 PM
آخر رد: محمود بكرى
  [سؤال] كيفية اضافة عناصر عمود فى جدول من قاعدة بيانات فى جدول اخر hidn 1 163 04-11-16, 09:25 AM
آخر رد: thevirus
  [VB.NET] مثال على جلب ارقام من قاعدة البيانات وحفظها في مصفوفة بدر إشتية 4 343 02-11-16, 02:42 AM
آخر رد: Ahmad ahmed
  استفسار حول طريقتي في قاعدة البيانات صبري زينوبي 0 76 29-09-16, 04:35 PM
آخر رد: صبري زينوبي
  تسمية قاعدة البيانات قبل انشائها aiman 3 166 15-09-16, 09:12 PM
آخر رد: Abu Ehab
  [Acces2003] المساعدة في كود لحذف البيانات من الاستعلام محمد خلف زكي 2 138 28-08-16, 11:24 AM
آخر رد: محمد خلف زكي
  [VB.NET] الفيجوال بيسك لا يحفظ البيانات محمد خلف زكي 1 214 02-08-16, 05:54 AM
آخر رد: سعود
  لماذا لايتم حفظ الثواني مع باقي القيم الى قاعدة البيانات؟ سعود 2 383 01-08-16, 11:15 AM
آخر رد: أبوبكر سويدان
  مساعدة بحفظ محتوى داخل combox داخل قاعدة البيانات او فكرة مقاربه المثال مرفق رهف العريفي 24 728 17-06-16, 03:05 AM
آخر رد: رهف العريفي

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


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