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

نسخة كاملة : كيفية انشاء حقل من نوع ترقيم تلقائي بالفيجول بيسك 6
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته
لدي سؤال لو سمحتم
يمكننا انشاء جدول بقاعدة بيانات باستخدام الاداة Dao بالكود التالي:
With NewTable
(Fields.Append .CreateField("Id", dbLong)
Fields!ID.Required = True
(Fields.Append .CreateField("Name", dbText, 50)
Fields!NameEN.Required = True
لكن السؤال كيف يمكنني تعيين نوع البيانات ترقيم تلقائي للحقل ID بدلاً من كونه  dbLong
مع فائق الشكر والتقدير
الاخ ابو سعود السلام عليكم
عملت لك مثال لانشاء جدول في قاعدة البيانات فيه حقل id  من النوع الترقيم التلقائي وكذلك يمكنك انشاء حقل ترقيم تلقائي في الجدول في حالة عدم وجوده اصلا في الجدول اتمنى ان يكون هو ما طلبته
مشكور جزيل الشكر صديقي السيد الغالي
لو سمحت ممكن تكتب شرح بجانب كل كود موجود إذا ما فيها عذاب لإلك
مشكور مرة أخرى على ما افدتني من معلومات
علماً بأنني انشأت قاعدة البيانات والجدول بالصيغة التالية:
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

وهل المكتبة التي تستخدمها أفضل أم التي أستخدمها
اخي ابو سعود السلام عليكم
في ما يخص طلبك الاول وضعت توضيح مبسط للاكواد التي ارى انها تحتاج الى توضيح اما بقية الاكواد فهي واضحة واذا كان لديك غموض في احد الاكواد فارجو ان تبينه لي حتى يتم شرحه . اما فيما يخص سؤالك الثاني فارى ان لا فرق مهم بين الطريقتين ما دام كلاهما يحقق المطلوب رغم اني استخدم هذه الطريقة غالبا في مثل هذه الحالات
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 "هذا الجدول موجود في قاعدة البيانات"
أخي الكريم اضفتلك جملة ما المقصود هنا بالكود الذي لم أفهمه يرجى الرد من قبلك
ولو تكرمت علي بكود إنشاء قاعدة بيانات بدون كلمة مرور وإنشاء قاعدة بيانات مع تمكين كلمة مرور
مشكور يا غالي
(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?...9%84-adox/
اما فيما يخص طلبك بانشاء قاعدة بيانات بكلمة مرور واخرى بدون كلمة مرور فستجدها في المرفقات
مشكور صديقي كان شرحك كافي ووافي
تقبل خاص تحياتي....