HOW TO: ระบบคลาผู้ช่วยเหลือชุดข้อมูลที่เข้าร่วมใน Visual .NET c#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 326080 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความที่มีการทีละขั้นตอนนี้อธิบายวิธีการใช้ และวิธีใช้DataSetHelperคลาสที่มีโค้ดตัวอย่างเพื่อสร้างคำDataTableวัตถุจากสองหรือมากกว่าที่เกี่ยวข้องDataTableข้อกำหนดและ การบันทึกสำเนาที่เรียงลำดับ และกรองข้อมูลจากแหล่งที่มาDataTableวัตถุไปยังปลายทางDataTable.

เมื่อต้องการทำเช่นนี้ คุณใช้วิธีการสาธารณะดังต่อไปนี้:
  • CreateJoinTable
  • InsertJoinInto
  • SelectJoinInto
กระบวนการSelectJoinIntoการเรียกวิธีการCreateJoinTableและInsertJoinIntoวิธีการ คุณยังสามารถใช้เป็นผู้ช่วยส่วนตัววิธีและข้อมูลสมาชิกจะเก็บรายการ parsed เขตข้อมูล

กระบวนการDataSetHelperรวมคลาสเป็นชุดข้อมูลตัวแปรของสมาชิก อีกวิธีหนึ่งคือ คุณสามารถกำหนดจากที่มีอยู่ชุดข้อมูลไปชุดข้อมูลตัวแปรของสมาชิก ถ้าตัวแปรสมาชิกชี้ไปถูกต้องชุดข้อมูลใด ๆDataTableวัตถุที่จะCreateJoinTableหรือSelectJoinIntoวิธีสร้างเพิ่มเข้าไปชุดข้อมูล. ไม่ว่ากรณี ใดวิธีการเรียกกลับการอ้างอิงไปยังDataTableวัตถุ กระบวนการInsertJoinIntoเมธอดจำเป็นต้องมีเป้าหมายที่มีอยู่DataTableและไม่เกิดสิ่งใด

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับชุดข้อมูลวัตถุ คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
313485ข้อมูล: ผังสำหรับชุด ข้อมูล ADO.NET, DataView และ DataViewManager

ความต้องการ

รายการต่อไปนี้แสดงฮาร์ดแวร์ที่แนะนำ ซอฟต์แวร์ โครงสร้างพื้นฐานของเครือข่าย และ service pack ที่จำเป็นต้องใช้:
  • Microsoft Windows XP, Windows 2000 หรือ Windows NT 4.0 Service Pack 6a
  • Microsoft Visual Studio .NET
บทความนี้อนุมานว่า คุณไม่คุ้นเคยกับหัวข้อต่อไปนี้:
  • แสดงไวยากรณ์ของ c# .NET
  • ข้อมูลพื้นฐานของเดสก์ท็อป ADO.NET และไวยากรณ์

คลาสของ DataSetHelper เชลล์

รหัสในส่วนนี้ declares คลาเชลล์ที่ทั้งหมดDataSetHelperบทความเพิ่มวิธีการและตัวแปรของสมาชิก
  1. เริ่ม Visual Studio .NET
  2. ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject.
  3. ในการโครงการใหม่กล่องโต้ตอบ คลิกแสดงโครงการ c#ภายใต้ชนิดโครงการแล้ว คลิกไลบรารีคลาสภายใต้แม่แบบ.
  4. ในการชื่อ:กล่อง ชนิดDataSetHelper.
  5. แทนรหัสระดับชั้น ด้วยรหัสต่อไปนี้:
    public class DataSetHelper
    {
        public DataSet ds;
    
        public DataSetHelper(ref DataSet DataSet)
        {
    	ds = DataSet;
        }
        public DataSetHelper()
        {
    	ds = null;
        }
    }
    					
    คุณสามารถใช้ overloads สองสำหรับการสร้างการสร้างอินสแตนซ์ของระดับชั้นด้วยเครื่องหมาย หรือไม่ มีการอ้างอิงไปถูกต้องชุดข้อมูล. สำหรับคลาสที่ประกอบด้วยการอ้างอิงไปถูกต้องชุดข้อมูลกระบวนการDataTableวัตถุที่วิธีการกลับยังเพิ่มโดยอัตโนมัติไปชุดข้อมูล.

