dem3/SupplierListForm.cs
2025-11-18 17:27:48 +04:00

87 lines
3.7 KiB
C#

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Dem2
{
public partial class SupplierListForm : Form
{
public SupplierListForm()
{
InitializeComponent();
}
// Поле для хранения ID материала, для которого смотрим поставщиков
private int materialId;
// Конструктор, который принимает ID материала
public SupplierListForm(int materialId)
{
InitializeComponent();
this.materialId = materialId;
LoadSuppliers(); // Загрузить поставщиков при открытии формы
}
private void LoadSuppliers()
{
try
{
// Очистим старые строки
dataGridViewSuppliers.Rows.Clear();
using (var conn = DataBase.GetConnection()) // Убедись, что имя класса подключения правильное!
{
conn.Open();
// SQL-запрос: получить поставщиков для конкретного материала
// JOIN между suppliers, material_suppliers, supplier_ratings, supplier_contract_start
string sql = @"
SELECT
s.name AS supplier_name,
COALESCE(sr.rating_value, 0) AS rating_value, -- Если нет рейтинга, показываем 0
COALESCE(scs.start_date, '1900-01-01') AS start_date -- Если нет даты, показываем 1900-01-01
FROM suppliers s
INNER JOIN material_suppliers ms ON s.id = ms.supplier_id
LEFT JOIN supplier_ratings sr ON s.id = sr.supplier_id
LEFT JOIN supplier_contract_start scs ON s.id = scs.supplier_id
WHERE ms.material_id = @materialId
ORDER BY s.name"; // Сортировка по имени поставщика
using (var cmd = new MySqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@materialId", materialId);
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
string supplierName = reader["supplier_name"].ToString();
// Проверка на NULL для rating_value
int rating = reader["rating_value"] != DBNull.Value ? Convert.ToInt32(reader["rating_value"]) : 0;
DateTime startDate = Convert.ToDateTime(reader["start_date"]);
// Добавляем строку в DataGridView
dataGridViewSuppliers.Rows.Add(supplierName, rating, startDate.ToString("yyyy-MM-dd")); // Формат даты
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки поставщиков: " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}