Прежде всего, вы назвали переменные сотрудников и праздников, но это означает, что таблицы в наборе данных изменили имена;для них по-прежнему заданы имена по умолчанию, в вашем случае это table и table1.(Обычно это таблица, таблица1 ... таблицаN) Это означает, что ваше свойство элемента отображения должно быть следующим:
listBox1.DisplayMember = "table.relation.start";
Кроме того, убедитесь, что вы связываете данные с самим набором данных, а не с таблицей выходных в пределахнабор данных выглядит следующим образом:
listBox1.DataSource = d;
С этими двумя изменениями вы обнаружите, что он работает;this.BindingContext должен помочь в навигации по родительским записям, так как вы заметите, что в каждый момент времени отображается только 1 набор результатов дочерних (выходных).
Полный измененный код следующим образом:
var command = new SQLiteCommand("SELECT * FROM employees; SELECT * FROM holidays");
var connection=new SQLiteConnection(@"data source=C:\employees.db");
command.Connection = connection;
SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
DataSet d = new DataSet();
adapter.Fill(d);
DataTable employees = d.Tables[0];
// [...]
// here I'm databinding my textboxes etc. to various columns
// of the employees data table - this works fine, navigation works well etc.
// [...]
DataTable holidays = d.Tables[1];
DataRelation relation;
DataColumn master = employees.Columns["id"];
DataColumn slave = holidays.Columns["employeeid"];
relation = new DataRelation("relation", master, slave);
d.Relations.Add(relation);
listBox1.DisplayMember = "table.relation.start"; // <= it wouldn't look good like that of course, but I just want to get the thing to work for now
listBox1.DataSource = d;