使用SUM()和Where子句的SQL命令

时间:2019-07-07 15:54:01

标签: sql-server vb.net

由于我不在笔记本电脑中,请使用手机输入信息,请不要降低我的声誉。

我在SQL Server数据库中有一列名为Total_Amount的列,我想获取特定收银员在特定日期的Sum(Total_Amount)。我只能获取特定的收银员,但是如果我想同时对收银员和日期使用WHERE子句,则不会返回任何内容。该命令在SQL Server Management Studio中效果很好,但是在VB中效果很好。 nET,事实并非如此。

以下是我的代码。

         Dim conn As New SqlConnection("data. 
         source=PRECIOUSMUM\MSSQLSERVER_1; initial.    
         catalog=inventory; user id=mantics; 
         password=emudeji;")
        Try
        'Dim Total_Amountss As Double
        conn.Open()
        Dim cmd = New SqlCommand
        With cmd

            .Connection = conn
            .CommandText = "SELECT   SUM(Total_Amount) 
          AS Total_Amount FROM tblOrder WHERE.    
        (cashier=@cashier) AND (Order_date=@Order_date)"
            .Parameters.AddWithValue("@cashier", 
         lbl_Cashier_Name.Text)
            .Parameters.AddWithValue("@Order_date", Date.Today.ToString)
            '.Parameters.AddWithValue("@enddate", dtpicker.Value.Date)

        End With

        Dim dr As SqlDataReader
        dr = cmd.ExecuteReader
        dr.Read()

        If IsDBNull(dr("Total_Amount")) Then
            lbl_cashier_Totalsales.Text = "N0.00"
        Else
            Dim str As Double
            str = dr.Item("Total_Amount")
            lbl_cashier_Totalsales.Text = FormatCurrency(dr.Item("Total_Amount"))
        End If

1 个答案:

答案 0 :(得分:0)

显然是错误的第一件事是您使用字符串查询日期列。这永远是不正确的,因为字符串是您用来向最终用户显示日期的东西。这不是数据库(或.NET)存储日期值的方式。因此,不使用字符串查询Date列,而是直接在Add方法中传递C#DateTime值并指定参数的DataType。 第二个可能的错误是由于以下事实造成的:如果您还存储了时间部分,则传递像今天这样的日期将永远不会匹配任何行,而只会匹配其时间值是00:00:00的行。

您需要查询> =起始日期的午夜和第二天的<。

这些注意事项将给出这样的查询:

import React, { useContext } from 'react';
    import PropTypes from 'prop-types';
    import OrderContext from '../../context/order/orderContext';

    const OrderItem = ({ order }) => {
      const orderContext = useContext(OrderContext);
      const { deleteOrder, setCurrent, clearCurrent } = orderContext;

      const { _id, username, useremail, productname, productsellprice } = order;

      const onDelete = () => {
        deleteOrder(_id);
        clearCurrent();
      };

      return (
        <div className='card bg-light'>
          <h3 className='text-primary text-left'>
            {_id}{' '}
            <span
              style={{ float: 'right' }}
              className={
                'badge ' +
                (productsellprice === 'professional' ? 'badge-success' : 'badge-primary')
              }
            >
              {'£ ' + productsellprice}
            </span>
          </h3>
          <ul className='list'>
            {useremail && (
              <li>
                <i className='fas fa-marker' /> {useremail}
              </li>
            )}
            {productname && (
              <li>
                <i className='fas fa-marker' /> {productname}
              </li>
            )}
          </ul>
          <p>
            <button
              className='btn btn-dark btn-sm'
              onClick={() => setCurrent(order)}
            >Edit
            </button>
            <button className='btn btn-danger btn-sm' onClick={onDelete}>
              Delete
            </button>
          </p>
        </div >
      );
    };

    OrderItem.propTypes = {
      order: PropTypes.object.isRequired
    };

    export default OrderItem;