Generowanie liczby nowych kolumn w zależności od różnicy dat

Odpowiedz Nowy wątek
2019-05-16 09:38
0

Witam,
Chciałbym zrobić program do sprawdzania obecności. Wpisuje datę rozpoczęcia, datę zakończenia - na tej podstawie obliczam ilość dni pomiędzy datami i tyle kolumn tworzę w MySql'u. Taki jest plan, natomiast realizacja...

W tem sposób obliczam różnice dni:

private void dateTimePicker_End_Date_ValueChanged(object sender, EventArgs e)
        {
            DateTime Start = dateTimePicker_Start_Date.Value.Date;
            DateTime End = dateTimePicker_End_Date.Value.Date;
            TimeSpan TS = End - Start;
            int Days = TS.Days;
            label_Display_Days.Text = Days.ToString();
        }

W ten sposób generuję listę dni pomiędzy dwoma datami i wyświetlam ją w listBoxie

 private void button1_Click(object sender, EventArgs e)
        {
            DateTime dt1 = dateTimePicker_Start_Date.Value;
            DateTime dt2 = dateTimePicker_End_Date.Value;

            if (dt1 == dt2) {MessageBox.Show("Wrong Date !");}
            else if (dt1 > dt2){MessageBox.Show("Wrong Date !");}
            else
            {
                listBox1.Items.Clear();
                listBox1.Items.Add(dt1);
                while (dt1 < dt2)
                {
                    dt1 = dt1.AddDays(1);
                    listBox1.Items.Add(dt1);
                }
            }

        }

Tak tworzę nową tabelę w MySql

static public void save_make_new_table_after(string New_Project_Name_textbox)
{
    try
    {
        if (connection.State == ConnectionState.Closed)
            connection.Open();
        string NewTableColumns = "ID INT NOT NULL AUTO_INCREMENT, First_Name VARCHAR(15) NOT NULL, Last_Name VARCHAR(15) NOT NULL,";
        MySqlCommand Create_table = new MySqlCommand(@"CREATE TABLE " + New_Project_Name_textbox + " (" + NewTableColumns + " PRIMARY KEY (id)) COLLATE='utf8_general_ci' ENGINE=InnoDB;", connection);
        Create_table.ExecuteNonQuery();
    }
    catch (MySqlException exception)
    {
        MessageBox.Show(exception.ToString());
    }
    finally
    {
        connection.Close();
    }
}

Czy ktoś zna sposób aby na podstawie działania, lub listy którą wyświetalm obecnie w ListBoxie utworzyć dokładnie tyle kolumn w tabeli MySQL nazwanych dniami dni pomiędzy datą Start i datą Stop?

edytowany 2x, ostatnio: Michał_Ku, 2019-05-16 09:48

Pozostało 580 znaków

2019-05-16 12:13
3
  1. błędny masz plan
  2. tworzysz tabelę z polami data i obecność
  3. zamiast kolumn dodajesz rekordy
  4. samo wyświetlanie to już zależy od frontu a nie od bazy

Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2019-05-16 12:15

To trochę z **** podejście trzymanie tak danych. To już jak chcesz tak zrobić jak robisz to trzymaj daty w rekordach i na koniec zrób dynamicznego PIVOT'a z tych danych do wyświetlania.

Edit: Ooo spóźniłem się ;)

edytowany 1x, ostatnio: BlackBad, 2019-05-16 12:16
Sam się ocenzurowałeś? Ja wolę jak 4p to robi za mnie :) - Marcin.Miga 2019-05-16 12:25
Aaa stwierdziłem, że mnie jeszcze na jakiego karnego jeża albo bootcamp'a (trzymając kurs forum) wyślą .. to wolałem nie ryzykować ;) - BlackBad 2019-05-16 12:26

Pozostało 580 znaków

2019-05-16 12:33
0

W takim razie w jaki sposób dodać do tabeli w MySqlu tyle i takich rekordów ile wyjdzie mi z różnicy moich dwóch dat? Jak to fizycznie zrobić, czy ktoś może podrzucić kod bo stoję w miejscu.... :(

edytowany 1x, ostatnio: Michał_Ku, 2019-05-16 12:35

Pozostało 580 znaków

2019-05-16 14:23
1

ale po co?
Masz tabelkę obecności z polami data i user_id. Jak user jest obecny to dodajesz wpis do tabeli z datą i jego id. Na tej podstawie wiesz kiedy był. Przez analogie wiesz kiedy nie był (jak nie ma wpisu na dany dzień). Cała reszta to pokazanie tego tak jak chcesz ale to robota dla warstwy prezentacji danych a nie dla bazy. Pytanie jak i w czym piszesz front do bazy


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2019-05-16 14:32
0

W Visual Studio. Bardziej interesuje mnie jak wplesć w kod C# kod SQL żeby to działało.

Pozostało 580 znaków

2019-05-16 14:35
1

ale co Ci nie działa? Piszesz bardzo lakonicznie, trzeba z Ciebie wyciągać każdą informację. Skup się i napisz KONKRETNIE z czym masz problem. Chociaż masz jakąś wizję jak ma wyglądać prezentacja tych danych? wybrałeś kontrolkę, która Ci to tak wyświetli? potrafisz chociaż pobrać JAKIEKOLWIEK dane z bazy?


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2019-05-16 20:15
0

Nie mam problemu z pobraniem i prezentacją danych z bazy. Nie potrafię wyeksportować (przesłać do MySql) tych danych, czyli - zrobic tak żeby MySql utworzył mi tyle rekordów ile mam wyników i twstawił w te rekordy konkretne daty.

edytowany 1x, ostatnio: Michał_Ku, 2019-05-16 20:16

Pozostało 580 znaków

2019-05-16 21:36
0

Tworzysz tabele z kolumnami: ID, First_Name, Last_Name do której kolumny chcesz wstawić te daty?

Bo sytucja jest prosta iterujesz elementy listy:
https://stackoverflow.com/que[...]-through-all-items-in-listbox

I robisz inserta do tabeli dla każdego elementu:

https://stackoverflow.com/que[...]-with-mysql-insert-parameters

lub budujesz jednego inserta, który to doda jednym zapytaniem:

https://stackoverflow.com/que[...]sert-rows-into-mysql-database

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0