Про книжки напишу позже. Короче наш город похож сильно на Российский город Орёл, но центр город очень маленький и город сам маленький всего примерно 50 тыщ. население, но есть тоже как в городе Орёл университет, река, даже три, так-же есть мыс в нашем городе. Короче я смотрел видеопрезинтацию или лекцию из Орловского университета или института по языку Ada, так-же там рассказывали про Oberon. Язык Ada используют для программирования медицинского оборудования, там не просто язык программирования типа как Delphi, а специальные есть API для коммуникации с медицинским оборудованием, хотя в в nix/nux всё оборудование монтировано как файлы и находится в пути /dev/. Короче моя мама хотела очень ещё 26 лет назад, чтобы я учил либо медицинскую информатику, или биоинформатику. У нас есть медицинский городок (район) возле университета, там огромная больница совсем недавно построили новую пристройку больницы, психиатрическая больница а скоро будут строить новую пристройку, сейчас строят многоэтажный мпдицинский кампус, по моим подсчётам он 9 этажный, там будут студенты обучаться, и больница в нашем городе станет университетской клиникой. Короче когда заболеваю и ложусь в больницу, у меня есть больничный нетбук, там Windows XP Home устанрвлена, и такие программы как Microsoft Visual Basic 6.0, Visual Studio 2005, Visual Studio 2008, Microsoft Access 2003, и виртуалки Microsoft Virtual PC 2004 с Windows 95, Microsoft Office 97. Короче я в больнице от скуки проектирую больничную программу и базу данных в Microsoft Access, но у меня не получается сделать базу данных больницы. Ещё я дружил с одной девушкой, она медик, и у неё был никнейм на одном сайте колибри. Я дал поиск колибри и медицинское оборудование, хотя в её случае это были какие-то шунты, но я нашёл Швейцарскую фирму, которая изготовляет микроплаты для медицинского оборудования, относительро недаано там можно было писать прикладные программы для медицинского оборудования на старом Mictosoft eMbedded Visual C++ 4.0. Кстати я медицинскую программу разрабатывал ещё в 2008 году во время стажировке, после рабочего дня, т.е. после 18 часов. И да мне очень нравится ещё Embedded и Automotive (автомобильная промышоенность).
Вот:
Развернуть: Моя проблема с БД заключается в том, что у нас больница разбросана по всему городу, на окраинах города есть ещё 3-4 больницы.
Вот так выглядет БД больницы:
Развернуть: Проблема с отпуском:
Развернуть: Решение проблемы с помощью SQL MySQL и MySQL .NET Connector: Не знаю работает это на старых MS-SQL до 2000 года.
Развернуть: - Код: Выделить всё
MariaDB [(none)]> use hospital2026
Database changed
MariaDB [hospital2026]> describe personal;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| PersonalID | bigint(20) | NO | PRI | NULL | auto_increment |
| FN | varchar(255) | NO | | NULL | |
| LN | varchar(255) | NO | | NULL | |
| gender | char(1) | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
4 rows in set (0.010 sec)
MariaDB [hospital2026]> describe vocation;
+---------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+------+-----+---------+----------------+
| VocationID | bigint(20) | NO | PRI | NULL | auto_increment |
| PersonalID | bigint(20) | NO | | NULL | |
| S | date | NO | | NULL | |
| Po | date | NO | | NULL | |
| ZamPersonalID | bigint(20) | NO | | NULL | |
+---------------+------------+------+-----+---------+----------------+
5 rows in set (0.010 sec)
MariaDB [hospital2026]> select * from personal;
+------------+-------+----------+--------+
| PersonalID | FN | LN | gender |
+------------+-------+----------+--------+
| 1 | Anna | Ovcharik | W |
| 2 | Anton | Vikulov | M |
| 3 | Dima | Ivanov | M |
+------------+-------+----------+--------+
3 rows in set (0.001 sec)
MariaDB [hospital2026]> select * from vocation;
+------------+------------+------------+------------+---------------+
| VocationID | PersonalID | S | Po | ZamPersonalID |
+------------+------------+------------+------------+---------------+
| 1 | 1 | 2026-07-01 | 2026-07-14 | 2 |
+------------+------------+------------+------------+---------------+
1 row in set (0.001 sec)
MariaDB [hospital2026]> SELECT p1.PersonalID AS orig_pers_id, COALESCE(p2.FN, p1
.FN) AS A_FN, COALESCE(p2.LN, p1.LN) AS A_LN, COALESCE(p2.Gender, p1.Gender) AS
A_Gender, p1.FN AS origd_FN, p1.LN AS origd_LN, CASE WHEN p2.PersonalID IS NOT N
ULL THEN 'V otpuske' ELSE 'Na rabote' END AS work_stat FROM personal AS p1 LEFT
JOIN vocation AS v ON v.PersonalID = p1.PersonalID AND CURDATE() BETWEEN v.S AND
v.PO LEFT JOIN personal AS p2 ON v.ZamPersonalID = p2.PersonalID;
+--------------+-------+---------+----------+----------+----------+-----------+
| orig_pers_id | A_FN | A_LN | A_Gender | origd_FN | origd_LN | work_stat |
+--------------+-------+---------+----------+----------+----------+-----------+
| 1 | Anton | Vikulov | M | Anna | Ovcharik | V otpuske |
| 2 | Anton | Vikulov | M | Anton | Vikulov | Na rabote |
| 3 | Dima | Ivanov | M | Dima | Ivanov | Na rabote |
+--------------+-------+---------+----------+----------+----------+-----------+
3 rows in set (0.002 sec)
Код:
- Код: Выделить всё
Imports MySql
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnShow.Click
Try
Dim con As New MySqlConnection("server=127.0.0.1;uid=root;pwd=;database=hospital2026")
Dim dt As New DataTable
con.Open()
Dim adapt As New MySqlDataAdapter("SELECT p1.PersonalID AS orig_pers_id, COALESCE(p2.FN, p1 .FN) AS A_FN, COALESCE(p2.LN, p1.LN) AS A_LN, COALESCE(p2.Gender, p1.Gender) AS A_Gender,
p1.FN AS origd_FN, p1.LN AS origd_LN, CASE WHEN p2.PersonalID IS NOT NULL THEN 'V otpuske' ELSE 'Na rabote' END AS work_stat FROM personal AS p1
LEFT JOIN vocation AS v ON v.PersonalID =
p1.PersonalID AND CURDATE() BETWEEN v.S AND v.PO LEFT JOIN personal AS p2 ON v.ZamPersonalID = p2.PersonalID", con)
adapt.Fill(dt)
Me.grdMedicals.DataSource = dt
Catch ex As MySqlException
MsgBox("Ошибка" & ex.Message)
End Try
End Sub
End Class
Результат:
Развернуть: