这么大岁数了还让老板炒,那真是太丢人了,太没脸见人了,,太郁闷了,太抓狂了,所以,请大家快帮我看看这段代码吧,,
生成后也显示出错,选完日期后按确定也不会显示出错,只是WEBGRID依然是没有显示,看来还是没连上数据库,但我的那个存储过程是好使的啊,我在查询器里执行了,没问题啊,请大家帮忙分析分析,,,
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CommonLibrary;
using System.Data.SqlClient;
namespace NetApp.Web.DigitSale
{
/// <summary>
///CustSaleSearch的摘要说明。
/// </summary>
public class CustSaleSearch : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.ImageButton ImageButton1;
protected System.Web.UI.WebControls.ImageButton ImageButton2;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected ISNet.WebUI.WebGrid.WebGrid WebGrid1;
private DataSet dataset;
private void Page_Load(object sender, System.EventArgs e)
{
dataset = GetConditionData();
TextBox1.Text=System.DateTime.Today.ToString("yyyy-MM-dd");
TextBox2.Text=System.DateTime.Today.ToString("yyyy-MM-dd");
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.ImageButton1.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click);
this.WebGrid1.InitializeDataSource += new ISNet.WebUI.WebGrid.DataSourceEventHandler(this.WebGrid1_InitializeDataSource);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private DataSet GetConditionData()
{
return new DataManager().GetCheckCondition();
}
private void WebGrid1_InitializeDataSource(object sender, ISNet.WebUI.WebGrid.DataSourceEventArgs e)
{
} private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
DataTable td =GetCustSaleS(TextBox1.Text,TextBox2.Text);
WebGrid1.DataSource = td.DefaultView;
WebGrid1.DataBind();
}
private DataTable GetCustSaleS(string Date1,string Date2)
{
return SqlHelper.ExecuteDataset(ConfigInfo.UniqueInstance.ConnectionString,
System.Data.CommandType.StoredProcedure,"web_CustSaleSearch",
this.GetStoreProcedureParameters("web_CustSaleSearch",
new object[]{Date1,Date2})).Tables[0];
}
}
}
生成后也显示出错,选完日期后按确定也不会显示出错,只是WEBGRID依然是没有显示,看来还是没连上数据库,但我的那个存储过程是好使的啊,我在查询器里执行了,没问题啊,请大家帮忙分析分析,,,
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CommonLibrary;
using System.Data.SqlClient;
namespace NetApp.Web.DigitSale
{
/// <summary>
///CustSaleSearch的摘要说明。
/// </summary>
public class CustSaleSearch : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.ImageButton ImageButton1;
protected System.Web.UI.WebControls.ImageButton ImageButton2;
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected ISNet.WebUI.WebGrid.WebGrid WebGrid1;
private DataSet dataset;
private void Page_Load(object sender, System.EventArgs e)
{
dataset = GetConditionData();
TextBox1.Text=System.DateTime.Today.ToString("yyyy-MM-dd");
TextBox2.Text=System.DateTime.Today.ToString("yyyy-MM-dd");
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.ImageButton1.Click += new System.Web.UI.ImageClickEventHandler(this.ImageButton1_Click);
this.WebGrid1.InitializeDataSource += new ISNet.WebUI.WebGrid.DataSourceEventHandler(this.WebGrid1_InitializeDataSource);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private DataSet GetConditionData()
{
return new DataManager().GetCheckCondition();
}
private void WebGrid1_InitializeDataSource(object sender, ISNet.WebUI.WebGrid.DataSourceEventArgs e)
{
} private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
DataTable td =GetCustSaleS(TextBox1.Text,TextBox2.Text);
WebGrid1.DataSource = td.DefaultView;
WebGrid1.DataBind();
}
private DataTable GetCustSaleS(string Date1,string Date2)
{
return SqlHelper.ExecuteDataset(ConfigInfo.UniqueInstance.ConnectionString,
System.Data.CommandType.StoredProcedure,"web_CustSaleSearch",
this.GetStoreProcedureParameters("web_CustSaleSearch",
new object[]{Date1,Date2})).Tables[0];
}
}
}
解决方案 »
- javascript执行问题
- oracle Float赋空值如何处理?现场等。
- 索引超出范围。必须为非负值并小于集合大小。
- 初学VS2005,我的项目完全用window.open(),包括主页面也是用window.open(),但是每次打开主页都会被拦截,今天突然看到showmodaldialog,傻了
- 文件不允许访问怎么办?
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件
- 页面上打印票据,有什么好的方法吗?
- 给有人知道怎么更改一个表中字段的数据类型???
- 在.net下无法运行asp文件
- vb.net中换行是怎么弄啊?
- VS.NET2005中如何使用style Filter
- 超级奇怪的问题
--------------------------------------------------------------------------------从字符串转换为 datetime 时发生语法错误。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 从字符串转换为 datetime 时发生语法错误。源错误:
行 602:
行 603: // Fill the DataSet using default values for DataTable names, etc
行 604: da.Fill(ds);
行 605:
行 606: // Detach the SqlParameters from the command object, so they can be used again
源文件: D:\NetApp\CommonLibrary\SQLHelper.cs 行: 604 另外一个网页还看不到数据库连接的到底好不好使呢,一确定就出这个错误,请大家帮看看啊,
这个里面有返回数据集吗?
我做的另一个网页,也是一直没解决的,里面引用的同样的数据集,那个WEBCOMBO里面运行时引用就是成功的,
只不过下面按确定想看这时间段内的数据里,WEBGRID不动,不显示出错,也不显示内容,
但我的存储过程运行时,表是很大的
new object[]{Date1,Date2})
因为我现在还检查不了,大家说这里会有问题吗?
检查与时间有关的字段
new object[]{Date1,Date2)
你数据库表的2个字段如果是datetime类型的话 就不能这样传参了 你必须把 Date1,Date2转成datime类型。。从你的出错信息上看 估计你的数据库的字段为datetime类型,建议你再仔细看看。。
异常详细信息: System.Data.SqlClient.SqlException: 从字符串转换为 datetime 时发生语法错误。如上,异常信息很明显表明错误来自数据库,如果按楼主所言,sp 没有任何问题的话,
那唯一会出问题的地方就是 sp 的传入参数了,如果类型没问题的话,就是值有问题,
比如,楼主说“在存储过程里,参数的类型是VCHAR,,,那传递的TextBox1.Text不也是STRING类型吗?”,但是楼主是否检查了 TextBox1.Text 是否为 string.Empty 呢?或者 TextBox1.Text 中含有非法字符?当 sp 中对 TextBox1.Text 对应的参数进行 datetime 类型转换时就报错了。其实能出问题的地方就那么几处,异常信息加耐心等于Debug!先睡了,晚安!明天一切都会好的!
da 是否为空?
但是楼主是否检查了 TextBox1.Text 是否为 string.Empty 呢
这个怎么检查啊,
Date1,Date2转成datime这个怎么转啊,
急急急,,,
我执行,
EXECUTE WEB-CUSTSALESEARHCH "2004-01-01",:2007-04-11"
执行是成功的啊,
还应该怎么转啊,大家帮帮忙吧,,
new object[]{Date1,Date2)
我改为这样之后,就生成出错了,显示SqlHelper.ExecuteDataset无法生成DATASETTABLE,加上后面的那个就好了,还有怎么检查SqlHelper.ExecuteDataset方法啊,,也不怪老板要炒我,我也真是太菜了,
而你传入的TextBox1.Text和TextBox2.Text都是字符串,类型肯定不一样
你先转换一下看看
要判断date1.text是不是正常的时间类型 可以加个正则表达式验证
{
convert.todatetime(TextBox1.Text.trim());
convert.todatetime(TextBox2.Text.trim());
DataTable td =GetCustSaleS(TextBox1.Text,TextBox2.Text);
WebGrid1.DataSource = td.DefaultView;
WebGrid1.DataBind();
}
这样写出错了,哪错了,请大家帮改一改,
convert.todatetime(Date1.trim());
convert.todatetime(Date2.trim());
select A.CSCustNo,B.CustShortName,C.AccWayName,A.CSSumMoney,A.CSSumDiscMoney,
A.CSSumMoney-A.CSSumDiscMoney as SumReceiveMoney,
A.CSConfirm,A.CSCancel,A.CSCode
from DigitCustSaleM A INNER JOIN DigitCust B ON A.CSCustNo
=B.CustNo INNER JOIN DigitAccWay C ON A.CSAccWayNo=C.AccWayNo
where (A.CSDate>=@Date1) AND (A.CSDate<=@Date2)
RETURN这是在存储过程里改的,也显示语法出错,应该怎么改啊,
GO
无语中
存储过程不用改
这里改成private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
DataTable td =GetCustSaleS(convert.todatetime(TextBox1.Text.trim()),convert.todatetime(TextBox2.Text.trim()));
WebGrid1.DataSource = td.DefaultView;
WebGrid1.DataBind();
}
CREATE PROCEDURE dbo.web_CustSaleSearch @Date1 varchar(36),@Date2 varchar(36)AS
declare @a1 datetime,@a2 datetime
set @a1 = cast(@Date1 as datetime)
set @a2 = cast(@Date2 as datetime)比较的时候比较@a1和@a2。
declare @a1 datetime,@a2 datetime
set @a1 = cast(@Date1 as datetime)
set @a2 = cast(@Date2 as datetime
select A.CSCustNo,B.CustShortName,C.AccWayName,A.CSSumMoney,A.CSSumDiscMoney,
A.CSSumMoney-A.CSSumDiscMoney as SumReceiveMoney,
A.CSConfirm,A.CSCancel,A.CSCode
from DigitCustSaleM A INNER JOIN DigitCust B ON A.CSCustNo
=B.CustNo INNER JOIN DigitAccWay C ON A.CSAccWayNo=C.AccWayNo
where (@a1>=@Date1) AND (@a2<=@Date2)
RETURN我改成这样了,它显示语法出错啊,是SELECT附近
那个 ‘-’ 啥意思?
这样吧?
A.CSSumMoney-A.CSSumDiscMoney as SumReceiveMoney,
A.CSConfirm,A.CSCancel,A.CSCode
from DigitCustSaleM A,DigitCust B,DigitAccWay C
where A.CSCustNo=B.CustNo and A.CSAccWayNo=C.AccWayNo and (A.CSDate>=@a1) and A.CSDate<=@a2)
这样呢?
右括号没有
修改成
cast(@Date2 as datetime)
和
A.CSDate>=@a1 and A.CSDate<=@a2
convert.todatetime(Date1.trim());
convert.todatetime(Date2.trim());
select A.CSCustNo,B.CustShortName,C.AccWayName,A.CSSumMoney,A.CSSumDiscMoney,
A.CSSumMoney-A.CSSumDiscMoney as SumReceiveMoney,
A.CSConfirm,A.CSCancel,A.CSCode
from DigitCustSaleM A INNER JOIN DigitCust B ON A.CSCustNo
=B.CustNo INNER JOIN DigitAccWay C ON A.CSAccWayNo=C.AccWayNo
where (A.CSDate>=@Date1) AND (A.CSDate<=@Date2)
RETURN郁闷~~~什么数据库的存储过程支持.NET了?
我终于明白为什么老板说要炒你了?
{
convert.todatetime(TextBox1.Text.trim());
convert.todatetime(TextBox2.Text.trim());
DataTable td =GetCustSaleS(TextBox1.Text,TextBox2.Text);
WebGrid1.DataSource = td.DefaultView;
WebGrid1.DataBind();
}GetCustSaleS()中的参数是不是DateTime类型的啊?
如果是的话,你得这样写DataTable td =GetCustSaleS(Convert.ToDatetime(TextBox1.Text.Trim()),Convert.ToDatetime(TextBox2.Text.Trim()));
declare @a1 datetime,@a2 datetime
set @a1 = cast(@Date1 as datetime)
set @a2 = cast(@Date2 as datetime //少了半边括号?
select A.CSCustNo,B.CustShortName,C.AccWayName,A.CSSumMoney,A.CSSumDiscMoney,
A.CSSumMoney-A.CSSumDiscMoney as SumReceiveMoney,
A.CSConfirm,A.CSCancel,A.CSCode
from DigitCustSaleM A INNER JOIN DigitCust B ON A.CSCustNo
=B.CustNo INNER JOIN DigitAccWay C ON A.CSAccWayNo=C.AccWayNo
where (@a1>=@Date1) AND (@a2<=@Date2) //@Date1和Date2改成@a1和@a2
RETURN我改成这样了,它显示语法出错啊,是SELECT附近
把你修改后的贴出来看下。如果存储过程好用了,在后台代码里这样写运行存储过程的Sql语句。不用那个加参数的SqlCOMMAND对象,直接返回SqlDataReader对象或者用适配器填充DataSet
打个比方
string strsql = "exec web_CustSaleSearch ‘" + TextBox1.Text + "','" + TextBox2.Text + "'";
鏈嶅姟鍣ㄥ簲鐢ㄧ▼搴忎笉鍙敤
鎮ㄨ瘯鍥惧湪姝?Web 鏈嶅姟鍣ㄤ笂璁块棶鐨?Web 搴旂敤绋嬪簭褰撳墠涓嶅彲鐢ㄣ€傝鐐瑰嚮 Web 娴忚鍣ㄤ腑鐨勨€滃埛鏂扳€濇寜閽噸璇曟偍鐨勮姹傘€? 绠$悊鍛樻敞鎰忎簨椤? 璇﹁堪姝ょ壒瀹氳姹傚け璐ュ師鍥犵殑閿欒淇℃伅鍙湪 Web 鏈嶅姟鍣ㄧ殑绯荤粺浜嬩欢鏃ュ織涓壘鍒般€傝妫€鏌ユ鏃ュ織椤逛互鏌ユ槑瀵艰嚧璇ラ敊璇彂鐢熺殑鍘熷洜銆? 而其他的表全部都显示正常,
我再用一个WEBGRID和一个按钮经过不带参数不条件的存储过程连接数据库,开始也同样显示上面的乱码,后来我把那个表去掉了,然后就显示成功了,,
那为什么那个表显示乱码呢,是表的错误还是其他地方的错误呢
用SELECT * FORM 表名,运行时就会出现上面的那些乱码,而用
SELECT TOP 200 * FROM 表名,就会正常显示数据,,,是什么原因呢
那个表的确是非常大,有四万多条记录呢,