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

نسخة كاملة : دمج عمودين بالداتاجريد فيو
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله
اريد دمج عمودين من قاعدة البيانات اكسيس بعمود واحد بالداتاجريد فيو
العمودين اسم الصنف - ورقم الموديل
حاولت بالطريقة دية ومبيظهرش شيء مش عارف المشكلة من الاستعلام ولا اية ؟

كود :
 Using cmd As OleDbCommand = New OleDbCommand("SELECT TOP 10 (TYPE_NAME +'  '+ TYPE_MODEL) AS NAME_MODEL ,TYPE_QUALITY,TYPE_NUMB  FROM  TYPE_TB ORDER BY TYPE_QUALITY ASC", con)
           Using DataAdapter = New OleDbDataAdapter(cmd)
               ds.Clear()
               DataAdapter.Fill(ds, "TYPE_TB")
               DATAGRID_BILLTYPE.DataSource = ds
               DATAGRID_BILLTYPE.DataMember = "TYPE_TB"
               DataAdapter.Dispose()
               con.Close()
           End Using
       End Using
     
 DATAGRID_BILLTYPE.Columns(0).Width = 0
       DATAGRID_BILLTYPE.Columns(1).Width = 60
       DATAGRID_BILLTYPE.Columns(2).Width = 60

       '
       DATAGRID_BILLTYPE.Columns(0).HeaderText = "الاسم الموديل"
       DATAGRID_BILLTYPE.Columns(1).HeaderText = "الجودة"
       DATAGRID_BILLTYPE.Columns(2).HeaderText = "العدد"

       DATAGRID_BILLTYPE.Columns(0).ReadOnly = True
       DATAGRID_BILLTYPE.Columns(1).ReadOnly = True
       DATAGRID_BILLTYPE.Columns(2).ReadOnly = True
وعليكم السلام ورحمة الله وبركاته
المطلوب واضح لكن هل تقصد ان يكون عمود من القريدفيو يشمل صفين ؟!
اذا نعم فلا تقم بتعيين مصدر البيانات للقريدفيو وانما قم بتعبئتها صف صف من المصدر.

هل تقصد هكذا؟


PHP كود :
       dg.Rows.Clear()
 
       Dim dt As New DataTable
        Using con 
As New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" CurDir() & "\db.accdb")
 
           Using da As New OleDb.OleDbDataAdapter("select * from tb"con)

 
               da.Fill(dt)

 
               For i As Integer 0 To dt.Rows.Count 1
                    Dim row 
As String "ID: " dt.Rows(i).Item(0) & " NAME: " dt.Rows(i).Item(1) & " Mobile: " dt.Rows(i).Item(2)
 
                   dg.Rows.Add(row)
 
               Next
            End Using
        End Using 
dg = DataGridView
(22-08-19, 09:41 PM)سعود كتب : [ -> ]وعليكم السلام ورحمة الله وبركاته
المطلوب واضح لكن هل تقصد ان يكون عمود من القريدفيو يشمل صفين ؟!
اذا نعم فلا تقم بتعيين مصدر البيانات للقريدفيو وانما قم بتعبئتها صف صف من المصدر.

هل تقصد هكذا؟


PHP كود :
       dg.Rows.Clear()
 
       Dim dt As New DataTable
        Using con 
As New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" CurDir() & "\db.accdb")
 
           Using da As New OleDb.OleDbDataAdapter("select * from tb"con)

 
               da.Fill(dt)

 
               For i As Integer 0 To dt.Rows.Count 1
                    Dim row 
As String "ID: " dt.Rows(i).Item(0) & " NAME: " dt.Rows(i).Item(1) & " Mobile: " dt.Rows(i).Item(2)
 
                   dg.Rows.Add(row)
 
               Next
            End Using
        End Using 
dg = DataGridView

ولنفترض ان طبيعة الاعمدة كالاتي :

اسم الصنف 1|  موديل الصنف 2| الجودة 3| عدد 4  عمود

حذاء رياضي  | اديداس |  اصلي  |  30
حذاء رياضي  | نايك |  اصلي  |  40

المطلو ب كالاتي
دمج عمودين بعمود واحد او خليتين بواحدة


