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

نسخة كاملة : مشكلة فى إضافة حقول جديدة فى جدول موجود
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم
لدى مشكلة وأرجو منكم التكرم بالمساعدة فى حلها
لدى كود لإنشاء حقول جديدة فى جدول بناء على حقول يتم إضافتها من المستخدم فى جدول أخر والكود مكتوب بلغة VBA ويعمل بصورة ممتازة وهو كالتالى

كود :
Sub AlterTableX1()
   Dim intLoop As Integer
   Dim strSQL As String
   Dim strSQL1 As String
   For intLoop = 0 To Me.field_row.ListCount - 1
   strSQL = "ALTER TABLE Emp_Sal ADD " & _
   Me.field_row.Column(0, [intLoop]) & "  LONG INTEGER"
   CurrentProject.Connection.Execute strSQL
   strSQL1 = "ALTER TABLE tbl_General ADD " & _
   Me.field_row.Column(0, [intLoop]) & "  LONG INTEGER"
   CurrentProject.Connection.Execute strSQL1
   Next intLoop
'    MsgBox "تمت الإضافة بنجاح", vbOKOnly, "البرنامج "
End Sub
حيث حقل field_row ليست بوكس يتضمن كافة المدخلات من المستخدم ويتم تحويلها إضافتها كأعمدة جديدة فى جدول موجود بقاعدة البيانات
ولكن أريد التحويل الى فيجوال بيسك 2012 حيث أننى فى بداية تعلمى لهذه اللغة الجميلة
PHP كود :
      Sub AlterTableX1(field_row As ListBox)
        Dim intLoop As Integer
        Dim strSQL 
As String
        Dim strSQL1 
As String
        
For intLoop 0 To field_row.Items.Count 1
            strSQL 
"ALTER TABLE Emp_Sal ADD " _
            field_row
.Items(intLoop).ToString "  LONG INTEGER"
            FillDataTable(strSQL)
            strSQL1 "ALTER TABLE tbl_General ADD " _
            field_row
.Items(intLoop).ToString "  LONG INTEGER"
            FillDataTable(strSQL1)
        Next intLoop
        MsgBox
("تمت الإضافة بنجاح"MsgBoxStyle.Information"البرنامج ")
    End Sub 
PHP كود :
   Public Function FillDataTable(StrSQL As String) As DataTable
        Dim cn 
As New SqlClient.SqlConnection("Server =(local);database=AlAsemMedicalClinicsDB;integrated security=true")
 
       Dim da As New SqlClient.SqlDataAdapter(StrSQLcn)
 
       Dim dt As New DataTable
        dt
.Clear()
 
       da.Fill(dt)
 
       Return dt
    End 
Function 
الله يبارك لك أخى قمت بتطبيق الكود المرفق ولكن يظهر لى خطأ "خطأ في بناء الجملة في تعريف حقل." فى الفانكشن FillDataTable
تأكد من كود الاتصال بقاعدة البيانات او ضع صورة للخطأ .
(16-02-20, 02:36 PM)asemshahen5 كتب : [ -> ]تأكد من كود الاتصال بقاعدة البيانات او ضع صورة للخطأ .

كود الاتصال لدى:
كود :
Public Function FillDataTable(StrSQL As String) As DataTable
       Dim cn As New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TBLCO.accdb;Persist Security Info=True; Jet OLEDB:Database Password=Hagag2010")
       Dim da As New OleDbDataAdapter(StrSQL, cn)
       Dim dt As New DataTable
       dt.Clear()
       da.Fill(dt)
       Return dt
   End Function
والخطأ يظهر فى الجزء da.Fill(dt)
معليش ضع مثال مصغر من فورم واحدة و الاكواد و قاعدة البيانات لاستطيع معرفة مكان وجود الخطأ .

و ضع وصورة للخطأ .
السلام عليكم و رحمة الله و بركاته
لم اجرب الكود فقط مجرد نظرة ,
كم مرة سيتم تكرار الدالة FillDataTable على طول الحلقة ؟
الطريقة Da.Fill اليس من المفروض ان تكون بجملة Select لحقول الجدول.

اعذروني على تدخلي.
PHP كود :
   Sub AlterTableX1(field_row As ListBox)
 
       Dim intLoop As Integer
        Dim strSQL 
As String
        Dim strSQL1 
As String
        For intLoop 
0 To field_row.Items.Count 1
            strSQL 
"ALTER TABLE Emp_Sal ADD " _
            field_row
.Items(intLoop).ToString "  LONG INTEGER"
 
           ExcuteNoneQury(strSQL)
 
           strSQL1 "ALTER TABLE tbl_General ADD " _
            field_row
.Items(intLoop).ToString "  LONG INTEGER"
 
           ExcuteNoneQury(strSQL1)
 
       Next intLoop
        MsgBox
("تمت الإضافة بنجاح"MsgBoxStyle.Information"البرنامج ")
 
   End Sub
    Sub ExcuteNoneQury
(strSQL As String)
 
       Dim cn As New OleDb.OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TBLCO.accdb;Persist Security Info=True; Jet OLEDB:Database Password=Hagag2010")
 
       Dim Cmd As New OleDb.OleDbCommand(strSQLcn)
 
       If cn.State ConnectionState.Closed Then cn.Open()
 
       Cmd.ExecuteReader()
 
       If cn.State ConnectionState.Open Then cn.Close()
 
   End Sub 
[attachment=23984][attachment=23983]
(16-02-20, 09:58 PM)asemshahen5 كتب : [ -> ]
PHP كود :
   Sub AlterTableX1(field_row As ListBox)
 
       Dim intLoop As Integer
        Dim strSQL 
As String
        Dim strSQL1 
As String
        For intLoop 
0 To field_row.Items.Count 1
            strSQL 
"ALTER TABLE Emp_Sal ADD " _
            field_row
.Items(intLoop).ToString "  LONG INTEGER"
 
           ExcuteNoneQury(strSQL)
 
           strSQL1 "ALTER TABLE tbl_General ADD " _
            field_row
.Items(intLoop).ToString "  LONG INTEGER"
 
           ExcuteNoneQury(strSQL1)
 
       Next intLoop
        MsgBox
("تمت الإضافة بنجاح"MsgBoxStyle.Information"البرنامج ")
 
   End Sub
    Sub ExcuteNoneQury
(strSQL As String)
 
       Dim cn As New OleDb.OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\TBLCO.accdb;Persist Security Info=True; Jet OLEDB:Database Password=Hagag2010")
 
       Dim Cmd As New OleDb.OleDbCommand(strSQLcn)
 
       If cn.State ConnectionState.Closed Then cn.Open()
 
       Cmd.ExecuteReader()
 
       If cn.State ConnectionState.Open Then cn.Close()
 
   End Sub 

أسف على تأخرى فى الرد ولكن مازالت المشكلة قائمة ومرفق القاعدة وصورة من الخطأ
قاعدة البيانات التي في المرفقات معطوبة يرجى اعادة رفعها الاكسيس عندي 2007 .
الصفحات : 1 2