【问题标题】:Selecting Multiple Tables in MS Access using C#使用 C# 在 MS Access 中选择多个表
【发布时间】:2014-09-10 05:37:32
【问题描述】:

大家好,我对从不同表中选择多个字段将其绑定到一个结果中感到有些困惑,为了让您更好地理解,我在下面发布了我的代码和 ERD。谢谢您的答复。请告诉我哪里出错了tnx :)

这是我的 ERD:

这是代码:

try
        {
            OleDbConnection Con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\\MotoFix.mdb;");
            OleDbCommand command = new OleDbCommand();
            OleDbDataAdapter adapter = new OleDbDataAdapter();
            DataTable dt = new DataTable();
            Con.Open();
            command.CommandText = String.Format("SELECT fn.Customer + ' ' + mi.Customer + ' ' + ln.Customer as [CUSTOMER FULLNAME], fn.Cashier + ' ' + mi.Cashier + ' ' + ln.Cashier as [CASHIER FULLNAME], prodName.Product as [PRODUCT NAME], prodDescription.Product as [PRODUCT DESCRIPTION], prodBrand.Product as [PRODUCT BRAND], prodQuantity.Transaction as [PRODUCT QUANTITY], prodTotalPrice.Transaction as [SUBTOTAL], job.Personnel as [Referral] FROM Product , [Order] , [Transaction] , Customer , Cashier , Personnel  WHERE prodCode.Product = ProdCode.Order AND orderNo.Order = orderNo.Transaction AND pID.Personnel = pID.Transaction AND custID.Customer = custID.Transaction AND userID.Cashier = userID.Transaction AND sDate.Transaction = '{0}'", strDate);
            command.Connection = Con;
            adapter.SelectCommand = command;
            adapter.Fill(dt);
            Con.Close();
            Con.Dispose();
            gridViewTransac_1.DataSource = dt;

        }
        catch (Exception ex)
        {
            XtraMessageBox.Show(ex.Message);
        }

附加信息:没有为一个或多个必需参数指定值。

【问题讨论】:

  • 您好,请先尝试在 ms 访问中运行您的选择查询,以检查您的查询是否正确
  • 我已经试过了,没错:)
  • 您尝试了使用 Transaction 值的确切查询并给了您所需的响应?

标签: c# database ms-access inner-join


【解决方案1】:

我不是一个好的 sql 查询生成器,但它不应该是 TableName.FieldName 而不是相反吗?

无论如何都尝试将 TableName 放在第一位:

SELECT Customer.fn + ' ' + customer.mi + ' ' + customer.ln as [CUSTOMER FULLNAME]
     , Cashier.f. + ' ' + Cashier.mi + ' ' + customer.ln as [CASHIER FULLNAME]
     , Product.prodName as [PRODUCT NAME]
     , Product.prodDescription as [PRODUCT DESCRIPTION]
     , Product.prodBrand as [PRODUCT BRAND]
     , Transaction.prodQuantity as [PRODUCT QUANTITY]
     , Transaction.prodTotalPrice as [SUBTOTAL]
     , Personnel.job. as [Referral] 

FROM   Product 
     , [Order] 
     , [Transaction] 
     , Customer
     , Cashier 
     , Personnel  

WHERE Product.prodCode = Order.ProdCode 
  AND Order.orderNo = Transaction.orderNo 
  AND Personnel.pID= Transaction.pID 
  AND Customer.custID = Transaction.custID 
  AND Cashier.userID = Transaction.userID 
  AND Transaction.sDate = @transDate 

对于@transDate,您应该添加:

command.Parameters.AddWithValue("@transDate", someDate);

或者你可以简单地照做

【讨论】:

  • 感谢这个 command.Parameters.AddWithValue("@transDate", someDate); 它有效! :*
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
相关资源
最近更新 更多