تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] إضافة أو حذف حقل فى قاعدة بيانات باستخدام كود VB.net
#11
بعد التجربة

للأسف لم ينجح عندي تعديل اسم حقل Access

المثال أرفقته لمعاينته ، وتصليح الأخطاء .
ولكم خالص الشكر والتقدير .


الملفات المرفقة
.rar   RenameField.rar (الحجم : 344.4 ك ب / التحميلات : 18)
الرد }}}
تم الشكر بواسطة:
#12
السلام عليكم ورحمة الله وبركاته

يوجد طريقة قديمة تعتمد على DLL    DAO3.6  يعني بدك ترجع لأكواد VB6.0   وتطبقها ع الدوت نت ؟؟؟ (كأنك بتقول يعني شو عملت بنقلتك ع الدوت نت)

--  أما في الدوت نت :
بشكل مباشر ما فيه ضمن (الاكسس والدوت نت) تعديل اسم حقل
ولكن فيك تحتال ع الأمر بـ : 
1 - إضافة حقل جديد.
2 - نسخ البيانات من الحقل القديم إلى الجديد.
3 - حذف الحقل القديم.


الكود : 

كود :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

   Dim connectionString As String = "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source =" & Application.StartupPath & "\MyCars.accdb;User ID=Admin;jet oledb:database password=;"
   Dim conn As New OleDbConnection(connectionString)


   eExecuteNonQuery("ALTER TABLE Transfers ADD COLUMN [Planes] TEXT", conn) '  إصافة حقل جديد
   eExecuteNonQuery("UPDATE Transfers SET [Planes] = [Cars ]", conn)        '  نسخ البيانات من الحقل القديم للجديد
   eExecuteNonQuery("ALTER TABLE Transfers DROP COLUMN [Cars ]", conn)      ' حذف الحقل القديم

End Sub

Public Sub eExecuteNonQuery(strSql As String, pConn As OleDbConnection) ' إجراء تنفيذ أوامر
   If pConn.State <> ConnectionState.Open Then pConn.Open()
   Dim command As New OleDbCommand(strSql, pConn)
   command.ExecuteNonQuery()
   If pConn.State <> ConnectionState.Closed Then pConn.Close()
End Sub

ملاحظة : أنتبه لتسميات الحقول عندك في قاعدة البيانات .. رموز وفراغات -- لذلك نسخت اسم الحق ووضعته بين قوسين..
يا عم أنت صرت مبرمج وممنوع عليك تقع بالأخطاء المتعلقة بالتسميات ..
يعني لو أنك عندي - بأقل من خيزرانه مبلولة ما برضى فيك Sleepy .. خمس دقائق وأنا عم فكر وين الغلط بالكود وبالاخر طلع باسم الحقل..
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: أبو خالد الشكري
#13
(27-12-23, 05:38 AM)Taha Okla كتب : السلام عليكم ورحمة الله وبركاته

وعليكم السلام ورحمة الله وبركاته
ما شاء الله عليك أستاذ Taha Okla
فعلا التجربة ناجحة 100%
ولقد نجحت الحيلة بامتياز  Big Grin

أشكرك جزيل الشكر والتقدير ، ما قصرت
بارك الله فيك ، وجعلك ذخرًا وسندًا لنا .
الرد }}}
تم الشكر بواسطة:
#14
عندي تساؤل آخر لو سمحتم

كيف يمكن وضع متغيرات بدلا من وضع الأسماء مباشرة في الاستعلام

كود :
  Dim TableName As String = "Transfers" ' اسم الجدول
       Dim OldField As String = "Cars" ' اسم الحقل القديم
       Dim NewField As String = "Ships" ' اسم الحقل الجديد

المثال تجدونه في المرفقات .

وشكرا .


