从三个表中获取数据

本文关键字:获取 数据 三个 | 更新日期: 2023-09-27 18:05:08

我有这样的代码:

connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select AName, FirstName, LastName, Address, CellPhone from ClientsT, AnimalsT where AppT.hasSchedule = @T and Month(AppT.ScheduleApp)= @MonthVacine and YEAR(AppT.ScheduleApp)= @YearVacine and AnimalT.AnimalID = AppT.AnimalID and AnimalsT.ClientID = ClientsT.ClientID";
command.CommandText = query;
command.Parameters.Add("@T", OleDbType.Boolean).Value = true;
command.Parameters.Add("@MonthVacine", OleDbType.Char).Value = month;
command.Parameters.Add("@YearVacine", OleDbType.Char).Value = year;
OleDbDataReader reader = command.ExecuteReader();
listView2.Items.Clear();
while (reader.Read())
{
    ListViewItem item = new ListViewItem(reader["AName"].ToString());
    item.SubItems.Add(reader["FirstName"].ToString());
    item.SubItems.Add(reader["LastName"].ToString());
    item.SubItems.Add(reader["Address"].ToString());
    item.SubItems.Add(reader["CellPhone"].ToString());
    listView2.Items.Add(item);
}
reader.Close();
connection.Close();

当我运行程序时,我得到一条消息说

"没有给出一个或多个必需参数的值"。

我想要的,是在applt(约会表)中搜索,如果有一个约会计划(hassschedule),然后检查是否匹配我提供的年份和月份(对日期不感兴趣),在此之后,我去AnimalsT使用AnimalID获取名称(动物名称),然后我去客户端获取他们的信息firstname, LastName, Address,手机使用ClientID

从三个表中获取数据

下面的代码行将在您添加的参数的副本上设置Value:

command.Parameters.Add("@T", OleDbType.Boolean).Value = true;
command.Parameters.Add("@MonthVacine", OleDbType.Char).Value = month;
command.Parameters.Add("@YearVacine", OleDbType.Char).Value = year;

要解决这个问题,试试下面的代码:

command.Parameters.Add("@T", OleDbType.Boolean);
command.Parameters.Add("@MonthVacine", OleDbType.Char);
command.Parameters.Add("@YearVacine", OleDbType.Char);
command.Parameters["@T"].Value = true;
command.Parameters["@MonthVacine"].Value = month;
command.Parameters["@YearVacine"].Value = year;