الاسم 1- الموديل1  | الجودة 2| عدد 3

حذاء رياضي - ايداس |  اصلي  |  30

حذاء رياضي - نايك    |  اصلي  |  40
إقتباس :ولنفترض ان طبيعة الاعمدة كالاتي :

اسم الصنف 1|  موديل الصنف 2| الجودة 3| عدد 4  عمود

حذاء رياضي  | اديداس |  اصلي  |  30
حذاء رياضي  | نايك |  اصلي  |  40

المطلو ب كالاتي 
دمج عمودين بعمود واحد او خليتين بواحدة 


الاسم 1- الموديل1  | الجودة 2| عدد 3

حذاء رياضي - ايداس |  اصلي  |  30
حذاء رياضي - نايك    |  اصلي  |  40
انت غير بالكود كما تريد المهم تتضح الفكرة الاساسية وهي عدم ربط القريدفيو بالمصدر وانما بهذه الطريقة.
(22-08-19, 10:14 PM)سعود كتب : [ -> ]
إقتباس :ولنفترض ان طبيعة الاعمدة كالاتي :

اسم الصنف 1|  موديل الصنف 2| الجودة 3| عدد 4  عمود

حذاء رياضي  | اديداس |  اصلي  |  30
حذاء رياضي  | نايك |  اصلي  |  40

المطلو ب كالاتي 
دمج عمودين بعمود واحد او خليتين بواحدة 


الاسم 1- الموديل1  | الجودة 2| عدد 3

حذاء رياضي - ايداس |  اصلي  |  30
حذاء رياضي - نايك    |  اصلي  |  40
انت غير بالكود كما تريد المهم تتضح الفكرة الاساسية وهي عدم ربط القريدفيو بالمصدر وانما بهذه الطريقة.

جميل جدا زيادة لما تفضلت بتعديل بسيط جدا وفقا لطريقتك لافادة من يدخل الموضوع :
كود دمج عمودين او اكثر بواحد

كود :
DATAGRID_BILLTYPE.Rows.Clear()
       Dim dt As New DataTable
       Using con As New OleDb.OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" & CurDir() & "\db.accdb")
           Using da As New OleDb.OleDbDataAdapter("select * from tb", con)

               da.Fill(dt)

               For i As Integer = 0 To dt.Rows.Count - 1
                   Dim CELL0 As String = "ID: " & dt.Rows(i).Item(0) & " NAME: " & dt.Rows(i).Item(1) & " Mobile: " & dt.Rows(i).Item(2)
                   Dim CELL1 As String = " Mobile: " & dt.Rows(i).Item(2)
                   DATAGRID_BILLTYPE.Rows.Add(CELL0, CELL1)

               Next
           End Using
       End Using

في طلب بسيط انا حذفت مصدر البيانات بالداتاجريد اريد معرفة ما الخطا بالكود الخاص بي :



كود :
Using cmd As OleDbCommand = New OleDbCommand("SELECT TOP 10 (TYPE_NAME +'  '+ TYPE_MODEL) AS NAME_MODEL ,TYPE_QUALITY,TYPE_NUMB  FROM  TYPE_TB ORDER BY TYPE_QUALITY ASC", con)
          Using DataAdapter = New OleDbDataAdapter(cmd)
              ds.Clear()
              DataAdapter.Fill(ds, "TYPE_TB")
              DATAGRID_BILLTYPE.DataMember = "TYPE_TB"
              DataAdapter.Dispose()
              con.Close()
          End Using
      End Using
   
DATAGRID_BILLTYPE.Columns(0).Width = 0
      DATAGRID_BILLTYPE.Columns(1).Width = 60
      DATAGRID_BILLTYPE.Columns(2).Width = 60

      '
      DATAGRID_BILLTYPE.Columns(0).HeaderText = "الاسم الموديل"
      DATAGRID_BILLTYPE.Columns(1).HeaderText = "الجودة"
      DATAGRID_BILLTYPE.Columns(2).HeaderText = "العدد"

      DATAGRID_BILLTYPE.Columns(0).ReadOnly = True
      DATAGRID_BILLTYPE.Columns(1).ReadOnly = True
      DATAGRID_BILLTYPE.Columns(2).ReadOnly = True