请教个问题,我们需要从一个生产数据表,提取出发货单号,如XOUT0069732A,再与ERP系统的相同的发货单号实现对应,从而查询出规定时间范围的发货时间,由于生产数据表,有一部分发货单号,为了做区分,而带上了后缀字母,格式如 XOUT0069732A,我将其截取后续字母,进行关联,但在查询中,总是缺失这部分数量,请看看我截取的方法是否有问题,代码如下;
if (Compro == "销售发货信息")
{
string Xoutquery = @"select distinct code20,boxCode,wa.orderCode,cd.createTime from da_warehouseOutCode cd
Join da_warehouseOut wa on cd.orderID = wa.orderID
where cd.createTime >= @startdate and cd.createTime < @enddate";
SqlCommand Cmd3 = new SqlCommand(Xoutquery,ConnRedinfo);
Cmd3.Parameters.AddWithValue("@startdate", startdate);
Cmd3.Parameters.AddWithValue("@enddate", enddate);
SqlDataAdapter sda3 = new SqlDataAdapter(Cmd3);
DataTable reddt = new DataTable();
sda3.Fill(reddt);
string connStringK = "server=192.168.2.5;database=AIS2015;user=sa;password=zz";
using (SqlConnection ConnK = new SqlConnection(connStringK))
{
ConnK.Open();
DataTable ComdtK = new DataTable();
// 假设正常单据号长度,这里根据 XOUT0068457 是 11 位
int normalLength = 11;
foreach (DataRow row in reddt.Rows)
{
string XoutNo = row["orderCode"].ToString();
// 如果长度超过正常长度,截取到正常长度
if (XoutNo.Length > normalLength)
{
XoutNo = XoutNo.Substring(0, normalLength);
}
string queryK = @"select FBillNo,FHeadSelfB0163 from ICStockBill where FBillNo = @XoutNo";
SqlCommand CmdK = new SqlCommand(queryK, ConnK);
CmdK.Parameters.AddWithValue("@XoutNo", XoutNo);
using (SqlDataReader reader2 = CmdK.ExecuteReader())
{
DataTable dtK = new DataTable();
dtK.Load(reader2);
ComdtK.Merge(dtK);
}
}
DataTable mergedTable = MergeTables(reddt, ComdtK);
// 添加“发货机构”列并设置默认值
DataColumn shippingOrganizationColumn = new DataColumn("发货机构名称", typeof(string));
shippingOrganizationColumn.DefaultValue = "医药公司";
mergedTable.Columns.Add(shippingOrganizationColumn);
// 添加“发货地址”列并设置默认值
DataColumn shippingAddressColumn = new DataColumn("发货机构地址", typeof(string));
shippingAddressColumn.DefaultValue = "山东";
mergedTable.Columns.Add(shippingAddressColumn);
mergedTable.Columns.Add("发货人身份信息", typeof(string));
mergedTable.Columns.Add("联系方式", typeof(string));
dataGridView1.DataSource = mergedTable;
dataGridView1.Columns[0].HeaderText = "追溯码唯一流水号";
dataGridView1.Columns[1].HeaderText = "发货单编号";
dataGridView1.Columns[2].HeaderText = "订货单编号";
dataGridView1.Columns[3].HeaderText = "发货时间";
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
}