Member 13201220 Ответов: 0

Как получить совпадающие даты из двух разных таблиц в одной БД?


У меня есть три разных стола:
1)увольнения сотрудника
2) Заказ завтрака
3) Отмена Завтрака

Отпуск работник имеет столбцы: "Si_no, EmpCode, столбец empname, обозначение, Leave_Type, LFrom, ЛТО Numbersof_leave, причины, информация, комментарии"

Заказ завтрака имеет: "Emp_ID, Order_For_Date, Order_Day, Order_From, блюдо, цена, количество, Company_Limit, Extra_Chgs, Total_Cost, Ordered_Date, Emp_Name"

Сейчас,
когда пользователь представить листьев (половину дня(LFrom) / полный день(LFrom) / дополнительный отпуск(LFrom и ЛТО))
Его / ее заказ на завтрак (Order_For_Date) должен быть отменен для дат применения отпуска(LFrom to LTo), а данные для совпадающих дат должны быть удалены из таблицы заказов на завтрак и вставлены в таблицу отмены завтрака.

Плз, помоги мне...

Что я уже пробовал:

public void deletebreakfast()
{
    DataTable Breakfast = new DataTable();
    var date = DateTime.Now;
    var nextSundayy = date.AddDays(7 - (int)date.DayOfWeek);
    string today = DateTime.Now.ToString("yyyy-MM-dd");
    string nextsunday = nextSundayy.ToString("yyyy-MM-dd");
    cmd = new SqlCommand("select * from tb_Breakfast_data where Order_For_Date between '" + today.Trim() + "' and '" + nextsunday.Trim() + "' and Emp_ID = '" + Session["EmpCode"].ToString() + "'", Connectivity.cn);
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(Breakfast);

    if (dd2.SelectedItem.Text == "Half Day Leave" || dd2.SelectedItem.Text == "Full Day Leave")
    {
        foreach (DataRow dr in Breakfast.Rows)
    {
            if()
        try
        {
            string Fdate = "", Todate = "", Empcode = "";
            
            try
            {
                Fdate = dr["LFrom"].ToString();
            }
            catch { }
            try
            {
                Todate = dr["LTo"].ToString();
            }
            catch { }
            try
            {
                Empcode = dr["EmpCode"].ToString();
            
            }
           catch { }
            
            string Query1 = "";
            string Query2 = "";

            if (Todate.Trim() == "")
            {
        
Query1 = "select * from tb_Breakfast_data where Order_For_Date  = '" + Fdate.Trim() + "' and Emp_ID='" + Empcode.Trim() + "'";
                Query2 =  "
            }
                
            else
                 
{
   
    DateTime startDate ;
    DateTime endDate ;
    string date1 = "";
 {
    for (DateTime dt = startDate; dt <= endDate; dt = dt.AddDays(1.0))
        {
        date1 = Convert.ToString(date);
        allDateb.Add(date1);
    }
    
    return allDateb;

Richard MacCutchan

Почему вы храните даты и идентификатор сотрудника в виде текста, а не натуральных значений? Вот только делает это трудно, чтобы найти данные, которые вас интересуют.

Maciej Los

Не конвертируйте даты в строку! Вы должны работать на свиданиях.

ZurdoDev

Что не работает? Где ты застрял?

Member 13201220

есть логика, но не в состоянии ее реализовать.
(для текущей даты до следующих семи дней)
случай 1: (для отпуска на полдня / полный день) сначала получите данные столбца Order_for_date из таблицы Breakfast, а затем получите lfrom dates из таблицы employee leave = & gt; сравните оба, если они совпадают переместите данные совпадающих дат в новую таблицу Breakfast cancel.
Случай 2 (дополнительный отпуск): получить Order_for_date данные столбца с завтраком, то вам LFrom в ЛТО столбцы данных =&ГТ;сравните также рассмотреть сроки между LFrom в ЛТО' если сочетается движение к завтраку отменить таблице. (EmpCode=Emp_ID). (Завтрак должен быть отменен на все даты, на которые работник подал заявление об отпуске)

Не в состоянии реализовать.
предложите, если есть какой-нибудь другой способ получить это.

CHill60

catch { } это так плохо. Не делай этого. Удалите все ваши try-catch блоки. Все они. Все до единого. Тогда прочтите это: Рекомендации по обработке исключений в .NET[^]

Member 13201220

Спасибо всем за помощь.. задание выполнено.

0 Ответов