令人不切实际的“条件表达式中的无效数据类型”

巴西

我有以下查询

public const string UpdateSample =
@"UPDATE subReceivingQC
SET Clerk=@Clerk, Comments=@Comments, CommentsProd=@CommentsProd, MassOff=@MassOff, 
    PalletID=@PalletID, QCDate=@QCDate, QtyInspected=@QtyInspected, StatusClerk=@StatusClerk,
    StatusSupervisor=@StatusSupervisor, Supervisor=@Supervisor, PackOut=@PackOut
WHERE GRV=@GRV AND PalletSeq=@PalletSeq AND SampleNo=@SampleNo";

并使用此代码插入项目

// Update sample
query = DatabaseConstants.UpdateSample;
args = new DynamicParameters();

args.Add("@Clerk", sample.Clerk, DbType.String);
args.Add("@Comments", sample.Comments, DbType.String);
args.Add("@CommentsProd", sample.CommentsProd, DbType.String);
args.Add("@MassOff", sample.MassOff, DbType.String);
args.Add("@PackOut", sample.PackOut, DbType.String);
args.Add("@PalletID", sample.PalletID, DbType.String);
args.Add("@QCDate", sample.QCDate, DbType.Date);
args.Add("@QtyInspected ", sample.QtyInspected, DbType.Decimal);
args.Add("@StatusClerk", sample.StatusClerk, DbType.String);
args.Add("@StatusSupervisor", sample.StatusSupervisor, DbType.String);
args.Add("@Supervisor", sample.Supervisor, DbType.String);
args.Add("@GRV", sample.GRV, DbType.Int64);
args.Add("@PalletSeq", sample.PalletSeq, DbType.Int16);
args.Add("@SampleNo", sample.SampleNo, DbType.Int16);

using (var db = new OleDbConnection(connectionString))
{
    output += db.Execute(query, args);
}

现在MassOffPackOut均为double类型两者的Access数据类型均如下所示:

在此处输入图片说明

这里奇怪的是,该代码完全适用于该财产MassOff,但加入该行后PackOut,我得到

条件表达式中的数据类型无效

我尝试更改参数DbType.DecimalDbType.Double但没有区别。

我的查询中的参数没有一个与它们在db中出现的顺序相同,所以我认为这不是原因,因为那时我会看到没有该PackOut的相同问题

例如,当我尝试传递这些值时:

MassOff:9.5装箱量:70.5

它适用于MassOff但不适用PackOut

这怎么可能以上帝的名义?


样品课

