Mam takie zapytanie do sprawdzania czy pracownik jest na urlopie:
SELECT
DATE_ADD(data_start, INTERVAL `ilosc_dni` DAY) AS do_kiedy
FROM `urlopy`
WHERE CURDATE() BETWEEN data_start AND DATE_ADD(data_start, INTERVAL `ilosc_dni` DAY)
AND id_pracow = 1;
W phpMyAdmin jak jest na urlopie to dostaje date kiedy wraca. Jak nie jest na urlopie to dostaje:
MySQL zwrócił pusty wynik (zero wierszy). ( Wykonanie zapytania trwało 0.0002 sekund(y) ).
W programie w C dziala mi wyswietlanie daty kiedy wraca, ale nie moge wyłapać sytuacji, gdy pracownik nie jest na urlopie (crash).
Kod:
mysql_query(myData, "SELECT DATE_ADD(data_start, INTERVAL `ilosc_dni` DAY) AS do_kiedy FROM `urlopy` WHERE CURDATE() BETWEEN data_start AND DATE_ADD(data_start, INTERVAL `ilosc_dni` DAY) AND id_pracow = 1;");
if(mysql_errno(myData))
{
MessageBox(0, mysql_error(myData), 0, 0);
mysql_close(myData);
break;
}
MYSQL_RES *result;
MYSQL_ROW row;
result = mysql_store_result(myData);
//zero wierszy czyli NULL, ale nie wyswietla komunikatu...
if(result == NULL)
{
MessageBox(0, "Pracownik nie jest na urlopie.", "Info", 0);
mysql_close(myData);
break;
}
if(mysql_errno(myData))
{
MessageBox(0, mysql_error(myData), 0, 0);
mysql_close(myData);
break;
}
row = mysql_fetch_row(result);
//zero wierszy czyli NULL, ale nie wyswietla komunikatu...
if(row[0] == FALSE)
{
MessageBox(0, "Pracownik nie jest na urlopie.", "Info", 0);
}
else
{
char szStatus[128] = "\0";
StringCchPrintf(szStatus, 128, "Pracownik ma urlop do dnia %s.", row[0]);
//to sie poprawnie wyswietla gdy jest na urlopie
MessageBox(0, szStatus, "Info", 0);
}
mysql_free_result(result);
mysql_close(myData);