منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغات البرمجة الاخرى (http://vb4arb.com/vb/forumdisplay.php?fid=4)
+--- قسم : قسم لغة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=18)
+---- قسم : قسم أسئلة vb6.0 (http://vb4arb.com/vb/forumdisplay.php?fid=28)
+---- الموضوع : [سؤال] كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 (/showthread.php?tid=20150)



كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - أبوسعود - 25-04-17

السلام عليكم ورحمة الله وبركاته
لدي سؤال لو سمحتم
يمكننا انشاء جدول بقاعدة بيانات باستخدام الاداة Dao بالكود التالي:
With NewTable
(Fields.Append .CreateField("Id", dbLong)
Fields!ID.Required = True
(Fields.Append .CreateField("Name", dbText, 50)
Fields!NameEN.Required = True
لكن السؤال كيف يمكنني تعيين نوع البيانات ترقيم تلقائي للحقل ID بدلاً من كونه  dbLong
مع فائق الشكر والتقدير


RE: كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - السيد الغالي - 26-04-17

الاخ ابو سعود السلام عليكم
عملت لك مثال لانشاء جدول في قاعدة البيانات فيه حقل id  من النوع الترقيم التلقائي وكذلك يمكنك انشاء حقل ترقيم تلقائي في الجدول في حالة عدم وجوده اصلا في الجدول اتمنى ان يكون هو ما طلبته


RE: كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - أبوسعود - 26-04-17

مشكور جزيل الشكر صديقي السيد الغالي
لو سمحت ممكن تكتب شرح بجانب كل كود موجود إذا ما فيها عذاب لإلك
مشكور مرة أخرى على ما افدتني من معلومات
علماً بأنني انشأت قاعدة البيانات والجدول بالصيغة التالية:
Private Sub Command2_Click()
Dim cat As New ADOX.Catalog
Set DBobj = CreateDatabase(App.Path & "\Sony.mdb", dbLangArabic, dbEncrypt)
Set NewTable = DBobj.CreateTableDef("tb_Channal")
With NewTable
2- إضافة الحقول إلى الجدول
.Fields.Append .CreateField("Id", dbLong)
.Fields!ID.Required = True
.Fields.Append .CreateField("NameEN", dbText, 50)
.Fields!NameEN.Required = True
.Fields.Append .CreateField("Frequency", dbLong)
.Fields.Append .CreateField("VideoPID", dbLong)
.Fields.Append .CreateField("AudioPID", dbLong)
.Fields.Append .CreateField("PCRPID", dbLong)

3- إنشاء فهرس جديد وتعيينه كمفتاح رئيسي وإضافته إلى الجدول
Set NewIndex = .CreateIndex("PrimaryKey")
NewIndex.Fields.Append .CreateField("Id")
NewIndex.Primary = True
.Indexes.Append NewIndex
End With
4- حفظ الجدول في قاعدة البيانات
DBobj.TableDefs.Append NewTable


DBobj.Close
End Sub

وهل المكتبة التي تستخدمها أفضل أم التي أستخدمها


RE: كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - السيد الغالي - 26-04-17

اخي ابو سعود السلام عليكم
في ما يخص طلبك الاول وضعت توضيح مبسط للاكواد التي ارى انها تحتاج الى توضيح اما بقية الاكواد فهي واضحة واذا كان لديك غموض في احد الاكواد فارجو ان تبينه لي حتى يتم شرحه . اما فيما يخص سؤالك الثاني فارى ان لا فرق مهم بين الطريقتين ما دام كلاهما يحقق المطلوب رغم اني استخدم هذه الطريقة غالبا في مثل هذه الحالات


RE: كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - أبوسعود - 26-04-17

Dim strCon As String
Dim DataFile As String
Dim cn As ADODB.Connection
Dim cat As New ADOX.Catalog ماالمقصود هنا بـcatalog
Dim NewTable As ADOX.Table
Dim Indx As ADOX.Index
Dim a

On Error GoTo TableErr

DataFile = App.Path + "\db1.mdb"
Set cn = New ADODB.Connection
strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataFile & ";"
cn.Open strCon
Set cat.ActiveConnection = cn مالمقصود هنا
Set NewTable = New ADOX.Table
تحديد اسم الجدول في قاعدة البيانات ويجب ان يكون غير موجود أصلاً في قاعدة البيانات
a = InputBox("حدد اسم الجدول يجب ان يكون غير موجود في قاعدة البيانات")

NewTable.Name = a

'انشاء الحقول في الجدول
With NewTable.Columns
.Append "id", adInteger عدد صحيح طويل
.Append "EmployeeName", adVarWChar, 30 'نص
.Append "City", adVarWChar, 20 ''نص
.Append "Address", adVarWChar, 40 'نص
.Append "Phone", adVarWChar, 15 'äنص

With !id
Set .ParentCatalog = cat ما المقصود هنا
.Properties("Autoincrement") = True 'ترقيم تلقائي
End With

With !EmployeeName
Set .ParentCatalog = cat
.Properties("Nullable") = False ما المقصود هنا
.Properties("Jet OLEDB:Allow Zero Length") = False ما المقصود هنا
End With
End With

cat.Tables.Append NewTable 'حفظ الجدول

Set Indx = New ADOX.Index 'لانشاء مفتاح اساسي
Indx.Name = "PrimaryKey"
Indx.PrimaryKey = True
Indx.Columns.Append "id" ما المقصود هنا
NewTable.Indexes.Append Indx ما المقصود هنا

Set Indx = Nothing
Set NewTable = Nothing
Set cat = Nothing
Exit Sub

TableErr:
MsgBox "هذا الجدول موجود في قاعدة البيانات"
أخي الكريم اضفتلك جملة ما المقصود هنا بالكود الذي لم أفهمه يرجى الرد من قبلك
ولو تكرمت علي بكود إنشاء قاعدة بيانات بدون كلمة مرور وإنشاء قاعدة بيانات مع تمكين كلمة مرور
مشكور يا غالي


RE: كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - السيد الغالي - 27-04-17

(26-04-17, 05:03 PM)أبوسعود كتب : Dim strCon As String
Dim DataFile As String
Dim cn As ADODB.Connection
Dim cat As New ADOX.Catalog ماالمقصود هنا بـcatalog
Dim NewTable As ADOX.Table
Dim Indx As ADOX.Index
Dim a
   
  On Error GoTo TableErr
 
  DataFile = App.Path + "\db1.mdb"
  Set cn = New ADODB.Connection
  strCon = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataFile & ";"
  cn.Open strCon
  Set cat.ActiveConnection = cn مالمقصود هنا
  Set NewTable = New ADOX.Table
تحديد اسم الجدول في قاعدة البيانات ويجب ان يكون غير موجود أصلاً في قاعدة البيانات
  a = InputBox("حدد اسم الجدول يجب ان يكون غير موجود في قاعدة البيانات")

  NewTable.Name = a
   
  'انشاء الحقول في الجدول
  With NewTable.Columns
     .Append "id", adInteger  عدد صحيح طويل
     .Append "EmployeeName", adVarWChar, 30 'نص
     .Append "City", adVarWChar, 20 ''نص
     .Append "Address", adVarWChar, 40 'نص
     .Append "Phone", adVarWChar, 15 'äنص
       
     With !id
        Set .ParentCatalog = cat ما المقصود هنا
        .Properties("Autoincrement") = True  'ترقيم تلقائي
     End With
       
     With !EmployeeName
        Set .ParentCatalog = cat
        .Properties("Nullable") = False ما المقصود هنا
        .Properties("Jet OLEDB:Allow Zero Length") = False ما المقصود هنا
     End With
  End With
   
  cat.Tables.Append NewTable 'حفظ الجدول
 
  Set Indx = New ADOX.Index  'لانشاء مفتاح اساسي
  Indx.Name = "PrimaryKey"
  Indx.PrimaryKey = True
  Indx.Columns.Append "id" ما المقصود هنا
  NewTable.Indexes.Append Indx ما المقصود هنا
 
  Set Indx = Nothing
  Set NewTable = Nothing
  Set cat = Nothing
  Exit Sub
   
TableErr:
  MsgBox "هذا الجدول موجود في قاعدة البيانات"
أخي الكريم اضفتلك جملة ما المقصود هنا بالكود الذي لم أفهمه يرجى الرد من قبلك
ولو تكرمت علي بكود إنشاء قاعدة بيانات بدون كلمة مرور وإنشاء قاعدة بيانات مع تمكين كلمة مرور
مشكور يا غالي
اخي العزيز ابو سعود السلام عليكم
فيما يخص تساؤلاتك اعلاه اطلع على الموضوع على الرابط 
http://arabteam2000-forum.com/index.php?/topic/127139-%D9%85%D8%A7%D8%B0%D8%A7-%D8%AA%D8%B9%D8%B1%D9%81-%D8%B9%D9%86-%D8%A7%D9%84-adox/
اما فيما يخص طلبك بانشاء قاعدة بيانات بكلمة مرور واخرى بدون كلمة مرور فستجدها في المرفقات


RE: كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6 - أبوسعود - 27-04-17

مشكور صديقي كان شرحك كافي ووافي
تقبل خاص تحياتي....