Загрузка данных


 private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     try
     {
         string connectionString = "Data Source=sqldata;Initial Catalog=OAO;Persist Security Info=True;User ID=seluser;Password=123";

         // Создаём DataTable с явной схемой
         DataTable dt = new DataTable();
         dt.Columns.Add("Article", typeof(string));
         dt.Columns.Add("Name", typeof(string));
         dt.Columns.Add("Tooling", typeof(string));
         dt.Columns.Add("ProductKey", typeof(string));
         dt.Columns.Add("MPK", typeof(string));
         dt.Columns.Add("Rack", typeof(string));
         dt.Columns.Add("Cell", typeof(string));
         dt.Columns.Add("ProductionOrder", typeof(string));
         dt.Columns.Add("Country", typeof(string));

         string query = @"
     SELECT TOP 100
         CAST(ISNULL(TOpa_AttrTpName1, '') AS nvarchar(200)) AS Article,
         CAST(ISNULL(TOpa_AttrTpName2, '') AS nvarchar(200)) AS Name,
         CAST(ISNULL(TOpa_AttrTpName3, '') AS nvarchar(200)) AS Tooling,
         CAST(ISNULL(CAST(Topa_Rcd AS nvarchar(50)), '') AS nvarchar(50)) AS ProductKey,
         CAST(ISNULL(TOpa_AttrTpName4, '') AS nvarchar(200)) AS MPK,
         CAST(ISNULL(TOpa_AttrTpName5, '') AS nvarchar(200)) AS Rack,
         CAST(ISNULL(TOpa_AttrTpName6, '') AS nvarchar(200)) AS Cell,
         CAST(ISNULL(TOpa_AttrTpName7, '') AS nvarchar(200)) AS ProductionOrder,
         CAST(ISNULL(TOpa_AttrTpName8, '') AS nvarchar(200)) AS Country
     FROM TSKLOPADETAIL";

         using (SqlConnection conn = new SqlConnection(connectionString))
         {
             conn.Open();

             using (SqlCommand cmd = new SqlCommand(query, conn))
             using (SqlDataReader reader = cmd.ExecuteReader())
             {
                 while (reader.Read())
                 {
                     DataRow row = dt.NewRow();
                     row["Article"] = reader.IsDBNull(0) ? "" : reader.GetValue(0).ToString();
                     row["Name"] = reader.IsDBNull(1) ? "" : reader.GetValue(1).ToString();
                     row["Tooling"] = reader.IsDBNull(2) ? "" : reader.GetValue(2).ToString();
                     row["ProductKey"] = reader.IsDBNull(3) ? "" : reader.GetValue(3).ToString();
                     row["MPK"] = reader.IsDBNull(4) ? "" : reader.GetValue(4).ToString();
                     row["Rack"] = reader.IsDBNull(5) ? "" : reader.GetValue(5).ToString();
                     row["Cell"] = reader.IsDBNull(6) ? "" : reader.GetValue(6).ToString();
                     row["ProductionOrder"] = reader.IsDBNull(7) ? "" : reader.GetValue(7).ToString();
                     row["Country"] = reader.IsDBNull(8) ? "" : reader.GetValue(8).ToString();
                     dt.Rows.Add(row);
                 }
             }

             conn.Close();
         }

         // Показываем данные
         gridDetailSearch.DataSource = dt;
         gridDetailSearch.Visible = true;

         lcgDetail.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always;

         if (gridDetailSearch.MainView is DevExpress.XtraGrid.Views.Grid.GridView view)
         {
             view.BestFitColumns();
             view.RefreshData();
         }

         gridDetailSearch.Refresh();

         XtraMessageBox.Show("Загружено строк: " + dt.Rows.Count);
     }
     catch (Exception ex)
     {
         XtraMessageBox.Show("Ошибка: " + ex.Message);
     }
 }

 // private DataTable DetailDataFromPlanDB
 //{

 private DataTable GetDetailDataFromPlanDB()
 {
     DataTable dt = new DataTable();

     // Точная строка подключения (как в SSMS)
     string connectionString = "Data Source=sqldata;Initial Catalog=OAO;Persist Security Info=True;User ID=seluser;Password=123";

     using (SqlConnection conn = new SqlConnection(connectionString))
     {
         conn.Open();

         using (SqlCommand cmd = new SqlCommand("USE OAO", conn))
         {
             cmd.ExecuteNonQuery();
         }

         // Теперь выполняем запрос
         string query = "SELECT * FROM TSKLOPADETAIL";
         using (SqlDataAdapter adapter = new SqlDataAdapter(query, conn))
         {
             adapter.Fill(dt);
         }

         conn.Close();
     }

     return dt;
 }

 private DataTable GetDetailDataFromDB()
 {
     DataTable dt = new DataTable();

     // Строка подключения — возьми её из своего проекта (как в dsDataSet)
     string connectionString = Properties.Settings.Default.YourConnectionString; // ← ЗАМЕНИ НА СВОЮ

     string query = @"
 SELECT 
     ISNULL(TOpa_AttrTpName1, 'АРТ-' + CAST(ABS(CHECKSUM(NEWID())) % 900 + 100 AS VARCHAR)) AS Article,
     ISNULL(TOpa_AttrTpName2, 'Изделие №' + CAST(ABS(CHECKSUM(NEWID())) % 100 + 1 AS VARCHAR)) AS Name,
     ISNULL(TOpa_AttrTpName3, '') AS Tooling,
     CAST(Topa_Rcd AS VARCHAR(50)) AS ProductKey,
     ISNULL(TOpa_AttrTpName4, '') AS MPK,
     ISNULL(TOpa_AttrTpName5, 'Стеллаж ' + CHAR(65 + ABS(CHECKSUM(NEWID())) % 5)) AS Rack,
     ISNULL(TOpa_AttrTpName6, 'Ячейка ' + CAST(ABS(CHECKSUM(NEWID())) % 10 + 1 AS VARCHAR)) AS Cell,
     ISNULL(TOpa_AttrTpName7, '') AS ProductionOrder,
     ISNULL(TOpa_AttrTpName8, 
         CASE ABS(CHECKSUM(NEWID())) % 4
             WHEN 0 THEN 'Россия'
             WHEN 1 THEN 'Китай'
             WHEN 2 THEN 'Беларусь'
             WHEN 3 THEN 'Германия'
         END) AS Country
 FROM TSKLOPADETAIL";

     using (SqlConnection conn = new SqlConnection(connectionString))
     using (SqlDataAdapter adapter = new SqlDataAdapter(query, conn))
     {
         adapter.Fill(dt);
     }

     return dt;
 }
Проверь вообще весь мой код и мало ли есть какие то ошибки