0

我开发了一个与 .net Framework 3.5 兼容的应用程序,也可以在其他应用程序中运行它的构建。

构建应用程序的操作系统是 Windows 7。

当我在 Windows XP 中运行构建时,以下代码会出现此错误:

dtBillDate.Text = ds.Tables[0].Rows[0]["Dt"].ToString(); 

dtBillDate是一个 DateTimePickerControl。

填充ds记录的 SQL 查询是:

query = "Select M.BillNo,M.PartyName,M.Address,M.City,M.State,M.TaxType,
M.BillType,FORMAT(M.BillDt,'dd-mm-yyyy')as Dt,
M.CST,M.GST,M.TransportName,M.TruckNo,M.Through,M.Tax,M.AddTax,M.Charges from BillMaster M where M.BillNo=" + billNo;

记录存储在 Access 2007 数据库中。

我应该做出哪些改变来解决这个错误。

请帮忙。提前致谢。

4

3 回答 3

0

尝试这个:

DateTime dateTime;
string dateString = ds.Tables[0].Rows[0]["Dt"].ToString();
bool result = DateTime.TryParse(dateString , out dateTime);

if(result)
{
     // Use `dateTime` variable then
}
于 2013-04-26T21:39:17.833 回答
0

基本上在win 7中可以使用“English INDIA”格式,其中日期分隔符是“-”。但在 Win XP 中“英语印度”格式不可用,因此您可能使用“英语美国或英国”格式作为日期分隔符使用“/”作为日期分隔符。

要解决您的问题,您所要做的就是在您的 win xp 机器中将日期分隔符格式更改为“-”,方法是转到 > 控制面板 > 区域和语言选项 > 单击“自定义”> 打开“日期”选项卡和此处将日期分隔符设置为“-”。并且您的应用程序将正常运行而不会出现任何错误。现在快乐 :D

于 2013-09-23T14:20:59.547 回答
0

您在查询中格式化您的日期

FORMAT(M.BillDt,'dd-mm-yyyy')as Dt

以您的格式mm应该MM,因为您可能需要月份,而不是分钟

您应该使用DateTime.ParseExact格式dd-MM-yyyy来解析日期。虽然如果您让您的查询返回 DateTime 而不进行格式化,并让 .Net 应用程序格式化您的日期以进行显示,那么它会更好。

您需要设置DateTimePicker控制值以显示日期。您可以使用DateTime.ParseExact以下方式解析:

dtBillDate.Value = DateTime.ParseExact(ds.Tables[0].Rows[0]["Dt"].ToString(), 
                                       "dd-MM-yyyy", 
                                       CultureInfo.InvariantCulture);
于 2013-04-26T07:15:40.557 回答