ตัวแยกวิเคราะห์รายการของเขตข้อมูล

ส่วนนี้ประกอบด้วยรหัสสำหรับตัวแยกวิเคราะห์ของรายการฟิลด์ ใช้โครงสร้าง parsed เพื่อให้การCreateJoinTableและInsertJoinIntoไม่มีวิธีการ reparse รายการเขตข้อมูล วิธีการเหล่านี้ต้อง reparse รายการเขตข้อมูลถ้าถูกเรียกจากนั้นSelectJoinIntoเมธอดหรือ จากรหัสของคุณเอง รายการฟิลด์ parsed และรายการ unparsed เขตข้อมูลถูกเก็บไว้ในส่วนตัวตัวแปรสมาชิกของDataSetHelperคลาสที่
  1. เพิ่มต่อไปนี้ส่วนตัวคลาส definition ในการDataSetHelperคลาสที่สร้างขึ้นในการ ""ส่วน:
    private class FieldInfo
    {
        public string RelationName;
        public string FieldName;	//source table field name
        public string FieldAlias;	//destination table field name
        public string Aggregate;
    }
    					
    หมายเหตุ:: คลาสนี้คือทั่วไปอื่น ๆDataSetHelperarticles และประกอบด้วยฟิลด์บางฟิลด์ที่ไม่ได้ใช้บทความนี้

  2. เพิ่มต่อไปนี้ส่วนตัวตัวแปรสมาชิกนิยามคลาทันทีหลังจากชุดข้อมูลประกาศ:
    private System.Collections.ArrayList m_FieldInfo; private string m_FieldList; 
    					
  3. เพิ่มต่อไปนี้ส่วนตัววิธีการนิยามคลาส วิธีนี้จะเหมือนกับวิธีการที่จะใช้ในที่อื่น ๆDataSetHelperบทความต่าง ๆ
    private void ParseFieldList(string FieldList, bool AllowRelation)
    {
        /*
         * This code parses FieldList into FieldInfo objects  and then 
         * adds them to the m_FieldInfo private member
         * 
         * FieldList systax:  [relationname.]fieldname[ alias], ...
        */ 
        if (m_FieldList == FieldList) return;
        m_FieldInfo = new System.Collections.ArrayList();
        m_FieldList = FieldList;
        FieldInfo Field; string[] FieldParts;
        string[] Fields=FieldList.Split(',');
        int i;
        for (i=0; i<=Fields.Length-1; i++)
        {
            Field=new FieldInfo();
            //parse FieldAlias
            FieldParts = Fields[i].Trim().Split(' ');
            switch (FieldParts.Length)
            {
                case 1:
                    //to be set at the end of the loop
                    break;
                case 2:
                    Field.FieldAlias=FieldParts[1];
                    break;
                default:
                    throw new Exception("Too many spaces in field definition: '" + Fields[i] + "'.");	                        
            }
            //parse FieldName and RelationName
            FieldParts = FieldParts[0].Split('.');
            switch (FieldParts.Length)
            {
                case 1: 
                    Field.FieldName=FieldParts[0];
                    break;
                case 2:
                    if (AllowRelation==false)
                        throw new Exception("Relation specifiers not permitted in field list: '" + Fields[i] + "'.");
                    Field.RelationName = FieldParts[0].Trim();
                    Field.FieldName=FieldParts[1].Trim();
                    break;
                default:
                    throw new Exception("Invalid field definition: " + Fields[i] + "'.");
            }
            if (Field.FieldAlias==null) 
                Field.FieldAlias = Field.FieldName;
            m_FieldInfo.Add (Field);
        }
    }
    					

วิธีการ CreateJoinTable

ส่วนนี้ประกอบด้วยรหัสสำหรับCreateJoinTableวิธีการ

