منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : استعادة الترقيم التلقائي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

استخدم الكود التالي لاستعادة الترقيم التلقائي والكود يعمل ولكن تحدث مشكلة ان عمود الترقيم التلقائي يصبح رقمي  اريد التعديل علي الكود بحيث يرجع العمود الي نفس خصائصة ترقيم تلقائي

 
PHP كود :
Dim cmd As New OleDb.OleDbCommand(""con)

 
       con.Open()
 
       cmd.CommandText "ALTER TABLE Table1 DROP CONSTRAINT PrimaryKey"
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 DROP COLUMN ID "
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 ADD COLUMN ID COUNTER CONSTRAINT [PrimaryKey] Primary key "
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 ALTER COLUMN ID COUNTER CONSTRAINT"
 
       cmd.ExecuteNonQuery()
 
       con.Close()
 
       DataSet1.Clear()
 
       DataAdapter1.Fill(DataSet1"Table1")
 
       count()
 
       DataGridView1.AllowUserToAddRows False
        MsgBox
("تم بنجاح استعادة تسلسل السجلات"64 524288"نجاح"
احذف العملية الأخير ل cmd.CommandText

PHP كود :
       Dim cmd As New OleDb.OleDbCommand(""con)

 
       con.Open()
 
       cmd.CommandText "ALTER TABLE Table1 DROP CONSTRAINT PrimaryKey"
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 DROP COLUMN ID "
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 ADD COLUMN ID COUNTER CONSTRAINT [PrimaryKey] Primary key "
 
       cmd.ExecuteNonQuery()
 
       con.Close()
 
       DataSet1.Clear()
 
       DataAdapter1.Fill(DataSet1"Table1")
 
       count()
 
       DataGridView1.AllowUserToAddRows False
        MsgBox
("تم بنجاح استعادة تسلسل السجلات"64 524288"نجاح"

لكن هذا الأسلوب غير صحيح
فلا يصح استخدام عمود الترقيم التلقائي من أجل عرض تسلسل السجلات
(12-12-17, 03:55 PM)طالب برمجة كتب : [ -> ]احذف العملية الأخير ل cmd.CommandText

PHP كود :
       Dim cmd As New OleDb.OleDbCommand(""con)

 
       con.Open()
 
       cmd.CommandText "ALTER TABLE Table1 DROP CONSTRAINT PrimaryKey"
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 DROP COLUMN ID "
 
       cmd.ExecuteNonQuery()
 
       cmd.CommandText "ALTER TABLE Table1 ADD COLUMN ID COUNTER CONSTRAINT [PrimaryKey] Primary key "
 
       cmd.ExecuteNonQuery()
 
       con.Close()
 
       DataSet1.Clear()
 
       DataAdapter1.Fill(DataSet1"Table1")
 
       count()
 
       DataGridView1.AllowUserToAddRows False
        MsgBox
("تم بنجاح استعادة تسلسل السجلات"64 524288"نجاح"

لكن هذا الأسلوب غير صحيح
فلا يصح استخدام عمود الترقيم التلقائي من أجل عرض تسلسل السجلات
الف شكر علي ردك

انا حاولت بحذف اخر جزء مثل ما فعلت   وحاولت بطريقة اخري بانشاء عمود الترقيم مرة اخري ونفس المشكلة ولكن لم يعمل معي عشان كدة طرحت الموضوع
طيب اية هية الطريقة الصحيحة  لان الكود السابق لم يظبط معي
الطريقة الصحيحة أن تستخدم طريقة أخرى لعرض تسلسل رقمي للسجلات بالكود لDataGridView أو إجراء مخصص لذلك داخل التقارير

لو عندك مثال تريد وضع عرض تسلسل رقمي للسجلات ضعه للتطبيق عليه.
(12-12-17, 08:55 PM)طالب برمجة كتب : [ -> ]الطريقة الصحيحة أن تستخدم طريقة أخرى لعرض تسلسل رقمي للسجلات بالكود لDataGridView أو إجراء مخصص لذلك داخل التقارير

لو عندك مثال تريد وضع عرض تسلسل رقمي للسجلات ضعه للتطبيق عليه.

السّلام عليكم و رحمة الله و بركاته
أخي الكريم " طالب برمجة "
هل من الممكن فضل و كرم و إحسان منك تطبيق الفكرة التّي تفضّلت بذكرها على هذا الملف
بحيث يتم إعادة التّسلسل الرّقمي للسجلاّت بعد عمليّة الحذف بالفورم 7 بدون التّأثير على باقي المشروع
لك منّي كل الشّكر و التّقدير و الاحترام
الفكرة ليست إعادة التّسلسل الرّقمي وإنما إنشاء التّسلسل الرّقمي

مبدئيا بالنسبة للمرفق كما هو يتم إضافة عمود في الأول للتسلسل الرقمي
ثم يتم وضع هذا الكود بعد أي تغيير في أسطر الداتاجريد مثل التعبئة أو الحذف أو الإضافة
PHP كود :
For Each r As DataGridViewRow In Me.DataGridView1.Rows
    If Not r
.IsNewRow Then r.Cells(0).Value = (r.Index 1).ToString("000")
Next 

هناك ملاحظات على قاعدة البيانات:

وجدت جدول واحد يشمل اسماء التلاميذ ودرجاتهم،
ويفترض أن اسماء التلاميذ مع بياناتهم الشخصية في جدول والدرجات في جدول آخر ثم الربط بينهم.

وجدت أن العمود ID نصي،
ويفترض أن يكون ترقيم تلقائي مع اعتماده كمفتاح أساسي.

وجدت أن نوع كل الأعمدة نصية،
ويفترض أن يتم تحديد نوع كل عمود بما يناسبه (رقمي،نصي،تاريخ،...)
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم " طالب برمجة " على المساعدة الطيّبة و على الملاحظات و النّصائح القيّمة
بارك الله فيك و لك و جزاك خير الجزاء و زادك من علمه و فضله إن شاء الله
1 - بالنسبة لجدول واحد .. أنا تعمّدت على جعل جدول واحد للدرجات مع الأسماء لأنّ الفكرة فقط حساب المعدلات أمّا البيانات الشّخصيّة سأخصّص لها جدول آخر حتى لا تختلط عليَّ الأمور لأنّ الرّبط بين الجداول لا أتقنه تمامًا و ليست لي الخبرة الكافية لإنجاز ذلك.
2 - العمود الأوّل النصّي نعم كان فيه سهو منّي لأنّ الحقل الأوّل هو بالأصل رقمي و جعلته كمفتاح رئيسي
3 - كل الحقول نصّية .. لأنّ عملّيات الجمع و الحسابات كلّها تتم داخل الفورم و أقوم بتصديرها إلى قاعدة البيانات و جعلتها نصّية لكي تبقى العلامات على حالها مثلاً كتبت .. 08.70 .. عند التّصدير أجدها 08.70 .. لو جعلتها رقمية ستكون بهذا الشّكل 8.7
ستجد ذلك بالمرفقات .. فقط لو أمكن .. هل يوجد كود لجعل العلامة عند الإدخال تكون برقمين بعد الفاصلة
هذا الكود الذي أستعمله يعمل بشكل جيّد لكنّه طويل و سبّب لي إرتباك ..
في الفيجوال 6 كنت أستعمل  هذا الكود ليفي بالغرض ..
كود :
Private Sub Text1_Change()
Text3.Text = Val(Replace(Me.Text1, ",", ".")) + Val(Replace(Me.Text2, ",", "."))
Text3.Text = Format(Text3.Text, "# #00.00 ")
End Sub

هل بالإمكان إيجاد كود بديل لهذا .. فيما يتعلّق بالجزئية العشرية الخاصّة بجعل رقمين بعد الفاصلة
وضعت أخي الكريم الكود المخصّص للتسلسل الرقمي .. يعمل بشكل جيّد في ترتيب السجلاّت على الداتا جريد لكن بقاعدة البيانات البيانات يبقى التسلسل غير المرتّب مثلما كان عليه .. ربّما قد أكون فهمت خطأ في كيفيّة إستعمال هذا الكود
كل الشكر و التّقدير أخي الكريم
إحتراماتي
السّلام عليكم و رحمة الله و بركاته
كيفك أخي الغالي " أمير " .. أدعو الله أن تكون بتمام الصحّة و العافية و راحة البال و كل الأسرة الكريمة
تشكر يا غالي على المداخلة القيّمة و و جهة النّظر السّليمة
إحتراماتي
بالنسبة لتنسيق الأرقام في الداتاجريد تتم في الحدث CellFormatting
تم وضع شرط لتنفيذ التنسيق على الأعمدة من 2 إلى 11 وأن لا تكون القيمة Null
PHP كود :
Private Sub DataGridView1_CellFormatting(ByVal sender As ObjectByVal e As DataGridViewCellFormattingEventArgsHandles DataGridView1.CellFormatting
    If 
(Not IsDBNull(e.Value)) AndAlso (e.ColumnIndex >= And e.ColumnIndex <= 11Then
        e
.Value Val(e.Value).ToString("00.00")
 
   End If
End Sub 
إضافة لما ذكرة الأخ Amir_alzubidy هناك نوع رقم مفرد يقبل الكسر وهو أنسب
الخاصية المهمة مع النوع هي حجم الحقل

الخصائص الأخرى تفيد فقط للبرمجة داخل الأكسس
السّلام عليكم و رحمة الله و بركاته
بارك الله فيكما و لكما و جزاكما خير الجزاء و زادها بموازين حسناتكما و زادكما من علمه و فضله
" طالب برمجة " - " أمير الزبيدي "
شكرًا لكما جزيل الشّكر مع كامل الاحترام و التّقدير
تحياتي