C#语句报错?
switch(ddlistEquType.Text){case"主机":txtsql="selecttop1EquIDfromtb_EquInforwhereEquIDl...
switch (ddlistEquType.Text )
{ case "主机":
txtsql = "select top 1 EquID from tb_EquInfor where EquID like '%ZJ%' order by EquID DESC ";
DataTable dt = db.reDt(txtsql);
if (dt.Rows[0][0].ToString() != "0")
{
MaxID = dt.Rows[0][0].ToString();
for (j = 0; j < MaxID.Length-1; j++)
{
//midnumber=Convert.ToChar(MaxID.Substring(j, 1));
midnumberstr = MaxID[j].ToString();
midnumber = Convert.ToChar(midnumberstr);
if (char.IsNumber(midnumber))
//Numstr1= Convert.ToString (midnumber);
Numstr1 += MaxID[j].ToString(); ;
}
number = Convert.ToInt32(Numstr1) + 1;
Numstr2 = Convert.ToString(number);
Numstr2 = string.Format("0000", "Numstr2");
txtEquID.Text = "ZJ" + Numstr2;
break; }
else
txtEquID.Text = "ZJ0001";
break;
case "显示器":
//因字数问题,后面省略了
}}
源码修改了一下(如上),报如下错误:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0165: 使用了未赋值的局部变量“Numstr1”
源错误:
行 50: if (char.IsNumber(midnumber))
行 51: //Numstr1= Convert.ToString (midnumber);
行 52: Numstr1 += MaxID[j].ToString();
行 53:
行 54: }
源文件: h:\computersystem\EquInStore.aspx.cs 行: 52
为何出现以下错误提示:
在位置 0 处没有任何行。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 在位置 0 处没有任何行。源错误: 行 32: 行 33: DataTable dt = db.reDt(txtsql);行 35: {行 36: MaxID = dt.Rows[0][0].ToString();源文件: h:\computersystem\EquInStore.aspx.cs 行: 34 展开
{ case "主机":
txtsql = "select top 1 EquID from tb_EquInfor where EquID like '%ZJ%' order by EquID DESC ";
DataTable dt = db.reDt(txtsql);
if (dt.Rows[0][0].ToString() != "0")
{
MaxID = dt.Rows[0][0].ToString();
for (j = 0; j < MaxID.Length-1; j++)
{
//midnumber=Convert.ToChar(MaxID.Substring(j, 1));
midnumberstr = MaxID[j].ToString();
midnumber = Convert.ToChar(midnumberstr);
if (char.IsNumber(midnumber))
//Numstr1= Convert.ToString (midnumber);
Numstr1 += MaxID[j].ToString(); ;
}
number = Convert.ToInt32(Numstr1) + 1;
Numstr2 = Convert.ToString(number);
Numstr2 = string.Format("0000", "Numstr2");
txtEquID.Text = "ZJ" + Numstr2;
break; }
else
txtEquID.Text = "ZJ0001";
break;
case "显示器":
//因字数问题,后面省略了
}}
源码修改了一下(如上),报如下错误:
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。
编译器错误消息: CS0165: 使用了未赋值的局部变量“Numstr1”
源错误:
行 50: if (char.IsNumber(midnumber))
行 51: //Numstr1= Convert.ToString (midnumber);
行 52: Numstr1 += MaxID[j].ToString();
行 53:
行 54: }
源文件: h:\computersystem\EquInStore.aspx.cs 行: 52
为何出现以下错误提示:
在位置 0 处没有任何行。 说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 在位置 0 处没有任何行。源错误: 行 32: 行 33: DataTable dt = db.reDt(txtsql);行 35: {行 36: MaxID = dt.Rows[0][0].ToString();源文件: h:\computersystem\EquInStore.aspx.cs 行: 34 展开
展开全部
使用了未赋值的局部变量“Numstr1” 声明的时候给他赋个值 string.Empty.
在位置 0 处没有任何行 你看看你的sql语句是不是查询结果为空。
在位置 0 处没有任何行 你看看你的sql语句是不是查询结果为空。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Switch语句之外事先声明string Numstr1 就可以了。
比如 string Numstr1 ="";
switch (ddlistEquType.Text )
{
....
}
追问
这样修改是没有错误提示了,但没能实现想要的效果。我想实现的效果是:当页面打开时,根据DROPDOWNLIST的TEXT值判断是那种设备类型,并从数据库表中查询有无记录,如有,则取最大的ID值并实现ID号递增且显示在txtEquID文本框内,如无,则在txtEquID文本框内显示形如“ZJ0001”的设备类型ID号。能实现吗?可以的话,该怎么写代码?
各位大侠,帮帮忙吧!!
追答
开发的是ASP.net吧。
实现这个功能是肯定可以的。但是如果有逻辑错误的话,只能靠开发人员自己解决了。
这里只能给你些建议,ID的自动递增最好由SqlServer实现,因为如果你的页面开发有问题,很有可能搞出不同的记录但有相同的ID。而数据库实现自增长的ID十分方便。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
局部变量“Numstr1”前要先定义下,赋空值如NUMSTR1="";
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询