ต่อไปนี้เป็นแบบแผนการคิดที่เรียกสำหรับการCreateJoinTableวิธีการ:
dt = dsHelper.CreateJoinTable("TestTable", ds.Tables["Employees"],
    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department");
				
ตัวอย่างนี้เรียกสร้างใหม่DataTableด้วยการTableNameTestTable และฟิลด์ที่สาม (FName, LName และแผนก) เขตข้อมูลที่สามเหล่านี้มีข้อมูลเดียวกันที่พิมพ์เป็น FirstName หมายและฟิลด์ LastName ในตารางพนักงานและฟิลด์ในตารางหลักที่มีการเข้าถึงผ่านทางแบบ DepartmentEmployee DepartmentNameDataRelationวัตถุ

ใช้ไวยากรณ์ต่อไปนี้เพื่อระบุเขตข้อมูลในรายการเขตข้อมูล:
[relationname.]fieldname[ alias], ...
				
หมายเหตุสำหรับรูปแบบนี้ต่อไปนี้:
  • กระบวนการColumnNameและdatatypeคุณสมบัติคือ คุณสมบัติเท่านั้นที่จะถูกคัดลอกไปยังปลายทางDataTable.
  • ผล evaluated จะถูกคัดลอกสำหรับฟิลด์ที่ประกอบด้วยนิพจน์
  • คุณสามารถเปลี่ยนชื่อเขตข้อมูลในปลายทางDataTableโดยการระบุชื่อเป็นนามแฝง
  • รายการเขตข้อมูลสามารถประกอบด้วยชุดย่อยของชื่อฟิลด์ที่อยู่ในใบสั่งอื่นนอกเหนือจากใบสั่งในแหล่งที่มาDataTable. ถ้ารายการเขตข้อมูลว่างเปล่า คือ thrown ข้อยกเว้น
  • กระบวนการDataRelationต้องสัมพันธ์กับตารางหลัก ตัวอย่างเช่น ถ้าคุณต้องการสร้างตารางที่รวมเขตข้อมูลของลูกค้าที่ พนักงานที่ และตารางใบสั่ง คุณต้องใช้ตารางใบสั่งเป็นตารางแหล่งที่มา และอ้างอิงเขตข้อมูลในที่ลูกค้าและตารางพนักงานโดยใช้ความของความสัมพันธ์แล้ว
เมื่อต้องการเรียกCreateJoinTableวิธีการ เพิ่มวิธีการต่อไปนี้ไปDataSetHelperคลาสที่สร้างขึ้นในการ ""ส่วน:
public DataTable CreateJoinTable(string TableName, DataTable SourceTable, string FieldList)
{
    /*
     * Creates a table based on fields of another table and related parent tables
     * 
     * FieldList syntax: [relationname.]fieldname[ alias][,[relationname.]fieldname[ alias]]...
    */ 
    if (FieldList==null)
    {
        throw new ArgumentException("You must specify at least one field in the field list.");
        //return CreateTable(TableName, SourceTable);
    }
    else
    {
        DataTable dt = new DataTable(TableName);
        ParseFieldList(FieldList, true);
        foreach(FieldInfo Field in m_FieldInfo)
        {
            if(Field.RelationName==null)
            {
                DataColumn dc = SourceTable.Columns[Field.FieldName];
                dt.Columns.Add(dc.ColumnName, dc.DataType, dc.Expression);
            }
            else
            {
                DataColumn dc = SourceTable.ParentRelations[Field.RelationName].ParentTable.Columns[Field.FieldName];
                dt.Columns.Add(dc.ColumnName, dc.DataType, dc.Expression);
            }
        }
        if (ds!=null)
            ds.Tables.Add(dt);
        return dt;
    }
}
				

วิธีการ InsertJoinInto

ส่วนนี้ประกอบด้วยรหัสสำหรับInsertJoinIntoวิธีการ กระบวนการInsertJoinIntoวิธีการคัดลอกระเบียนที่ถูกเรียงลำดับ และกรองข้อมูลจากตารางแหล่งที่มา และตารางที่เกี่ยวข้องกับตารางปลายทาง เมื่อคุณเรียกใช้การParseFieldListคุณสมบัติ คุณสามารถแยกรายการที่แยกได้ก่อนหน้านี้วิเคราะห์ ถ้ารายการเหล่านี้จะพร้อมใช้งาน ถ้ารายการเขตข้อมูลว่างเปล่า คือ thrown ข้อยกเว้น

ต่อไปนี้เป็นแบบแผนการคิดที่เรียกสำหรับการInsertJoinIntoวิธีการ:
dsHelper.InsertJoinInto(ds.Tables["TestTable"], ds.Tables["Employees"], 
    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department", 
    "EmployeeID<5", "BirthDate");
				
ตัวอย่างการโทรคัดลอกระเบียนจากพนักงานที่DataTable(และฟิลด์ DepartmentName ของข้อความที่เกี่ยวข้องDataTable) เพื่อ TestTableDataTableซึ่งมีกรองบน EmployeeID"<5" and="" is="" sorted="" by=""></5">

หมายเหตุ:: ตัวกรองและนิพจน์การเรียงลำดับที่ใช้ กับตารางแหล่งที่มาเท่านั้น และไม่มีตารางที่เกี่ยวข้อง

เมื่อต้องการเรียกInsertJoinIntoวิธีการ เพิ่มวิธีการต่อไปนี้ไปDataSetHelperคลาสที่สร้างขึ้นในการ ""ส่วน:
public void InsertJoinInto(DataTable DestTable, DataTable SourceTable, 
    string FieldList, string RowFilter, string Sort)
{
    /*
    * Copies the selected rows and columns from SourceTable and inserts them into DestTable
    * FieldList has same format as CreatejoinTable
    */ 
    if (FieldList==null)
    {
        throw new ArgumentException("You must specify at least one field in the field list.");
        //InsertInto(DestTable, SourceTable, RowFilter, Sort);
    }
    else
    {
    ParseFieldList(FieldList, true);
    DataRow[] Rows = SourceTable.Select(RowFilter, Sort);
    foreach(DataRow SourceRow in Rows)
    {
            DataRow DestRow = DestTable.NewRow();
            foreach(FieldInfo Field in m_FieldInfo)
            {
                if(Field.RelationName==null)
                {
                    DestRow[Field.FieldName] = SourceRow[Field.FieldName];
                }
                else
                {
                    DataRow ParentRow = SourceRow.GetParentRow(Field.RelationName);
                    DestRow[Field.FieldName] = ParentRow[Field.FieldName];
                }
            }
            DestTable.Rows.Add(DestRow);
        }
    }
}
				

วิธีการ SelectJoinInto

ส่วนนี้ประกอบด้วยรหัสสำหรับSelectJoinIntoวิธีการ วิธีนี้ถูกรวมในCreateJoinTableและInsertJoinIntoวิธีการ กระบวนการSelectJoinIntoวิธีสร้างใหม่DataTableขึ้นอยู่กับที่มีอยู่DataTableวัตถุและคัดลอกระเบียนที่เรียงลำดับ และกรองข้อมูลเป็นข้อความใหม่DataTable.

ต่อไปนี้เป็นแบบแผนการคิดที่เรียกสำหรับการSelectJoinIntoวิธีการ:
dt = dsHelper.SelectInto("TestTable", ds.Tables["Employees"], 
    "FirstName FName,LastName LName,DepartmentEmployee.DepartmentName Department", "EmployeeID<5", "BirthDate");
				
เรียกตัวอย่างนี้สร้างคำDataTableชื่อ TestTable กับเขตข้อมูลที่สาม เขตข้อมูลที่สามเหล่านี้จะขึ้น FirstName หมายและฟิลด์ LastName ของพนักงานที่DataTableและฟิลด์ DepartmentName ของต้นแบบDataTableที่มีการอ้างอิงถึง DepartmentEmployeeDataRelation. จากนั้น ตัวอย่างนี้คัดลอกเร็กคอร์ดที่ได้จากพนักงานที่DataTableเมื่อต้องการ TestTableDataTableซึ่งมีกรองบน EmployeeID"<5" and="" is="" sorted="" by=""></5">

หมายเหตุ:: ตัวกรองและนิพจน์การเรียงลำดับที่ใช้ กับตารางแหล่งที่มาเท่านั้น และไม่ ให้ตารางที่เกี่ยวข้อง

เมื่อต้องการเรียกSelectJoinIntoวิธีการ เพิ่มวิธีการต่อไปนี้ไปDataSetHelperคลาสที่สร้างขึ้นในการ ""ส่วน:
public DataTable SelectJoinInto(string TableName, DataTable SourceTable, string FieldList, string RowFilter, string Sort)
{
    /*
     * Selects sorted, filtered values from one DataTable to another.
     * Allows you to specify relationname.fieldname in the FieldList to include fields from
     *  a parent table. The Sort and Filter only apply to the base table and not to related tables.
    */ 
    DataTable dt = CreateJoinTable(TableName, SourceTable, FieldList);
    InsertJoinInto(dt, SourceTable, FieldList, RowFilter, Sort);
    return dt;
}
				

ทดสอบโปรแกรมประยุกต์นี้

  1. บันทึก และการคอมไพล์แล้ว นี้DataSetHelperระดับชั้นที่คุณสร้างไว้ในส่วนก่อนหน้า
  2. ทำตามขั้นตอนเหล่านี้เพื่อสร้างแบบใหม่ Visual c# Windows แอพพลิเคชัน:
    1. เริ่ม Visual Studio .NET
    2. ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject.
    3. ในการโครงการใหม่กล่องโต้ตอบ คลิกแสดงโครงการ c#ภายใต้ชนิดโครงการแล้ว คลิกแอพลิเคชันของ windowsภายใต้แม่แบบ.
  3. ในโซลูชัน Explorer คลิกขวาที่การแก้ไขปัญหา และคลิกเพิ่มโครงการที่มีอยู่. เพิ่มโครงการ DataSetHelper
  4. ในการProjectเมนู คลิกเพิ่มการอ้างอิง.
  5. ในการเพิ่มการอ้างอิงกล่องโต้ตอบ คลิกการโครงการแท็บ และเพิ่มการอ้างอิงถึงโครงการ DataSetHelper แอพลิเคชัน Windows ฟอร์มแล้ว
  6. ในตัวออกแบบฟอร์ม ลาก 3ปุ่มตัวควบคุม และ aDataGridควบคุมจากกล่องเครื่องมือให้กับฟอร์ม ชื่อของปุ่มbtnCreateJoin,btnInsertJoinIntoและbtnSelectJoinInto. ชื่อเริ่มต้นสำหรับการเก็บไว้DataGridตัวควบคุม (dataGrid1)
  7. ในแบบฟอร์มรหัส เพิ่มต่อไปนี้การใช้คำสั่งไปยังด้านบนของหน้าต่างรหัส:
    using System.Data;
    					
  8. เพิ่ม declarations ที่ตัวแปรต่อไปนี้ไปยังคำนิยามของฟอร์ม:
    DataSet ds; DataSetHelper.DataSetHelper dsHelper;
    					
  9. เพิ่มรหัสต่อไปนี้ไปForm_Loadเหตุการณ์:
    ds = new DataSet();
    dsHelper = new DataSetHelper.DataSetHelper(ref ds);
    //Create source tables
    DataTable dt = new DataTable("Employees");
    dt.Columns.Add("EmployeeID",Type.GetType("System.Int32") );
    dt.Columns.Add("FirstName", Type.GetType("System.String"));
    dt.Columns.Add("LastName", Type.GetType("System.String"));
    dt.Columns.Add("BirthDate", Type.GetType("System.DateTime"));
    dt.Columns.Add("JobTitle", Type.GetType("System.String"));
    dt.Columns.Add("DepartmentID", Type.GetType("System.Int32"));
    dt.Rows.Add(new object[] {1, "Tommy", "Hill", new DateTime(1970, 12, 31),  "Manager", 42});
    dt.Rows.Add(new object[] {2, "Brooke", "Sheals", new DateTime(1977, 12, 31), "Manager", 23});
    dt.Rows.Add(new object[] {3, "Bill", "Blast", new DateTime(1982, 5, 6), "Sales Clerk", 42});
    dt.Rows.Add(new object[] {1, "Kevin", "Kline", new DateTime(1978, 5, 13), "Sales Clerk", 42});
    dt.Rows.Add(new object[] {1, "Martha", "Seward", new DateTime(1976, 7, 4), "Sales Clerk", 23});
    dt.Rows.Add(new object[] {1, "Dora", "Smith", new DateTime(1985, 10, 22), "Trainee", 42});
    dt.Rows.Add(new object[] {1, "Elvis", "Pressman", new DateTime(1972, 11, 5), "Manager", 15});
    dt.Rows.Add(new object[] {1, "Johnny", "Cache", new DateTime(1984, 1, 23), "Sales Clerk", 15});
    dt.Rows.Add(new object[] {1, "Jean", "Hill", new DateTime(1979, 4, 14), "Sales Clerk", 42});
    dt.Rows.Add(new object[] {1, "Anna", "Smith", new DateTime(1985, 6, 26), "Trainee", 15});
    ds.Tables.Add(dt);
    
    dt = new DataTable("Departments");
    dt.Columns.Add("DepartmentID", Type.GetType("System.Int32"));
    dt.Columns.Add("DepartmentName", Type.GetType("System.String"));
    dt.Rows.Add(new object[] {15, "Men's Clothing"});
    dt.Rows.Add(new object[] {23, "Women's Clothing"});
    dt.Rows.Add(new object[] {42, "Children's Clothing"});
    ds.Tables.Add(dt);
    
    ds.Relations.Add("DepartmentEmployee",     ds.Tables["Departments"].Columns["DepartmentID"], 
        ds.Tables["Employees"].Columns["DepartmentID"]);
    					
  10. เพิ่มรหัสต่อไปนี้ไปbtnCreateJoin_Clickเหตุการณ์:
    dsHelper.CreateJoinTable("EmpDept",ds.Tables["Employees"], 
        "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department");
    dataGrid1.SetDataBinding(ds, "EmpDept");
    					
  11. เพิ่มรหัสต่อไปนี้ไปbtnInsertJoinInto_Clickเหตุการณ์:
    dsHelper.InsertJoinInto(ds.Tables["EmpDept"], ds.Tables["Employees"], 
        "FirstName FName,LastName LName,BirthDate,DepartmentEmployee.DepartmentName Department",
        "JobTitle='Sales Clerk'", "DepartmentID");
    dataGrid1.SetDataBinding(ds, "EmpDept");
    					
  12. เพิ่มรหัสต่อไปนี้ไปbtnSelectJoinInto_Clickเหตุการณ์:
    dsHelper.SelectJoinInto("EmpDept2", ds.Tables["Employees"],
        "FirstName,LastName,BirthDate BDate,DepartmentEmployee.DepartmentName Department", 
        "JobTitle='Manager'", "DepartmentID");
    dataGrid1.SetDataBinding(ds, "EmpDept2");
    					
  13. เรียกใช้โปรแกรมประยุกต์ และจากนั้น คลิกแต่ละปุ่ม สังเกตว่า การDataGridกำลังเติมข้อมูลให้กับตารางและข้อมูลจากรหัส

    หมายเหตุ:: คุณสามารถคลิเท่านั้นbtnCreateJoinและbtnSelectJoinIntoปุ่มครั้งเดียว ถ้าคุณคลิกอย่างใดอย่างหนึ่งปุ่มเหล่านี้มากกว่าหนึ่งครั้ง คุณได้รับข้อความแสดงข้อผิดพลาดที่คุณกำลังพยายามเพิ่มตารางเดียวกันสองครั้ง นอกจากนี้ คุณต้องคลิกbtnCreateJoinก่อนที่คุณคลิกbtnInsertJoinIntoมิฉะนั้น ปลายทางDataTableไม่สร้าง ถ้าคุณคลิกการbtnInsertJoinIntoปุ่มหลายครั้ง คุณเติมข้อมูลนั้นDataGridมีระเบียนที่ซ้ำกัน

แนวคิดเพิ่มประสิทธิภาพ

  • กระบวนการColumnNameและdatatypeคุณสมบัติคือ คุณสมบัติเท่านั้นที่จะถูกคัดลอกไปยังปลายทางDataTable. คุณสามารถขยายได้CreateTableวิธีการคัดลอกคุณสมบัติเพิ่มเติม เช่นนั้นMaxLengthคุณสมบัติ หรือคุณสามารถสร้างคอลัมน์คีย์ใหม่
  • กระบวนการนิพจน์คุณสมบัติไม่ถูกคัดลอก แทน ผล evaluated จะถูกคัดลอก ดังนั้น คุณไม่จำเป็นต้องเพิ่มเขตข้อมูลที่ถูกอ้างอิง โดยนิพจน์ไปยังตารางปลายทาง นอกจากนี้ คอลัมน์ปลายทางสามารถปรากฏขึ้นก่อนหน้านี้ในรายการผลลัพธ์ไม่ใช่คอลัมน์ที่คอลัมน์นี้ขึ้นมิฉะนั้นใด ๆ คุณสามารถปรับเปลี่ยนCreateTableวิธีการคัดลอกนิพจน์(คอลัมน์ InsertInto ละเว้นคอลัมน์ด้วยการนิพจน์), ถึงแม้ว่านี้กับข้อจำกัดที่ระบุไว้ในตอนต้นของย่อหน้านี้
  • คุณสามารถผสานฟังก์ชันการทำงานของการCreateJoinTableกระบวนการInsertJoinIntoและSelectJoinIntoวิธีในการCreateTableกระบวนการInsertIntoและSelectIntoวิธีการ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการCreateTableกระบวนการInsertIntoและSelectIntoวิธีการคำนวณ คลิกหมายเลขบทความด้านล่างนี้เพื่อดูบทความในฐานความรู้ของ Microsoft:
    326009HOWTO: ระบบชุดข้อมูล SELECT เป็นผู้ช่วยเหลือคลาสที่ใน Visual .NET c#
    ถ้าคุณไม่ต้องการผสานวิธีเหล่านี้ แต่ถ้าคุณมีทั้งการตั้งค่าวิธีการในคลาสที่เดียว คุณสามารถเปิดใช้งานนั้นCreateJoinTableและInsertJoinIntoวิธีการใดวิธีการจัดการรายการฟิลด์ว่างเปล่า โดยการเอาการอยู่นอกกระบวนการใบแจ้งยอดและ โดย uncommenting โทรศัพท์ไปCreateTableและInsertIntoวิธีการในบรรทัดของรหัสต่อไปนี้:
        if (FieldList==null)
        {
            throw new ArgumentException("You must specify at least one field in the field list.");
            //return CreateTable(TableName, SourceTable);
        }
    					
    -และ-
        if (FieldList==null)
        {
            throw new ArgumentException("You must specify at least one field in the field list.");
            //InsertInto(DestTable, SourceTable, RowFilter, Sort);
        }
    					

การแก้ไขปัญหา

  • fieldname การและส่วนประกอบนามแฝงของรายการฟิลด์ต้องสอดคล้องกับDataColumnแบบแผนการตั้งชื่อคิดไว้ ตัวแยกวิเคราะห์ที่จำกัดชื่อ ให้เช่นกันว่าชื่อต้องไม่ประกอบด้วยรอบระยะเวลา (.), เครื่องหมายจุลภาค (), หรือ()เป็นช่องว่าง
  • ถ้าคุณคลิกที่ปุ่มมากกว่าหนึ่งครั้ง ตารางเดียวกันถูกเพิ่มเข้าสองครั้งไปยังชุดข้อมูลซึ่งผลข้อยกเว้น เมื่อต้องการแก้ไขปัญหานี้ คุณสามารถเพิ่มรหัสไปยังโปรแกรมประยุกต์ทดสอบเพื่อตรวจสอบว่ามีDataTableมีชื่อเดียวกันอยู่แล้ว อีกวิธีหนึ่งคือ คุณสามารถสร้างการDataSetHelperคลาสที่ไม่ มีการอ้างอิงไปยังชุดข้อมูลและจากนั้น มีผูกDataGrid.DataSourceคุณสมบัติโดยตรงไปdtตัวแปรแทน โดยใช้การSetDataBindingการเรียกวิธี
  • ถ้าตารางแหล่งที่มาใช้ชนิดข้อมูลแบบกำหนดเอง (นั่นคือ คลาสที่), คุณต้องเพิ่มรหัสไปInsertJoinIntoวิธีการทำสำเนาความลึกของข้อมูล มิฉะนั้น อ้างอิงเท่านั้นจะถูกคัดลอก

คุณสมบัติ

หมายเลขบทความ (Article ID): 326080 - รีวิวครั้งสุดท้าย: 13 มกราคม 2554 - Revision: 5.0
ใช้กับ
  • Microsoft ADO.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbhowtomaster kbsystemdata kbmt KB326080 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:326080

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com