الملفات المرفقة
.rar   RenameField.rar (الحجم : 344.31 ك ب / التحميلات : 30)
الرد }}}
تم الشكر بواسطة:
#15
هذا ابسط شكل لها :
كود :
       Dim TableName As String = "Transfers" ' اسم الجدول
       Dim OldField As String = "Cars" ' اسم الحقل القديم
       Dim NewField As String = "Ships" ' اسم الحقل الجديد



       eExecuteNonQuery($"ALTER TABLE {TableName} ADD COLUMN [{NewField}] TEXT", conn) '  إصافة حقل جديد
       eExecuteNonQuery($"UPDATE {TableName} SET [{NewField}] = [{OldField}]", conn)        '  نسخ البيانات من الحقل القديم إلى الجديد
       eExecuteNonQuery($"ALTER TABLE {TableName} DROP COLUMN [{OldField}]", conn)      ' حذف الحقل القديم
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: أبو خالد الشكري
#16
(27-12-23, 08:00 AM)Taha Okla كتب : هذا ابسط شكل لها :
كود :
       Dim TableName As String = "Transfers" ' اسم الجدول
       Dim OldField As String = "Cars" ' اسم الحقل القديم
       Dim NewField As String = "Ships" ' اسم الحقل الجديد



       eExecuteNonQuery($"ALTER TABLE {TableName} ADD COLUMN [{NewField}] TEXT", conn) '  إصافة حقل جديد
       eExecuteNonQuery($"UPDATE {TableName} SET [{NewField}] = [{OldField}]", conn)        '  نسخ البيانات من الحقل القديم إلى الجديد
       eExecuteNonQuery($"ALTER TABLE {TableName} DROP COLUMN [{OldField}]", conn)      ' حذف الحقل القديم


تمام أستاذي
العملية نجحت بشكل ممتاز
جزاك الله خيرا ما قصرت 


الرد }}}
تم الشكر بواسطة:
#17
ما زال الموضوع ينقصه الكثير من المعلومات أو التعلم ولو من مرجع أجنبى نطمع من يزودنا به

مثال خطر على بالى
فى العبارة التى فى أول مشاركة
"Com1.CommandText="ALTER TABLE Employees ADD COLUMN Notes TEXT(25)
المقصود بـــ TEXT(25) إضافة حقل نصى يحتوى على 25 حرف
ماذا لو أردت إضافة حقل Boolean أى بمعنى ( yes/no )
هذه المعلومة أنا فى احتاج لها الآن ، كيف ستكون الصيغة ؟
بمعنى ليت يوجد شرح لـــ data_type للحقول
الرد }}}
تم الشكر بواسطة:
#18
أكتب :
bit
أو
yesno

بدلا من نوع الحقل
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: AmeenRashed
#19
بارك الله فيك أخى طه

ردك صحيح  ، وجاء فى وقته
وأطمع منك فى تعديل يضاف للكود التالى بحيث
إذاكان الحقلين  Cod   و   Nageh  غير موجودين فى الجدول Stuedint
بقاعدة البيانات    data.mdb
فيتم تنفيذ إضافتهما  للجدول ( كما هو موجود بالكود التالى ، وما هو الأمر الذى يتيح إضافة قيمة لأى حقل منها )

PHP كود :
Imports System.Data.OleDb
Module Module1
    Sub Main
()
 
       Try
            dataconnection
()
 
           com_gn.Connection con_gn
            If 
(con_gn.State ConnectionState.ClosedThen
                con_gn
.Open()
 
           End If
 
           com_gn.CommandText "alter table Stuedint add column Cod text(75)"
 
           com_gn.ExecuteNonQuery()
 
           com_gn.CommandText "alter table Stuedint add column Nageh yesno"
 
           com_gn.ExecuteNonQuery()
 
           If (con_gn.State ConnectionState.OpenThen
                con_gn
.Close()
 
           End If
 
           MsgBox("تمت إضافة الحقول بنجاح")
 
       Catch ex As Exception
            MsgBox
("فشل إضافة الحقول ")
 
       End Try
 
   End Sub
    Public Sub dataconnection
()
 
       If con_gn.State ConnectionState.Open Then ' اذا كان الاتصال مفتوح اغلقه
            con_gn.Close()
        End If
        con_gn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\School\data.mdb;Persist Security Info=True;Jet OLEDB:Database Password=***"
        If Not con_gn.State = ConnectionState.Open Then
            '
افتح الاتصال
            con_gn
.Open()
 
       End If
 
   End Sub

    
'  Fields
    Public con_gn As New OleDbConnection
    Public com_gn As New OleDbCommand

End Module 
الرد }}}
تم الشكر بواسطة:
#20
من المؤكد أنك تستطيع تعبئة بيانات جدول ما في DataTable  حتى لو كان فارغ
يوجد طرق كثيرة ومنها الطريقة تعتمد على أسماء الحقول الموجودة في الداتاتيبل (dt)

بالتالي لا تحتاج تطوير الكود الخاص بك بهذا المودل لأن الكود موجود أساساً من خصائص الـ DataTable
وهو :
كود :
If dt.Columns.Contains("age1") Then
           MsgBox("الحقل موجود")
       Else
           MsgBox("الحقل غير موجود")
       End If
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: أبو خالد الشكري , AmeenRashed



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


يقوم بقرائة الموضوع: