1

データベースからflowlayoutpanelにレコードを表示するこの機能があります

flowLayoutPanel1.Controls.Clear();
        using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            string a = "Select EmpID, Name from EmpTable";
            using (SqlCommand SqlCommand = new SqlCommand(" "+ a +" ", myDatabaseConnection))
            {
                int i = 0;
                SqlDataReader DR1 = SqlCommand.ExecuteReader();
                while (DR1.Read())
                {
                    i++;
                    BookUserControl usercontrol = new BookUserControl();
                    usercontrol.Tag = i;
                    usercontrol.EmpID = DR1["EmpID"].ToString();
                    usercontrol.Name = (string)DR1["Name"];
                    flowLayoutPanel1.Controls.Add(usercontrol);
                }
            }
        }

flowlayoutpanel に表示されるレコード数を制限するにはどうすればよいですか? select top があることは知っています。しかし、これを行う方法、たとえば、10 件のレコードが表示され、次のボタンをクリックすると次の 10 件のレコードが表示され、前のボタンをクリックすると前の 10 件のレコードが表示されます。

4

3 に答える 3

1

SQL Server 2008 では、次を使用できますRow_Number()

Select * from    
(Select row_number() over (order by EmpID) r,  EmpID, Name from EmpTable) X
where X.r between @start and @end

との値を指定する@start@end、すべて設定されます。の値を表示する場合と表示しない場合がありますr。から表示するには1-10、セット@start = 1など@end = 10など。このクエリでは、データは で並べられていEmpIDます。

変更されたコード:

string a = "Select * from (Select row_number() over (order by EmpID) r,  EmpID, Name from EmpTable) X where X.r between @start and @end";
        using (SqlCommand SqlCommand = new SqlCommand(" "+ a +" ", myDatabaseConnection))
        {
            SqlCommand.Parameters.Add("@start").Value = 1;
            SqlCommand.Parameters.Add("@end").Value = 10;
            int i = 0;
            SqlDataReader DR1 = SqlCommand.ExecuteReader();
            while (DR1.Read())
            {
                i++;
                BookUserControl usercontrol = new BookUserControl();
                usercontrol.Tag = i;
                usercontrol.EmpID = DR1["EmpID"].ToString();
                usercontrol.Name = (string)DR1["Name"];
                flowLayoutPanel1.Controls.Add(usercontrol);
            }
        }

http://msdn.microsoft.com/en-us/library/ms186734(v=sql.90).aspxを参照してください。

于 2013-07-25T07:07:09.483 に答える
0

はい、SQlにSELECT TOPがあります

このように使用します

Select TOP(10) EmpID, Name from EmpTable

私はあなたのタラを更新しています

flowLayoutPanel1.Controls.Clear();
        using (SqlConnection myDatabaseConnection = new SqlConnection(myConnectionString.ConnectionString))
        {
            myDatabaseConnection.Open();
            string a = "SELECT TOP(10) EmpID, Name FROM EmpTable";
            using (SqlCommand SqlCommand = new SqlCommand(" "+ a +" ", myDatabaseConnection))
            {
                int i = 0;
                SqlDataReader DR1 = SqlCommand.ExecuteReader();
                while (DR1.Read())
                {
                    i++;
                    BookUserControl usercontrol = new BookUserControl();
                    usercontrol.Tag = i;
                    usercontrol.EmpID = DR1["EmpID"].ToString();
                    usercontrol.Name = (string)DR1["Name"];
                    flowLayoutPanel1.Controls.Add(usercontrol);
                }
            }
        }

今、このタラを使用すると、これはまさにあなたが望むように機能します

幸運を祈ります

于 2013-07-25T06:58:31.710 に答える