public class Sample :
    QCObject, IGriddable
{
    private string imagesPath = ConfigurationManager.AppSettings["ImagesPath"];

    private string[] columnHeaders;
    public string[] ColumnHeaders {
        get
        {
            if(columnHeaders.IsNullOrEmpty())
            {
                return new string[] { "SampleNo", "Date", /*"QCDate",*/ "StatusClerk", "StatusSupervisor" };
            }
            else
            {
                return columnHeaders;
            }
        }
        set { columnHeaders = value;  } }


    private string rowLinkPrefix;
    public string RowLinkPrefix {
    get
    {
        if(string.IsNullOrWhiteSpace(rowLinkPrefix))
        {
            return $"/receiving/{GRV}/{Pallet.PalletSeq}/";
        }
        else
        {
            return rowLinkPrefix;
        }
    }
    set { rowLinkPrefix = value;  } }

    public bool Selectable { get; } = true;

    public Pallet Pallet { get; set; }

    // Should be 100 - (massoff/qtinspected) but building this manually 
    // at the moment due to lack of data integrity
    [DisplayName("Pack Out")]
    public double PackOut { get; set; }
    [DisplayName("Pack Out Percentage")]
    public double PackoutPerc { get; set; }
    [DisplayName("Percentage")]
    public double Perc { get; set; }
    [DisplayName("Mass Off")]
    public double MassOff { get; set; }
    [DisplayName("Production Comments")]
    public string CommentsProd { get; set; }
    [DisplayName("Technical Comments")]
    public string Comments { get; set; }
    [DisplayName("Quantity Inspected")]
    public double QtyInspected { get; set; }
    [DisplayName("Sample Number")]
    public int SampleNo { get; set; }
    [DisplayName("Status Clerk")]
    public string StatusClerk { get; set; }
    [DisplayName("Status Supervisor")]
    public string StatusSupervisor { get; set; }
    [DisplayName("Product Spec")]
    public string ProductSpec { get; set; }
    [DisplayName("PO Container")]
    public string POContainer { get; set; }

    public string Supervisor { get; set; }
    public string Clerk { get; set; }

    // For required db params
    public string GRV { get; set; }
    public string PalletID { get; set; }
    [DisplayName("Pallet")]
    public string PalletSeq { get; set; }

    [DisplayName("Date")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime QCDate { get; set; }
    public string Date { get { return QCDate.ToString("dd/MM/yyyy"); } } // My generic WebGrid solution does not alllow me to change thed ate formats, so use this instead

    // Each defect status needs to be saved as a (DB)subQCItems item
    public List<QCItem> Defects { get; set; } = new List<QCItem>();
    public IEnumerable<string> Users { get; set; } = new List<string>();

    public Sample()
    {
        var access = new Access();
        Users = access.GetUsers();
    }

    public IEnumerable<string> Images
    {
        get
        {
            string physicalDir;
            var dir = Path.Combine(imagesPath, $@"{Pallet.Grv.GRVNo}\{Pallet.PalletSeq}\{SampleNo}\");
            physicalDir = dir;

            if (Path.IsPathRooted(dir))
            {
                physicalDir = dir;
            }
            else
            {
                physicalDir = HttpContext.Current.Server.MapPath(dir);
            }

            if (!Directory.Exists(physicalDir))
                Directory.CreateDirectory(physicalDir);

            foreach (var filePath in Directory.GetFiles(physicalDir).Where(f => f != null))
            {
                yield return Path.Combine(dir, Path.GetFileName(filePath));
            }
        }
    }



    public void SaveImages(IEnumerable<HttpPostedFileBase> files)
    {
        foreach (var file in files.Where(f => f != null))
        {
            var dir = $@"{imagesPath}/{Pallet.Grv.GRVNo}/{Pallet.PalletSeq}/{SampleNo}";
            var physicalDir = HttpContext.Current.Server.MapPath(dir);

            var imageDirInfo = Directory.CreateDirectory(physicalDir);
            var counter = imageDirInfo.EnumerateFiles().Count() + 1;

            var path = Path.Combine($@"{physicalDir}", $"{counter}{Path.GetExtension(file.FileName)}");
            file.SaveAs(path);
            counter++;
        }
    }
}
汉素

OLEDB忽略参数名称。args.Add参数按照它们在UPDATE语句中出现的顺序排列

args.Add("@Clerk", sample.Clerk, DbType.String);
args.Add("@Comments", sample.Comments, DbType.String);
args.Add("@CommentsProd", sample.CommentsProd, DbType.String);
args.Add("@MassOff", sample.MassOff, DbType.String);
args.Add("@PalletID", sample.PalletID, DbType.String);
args.Add("@QCDate", sample.QCDate, DbType.Date);
args.Add("@QtyInspected ", sample.QtyInspected, DbType.Decimal);
args.Add("@StatusClerk", sample.StatusClerk, DbType.String);
args.Add("@StatusSupervisor", sample.StatusSupervisor, DbType.String);
args.Add("@Supervisor", sample.Supervisor, DbType.String);
args.Add("@PackOut", sample.PackOut, DbType.String);
args.Add("@GRV", sample.GRV, DbType.Int64);
args.Add("@PalletSeq", sample.PalletSeq, DbType.Int16);
args.Add("@SampleNo", sample.SampleNo, DbType.Int16);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

令人困惑的,看似不切实际的Linux磁盘分区方案

为什么类型推理对于面向对象的语言不切实际?

带有statsmodel ARIMA的不切实际的均方误差

不切实际的不合理“错误替换”

WebClient 连续下载产生不切实际的下载速度

在顶部显示不切实际的长处理时间

能够在不切实际的时间点设置时间的目的是什么?

彼得森的算法如何在不做出不切实际的假设的情况下工作?

为什么Python RK23解算器会爆炸并给出不切实际的结果?

是什么导致我的骰子游戏显示出不切实际的完美掷骰数

我正在编写嵌套的while循环,该循环越来越不切实际(> 12个嵌套循环),我该如何递归编码?

“条件表达式中的数据类型不匹配”

LabVIEW数据库查询中“条件表达式中的数据类型不匹配”

查询访问数据库时条件表达式中的数据类型不匹配

MS-Access SQL中的“条件表达式中的数据类型不匹配”

vb.net中条件表达式中的数据类型不匹配

在条件表达式中获取错误3464数据类型不匹配

条件表达式中的数据类型与REPLACE不匹配,无法替换

OleDb.OleDbException 条件表达式中的数据类型不匹配

选择查询中出现错误:条件表达式中的数据类型不匹配

Access查询后“条件表达式中的数据类型不匹配”

System.Data.OleDb.OleDbException:'条件表达式中的数据类型不匹配。'

解决“条件表达式中的数据类型不匹配”。在MS Access Insert.Into期间

条件表达式 ms-access c# 中的数据类型不匹配

条件表达式中的数据类型不匹配(vb.net,访问权限)

条件表达式异常中的数据类型不匹配

条件表达式中的数据类型不匹配vb2010“编辑”按钮

OLEDB总和错误:条件表达式中的数据类型不匹配。VB.NET

条件表达式Excel C#中的数据类型不匹配