27-12-23, 01:58 AM
27-12-23, 05:38 AM
السلام عليكم ورحمة الله وبركاته
يوجد طريقة قديمة تعتمد على DLL DAO3.6 يعني بدك ترجع لأكواد VB6.0 وتطبقها ع الدوت نت ؟؟؟ (كأنك بتقول يعني شو عملت بنقلتك ع الدوت نت)
-- أما في الدوت نت :
بشكل مباشر ما فيه ضمن (الاكسس والدوت نت) تعديل اسم حقل
ولكن فيك تحتال ع الأمر بـ :
1 - إضافة حقل جديد.
2 - نسخ البيانات من الحقل القديم إلى الجديد.
3 - حذف الحقل القديم.
الكود :
ملاحظة : أنتبه لتسميات الحقول عندك في قاعدة البيانات .. رموز وفراغات -- لذلك نسخت اسم الحق ووضعته بين قوسين..
يا عم أنت صرت مبرمج وممنوع عليك تقع بالأخطاء المتعلقة بالتسميات ..
يعني لو أنك عندي - بأقل من خيزرانه مبلولة ما برضى فيك
.. خمس دقائق وأنا عم فكر وين الغلط بالكود وبالاخر طلع باسم الحقل..
يوجد طريقة قديمة تعتمد على 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ملاحظة : أنتبه لتسميات الحقول عندك في قاعدة البيانات .. رموز وفراغات -- لذلك نسخت اسم الحق ووضعته بين قوسين..
يا عم أنت صرت مبرمج وممنوع عليك تقع بالأخطاء المتعلقة بالتسميات ..
يعني لو أنك عندي - بأقل من خيزرانه مبلولة ما برضى فيك
.. خمس دقائق وأنا عم فكر وين الغلط بالكود وبالاخر طلع باسم الحقل..27-12-23, 06:24 AM
(27-12-23, 05:38 AM)Taha Okla كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
وعليكم السلام ورحمة الله وبركاته
ما شاء الله عليك أستاذ Taha Okla
فعلا التجربة ناجحة 100%
ولقد نجحت الحيلة بامتياز
أشكرك جزيل الشكر والتقدير ، ما قصرت
بارك الله فيك ، وجعلك ذخرًا وسندًا لنا .
27-12-23, 07:49 AM
عندي تساؤل آخر لو سمحتم
كيف يمكن وضع متغيرات بدلا من وضع الأسماء مباشرة في الاستعلام
المثال تجدونه في المرفقات .
وشكرا .
كيف يمكن وضع متغيرات بدلا من وضع الأسماء مباشرة في الاستعلام
كود :
Dim TableName As String = "Transfers" ' اسم الجدول
Dim OldField As String = "Cars" ' اسم الحقل القديم
Dim NewField As String = "Ships" ' اسم الحقل الجديدالمثال تجدونه في المرفقات .
وشكرا .
27-12-23, 08:00 AM
هذا ابسط شكل لها :
كود :
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) ' حذف الحقل القديم27-12-23, 08:09 AM
(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) ' حذف الحقل القديم
تمام أستاذي
العملية نجحت بشكل ممتاز
جزاك الله خيرا ما قصرت
29-12-23, 05:59 PM
ما زال الموضوع ينقصه الكثير من المعلومات أو التعلم ولو من مرجع أجنبى نطمع من يزودنا به
مثال خطر على بالى
فى العبارة التى فى أول مشاركة
"Com1.CommandText="ALTER TABLE Employees ADD COLUMN Notes TEXT(25)
المقصود بـــ TEXT(25) إضافة حقل نصى يحتوى على 25 حرف
ماذا لو أردت إضافة حقل Boolean أى بمعنى ( yes/no )
هذه المعلومة أنا فى احتاج لها الآن ، كيف ستكون الصيغة ؟
بمعنى ليت يوجد شرح لـــ data_type للحقول
مثال خطر على بالى
فى العبارة التى فى أول مشاركة
"Com1.CommandText="ALTER TABLE Employees ADD COLUMN Notes TEXT(25)
المقصود بـــ TEXT(25) إضافة حقل نصى يحتوى على 25 حرف
ماذا لو أردت إضافة حقل Boolean أى بمعنى ( yes/no )
هذه المعلومة أنا فى احتاج لها الآن ، كيف ستكون الصيغة ؟
بمعنى ليت يوجد شرح لـــ data_type للحقول
29-12-23, 06:10 PM
أكتب :
bit
أو
yesno
بدلا من نوع الحقل
bit
أو
yesno
بدلا من نوع الحقل
29-12-23, 08:37 PM
بارك الله فيك أخى طه
ردك صحيح ، وجاء فى وقته
وأطمع منك فى تعديل يضاف للكود التالى بحيث
إذاكان الحقلين Cod و Nageh غير موجودين فى الجدول Stuedint
بقاعدة البيانات data.mdb
بقاعدة البيانات data.mdb
فيتم تنفيذ إضافتهما للجدول ( كما هو موجود بالكود التالى ، وما هو الأمر الذى يتيح إضافة قيمة لأى حقل منها )
PHP كود :
Imports System.Data.OleDb
Module Module1
Sub Main()
Try
dataconnection()
com_gn.Connection = con_gn
If (con_gn.State = ConnectionState.Closed) Then
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.Open) Then
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
29-12-23, 09:28 PM
من المؤكد أنك تستطيع تعبئة بيانات جدول ما في DataTable حتى لو كان فارغ
يوجد طرق كثيرة ومنها الطريقة تعتمد على أسماء الحقول الموجودة في الداتاتيبل (dt)
بالتالي لا تحتاج تطوير الكود الخاص بك بهذا المودل لأن الكود موجود أساساً من خصائص الـ DataTable
وهو :
يوجد طرق كثيرة ومنها الطريقة تعتمد على أسماء الحقول الموجودة في الداتاتيبل (dt)
بالتالي لا تحتاج تطوير الكود الخاص بك بهذا المودل لأن الكود موجود أساساً من خصائص الـ DataTable
وهو :
كود :
If dt.Columns.Contains("age1") Then
MsgBox("الحقل موجود")
Else
MsgBox("الحقل غير موجود")
End If