查询的时候数据类型不匹配狂郁闷啊~救命啊

蜗牛水里爬 2007-09-06 10:42:44
ACCESS数据中用的是短日期格式
OleDbConnection OleDbcon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + Server.MapPath(@"~\QiXin.mdb"));
try
{
DateTime MyDate1 = Convert.ToDateTime(this.TextBoxStartDate.Text.ToString());
DateTime MyDate2 = Convert.ToDateTime(this.TextBoxEndDate.Text.ToString());

string OleDbstr = "select * from DaoDaXieChe where RiQi between'" + MyDate1.ToString("yyyy-mm-dd") + "'and '" + MyDate2.ToString ("yyyy-mm-dd") + "' order by RiQi";
//string OleDbstr = "select * from DaoDaXieChe where RiQi between '2007-7-6' and '2007-8-5' order by RiQi";
//OleDbcon = new OleDbConnection(strCon);
OleDbDataAdapter myda = new OleDbDataAdapter(OleDbstr, OleDbcon);
DataSet myds = new DataSet();
OleDbcon.Open();
myda.Fill(myds);
this.GridView1.DataSource = myds;
this.GridView1.DataBind();

}
catch (Exception error)
{
Response.Write("<script>alert('您输入的时间格式有误,请输入****-**-**格式的日期')</script>");
this.TextBoxStartDate.Text = "处理失败!原因为:" + error.ToString();
}
finally
{
//关闭数据库连接
OleDbcon.Close();
}
...全文
164 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
把那个东西去掉MYDATE直接用TEXTBOX的数据就可以了
奇怪的问题啊
路人乙e 2007-09-06
  • 打赏
  • 举报
回复
看清获取的date格式要与数据库中一致
比较时间就是这样了
where date>#2000-2-5# and date<#2008-5-2#
  • 打赏
  • 举报
回复


string OleDbstr = "SELECT * FROM [DaoDaXieChe] WHERE (([RiQi] >= #" + MyDate1.ToShortDateString().ToString() + "#) AND ([RiQi] <= #" + MyDate2.ToShortDateString().ToString() + "#))";

再试




蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
就没别的办法了吗?
bbbbbb888888 2007-09-06
  • 打赏
  • 举报
回复
还是用varhcar类型的吧.access太弱,date更新容易出这样的错.
蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
改回去了啊
但是还是没有数据太郁闷了
这段前台自动生成的就可以查
<asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/QiXin.mdb"
SelectCommand="SELECT * FROM [DaoDaXieChe] WHERE (([RiQi] >= ?) AND ([RiQi] <= ?))">
<SelectParameters>
<asp:Parameter DefaultValue="2007-7-14" Name="RiQi" Type="DateTime" />
<asp:Parameter DefaultValue="2007-7-19" Name="RiQi2" Type="DateTime" />
</SelectParameters>
  • 打赏
  • 举报
回复



保证 开始日期小于结束日期,

date >= 小日期 and date <= 大日期



你把日期字段改回去,改成 日期/时间 类型




蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
不出错了但是为什么没数据呢?
  • 打赏
  • 举报
回复


或者 MyDate2.ToShortDateString().ToString()


  • 打赏
  • 举报
回复


ToString ("yyyy-mm-dd")


改成

ToString ("yyyy-MM-dd")
蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
处理失败!原因为:System.Data.OleDb.OleDbException: 日期的语法错误 在查询表达式 'RiQi >= #2007-00-10# and RiQi <= #2007-00-16#' 中。 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) 在 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) 在 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) 在 System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) 在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) 在 _Default.Button3_Click(Object sender, EventArgs e) 位置 d:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\日期查询\Default.aspx.cs:行号 49
蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
我刚把日期的数据类型改成文本了,可是查询不出错了,但没有数据
  • 打赏
  • 举报
回复



string OleDbstr = "select * from DaoDaXieChe where RiQi >= #" + MyDate1.ToString("yyyy-mm-dd") + "# and RiQi <= #" + MyDate2.ToString ("yyyy-mm-dd") + "# order by RiQi";

试试

fangliangone 2007-09-06
  • 打赏
  • 举报
回复
注意sql语句之间的空格
PCI_E 2007-09-06
  • 打赏
  • 举报
回复
o, 晚了,顶下
学习学习
蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
string OleDbstr = "select * from DaoDaXieChe where RiQi between'#" + MyDate1.ToString("yyyy-mm-dd") + "#'and '#" + MyDate2.ToString ("yyyy-mm-dd") + "#' order by RiQi";
还是不行呢
蜗牛水里爬 2007-09-06
  • 打赏
  • 举报
回复
完整SQL语句怎么写呢
  • 打赏
  • 举报
回复



注意那个 # 号


  • 打赏
  • 举报
回复



access 对于日期查询是有格式要求的

" and (Apply_Time >= #" + BeginTime + "# and Apply_Time <= #"+ EndTime +"#)";



62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