注册 登录
编程论坛 ASP.NET技术论坛

请教 SqlDataSource 查询字段太多如何分行书写

taihongbo 发布于 2010-08-19 19:59, 1752 次点击

<asp:SqlDataSource runat="server" ID="SqlDataSource1"

    SelectCommand=" SELECT A.[参数A], A.[时间], A.[受理人], A.[运单号], A.[起点], A.[终点], A.[中转地], A.[提货方式], A.[收货单位], A.[收货电话], A.[收货地址], A.[发货单位], A.[发货电话], A.[发货地址], A.[开户行], A.[账号], A.[开户人], A.[货物], A.[编号], A.[包装], A.[数量], A.[数量单位], A.[重量], A.[重量单位], A.[体积], A.[体积单位], A.[单价], A.[保额], A.[备注],A.[运输协议], B.[日期A], B.[制单A], B.[标志A], B.[状态A], B.[部门A], B.[备注A],  B.[日期B], B.[制单B], B.[标志B], B.[状态B], B.[部门B], B.[备注B] FROM [B1_货物信息] As A Left join B1_作业信息 As B On A.参数A=B.参数A  Where  B.日期A>=@日期1 And B.日期A<=@日期2 And B.部门A=@部门A And B.状态='发货端当日结算' ORDER BY B.日期A , A.运输协议 , A.运单号 DESC "
                     
    ConnectionString="<%$ ConnectionStrings:E_Office2000ConnectionString %>">
 
    <SelectParameters>
        <asp:SessionParameter Name="日期1" SessionField="DateFrom" Type="String" />
        <asp:SessionParameter Name="日期2" SessionField="DateToto" Type="String" />
        <asp:SessionParameter Name="部门A" SessionField="UserBmMc" Type="String" />
    </SelectParameters>
   
</asp:SqlDataSource>


--------标注红颜色的查询语句 想 写成

    SelectCommand=" SELECT A.[参数A], A.[时间], A.[受理人], A.[运单号], A.[起点], A.[终点], A.[中转地],
                           A.[提货方式], A.[收货单位], A.[收货电话], A.[收货地址], A.[发货单位], A.[发货电话],
                           A.[发货地址], A.[开户行], A.[账号], A.[开户人], A.[货物], A.[编号], A.[包装], A.[数量],
                           A.[数量单位], A.[重量], A.[重量单位], A.[体积], A.[体积单位], A.[单价], A.[保额], A.[备注], A.[运输协议],
                           B.[日期A], B.[制单A], B.[标志A], B.[状态A], B.[部门A], B.[备注A],  
                           B.[日期B], B.[制单B], B.[标志B], B.[状态B], B.[部门B], B.[备注B]
                   FROM [B1_货物信息] As A
                   Left join B1_作业信息 As B
                   On A.参数A=B.参数A  
                   Where  B.日期A>=@日期1 And B.日期A<=@日期2 And B.部门A=@部门A And B.状态='发货端当日结算'
                   ORDER BY B.日期A , A.运输协议 , A.运单号 DESC
                  "
这样看起来直观一些
但是 设计 源 状态 不可以

我想知到 换行 续写 符号 是什么?

谢谢!






9 回复
#2
bygg2010-08-19 21:55
程序代码:
SelectCommand=" SELECT A.[参数A], A.[时间], A.[受理人], A.[运单号], A.[起点], A.[终点], A.[中转地], "
                           + "A.[提货方式], A.[收货单位], A.[收货电话], A.[收货地址], A.[发货单位], A.[发货电话], "
                           + "A.[发货地址], A.[开户行], A.[账号], A.[开户人], A.[货物], A.[编号], A.[包装], A.[数量],"
                           + "A.[数量单位], A.[重量], A.[重量单位], A.[体积], A.[体积单位], A.[单价], A.[保额], A.[备注], A.[运输协议], "
                           + "B.[日期A], B.[制单A], B.[标志A], B.[状态A], B.[部门A], B.[备注A],  "
                           + "B.[日期B], B.[制单B], B.[标志B], B.[状态B], B.[部门B], B.[备注B] "
                   + "FROM [B1_货物信息] As A "
                   + "Left join B1_作业信息 As B "
                   + "On A.参数A=B.参数A  "
                   + "Where  B.日期A>=@日期1 And B.日期A<=@日期2 And B.部门A=@部门A And B.状态='发货端当日结算'"
                   + "ORDER BY B.日期A , A.运输协议 , A.运单号 DESC "
         

#3
冰镇柠檬汁儿2010-08-19 22:20
这么长的SQL语句啊,建议楼主用StringBuilder拼接SQL语句,或者干脆写成存储过程
#4
Mark_hong2010-08-20 15:39
回复 楼主 taihongbo
SelectCommand=@" SELECT A.[参数A], A.[时间], A.[受理人], A.[运单号], A.[起点], A.[终点], A.[中转地],
                           A.[提货方式], A.[收货单位], A.[收货电话], A.[收货地址], A.[发货单位], A.[发货电话],
                           A.[发货地址], A.[开户行], A.[账号], A.[开户人], A.[货物], A.[编号], A.[包装], A.[数量],
                           A.[数量单位], A.[重量], A.[重量单位], A.[体积], A.[体积单位], A.[单价], A.[保额], A.[备注], A.[运输协议],
                           B.[日期A], B.[制单A], B.[标志A], B.[状态A], B.[部门A], B.[备注A],  
                           B.[日期B], B.[制单B], B.[标志B], B.[状态B], B.[部门B], B.[备注B]
                   FROM [B1_货物信息] As A
                   Left join B1_作业信息 As B
                   On A.参数A=B.参数A  
                   Where  B.日期A>=@日期1 And B.日期A<=@日期2 And B.部门A=@部门A And B.状态='发货端当日结算'
                   ORDER BY B.日期A , A.运输协议 , A.运单号 DESC
                  "
“SelectCommand=”后加上@就可以了。
#5
bygg2010-08-20 15:45
Mark_hong的方法更方便,呵呵。
不过这么长的sql语句,用存储过程最好。
#6
wzlz2010-08-21 10:10
同意4楼道意见,在“……”之前加@符号即可
#7
yms1232010-08-21 16:18
不知道要查询什么,这么长的SQL语句?两个表联合查询也好像没必要写这么多字段吧?如果字段确实是这两个表全部的字段的话。
#8
Sha_12242010-08-22 18:10
同意3楼的方法,用tringBuilder拼接字符串和用存储过程,还可以创建视图再查询视图!
仅供参照:
public int UpdateABook(Books book)
         {
          StringBuilder sql = new StringBuilder();
            sql.Append("update Books  set [Title]=@title");
            sql.Append(",[Author]=@author,[PublisherId]=@publisherId");
            sql.Append(",[PublishDate]=@publishDate,[ISBN]=@iSBN,[WordsCount]=@wordsCount");
            sql.Append(",[UnitPrice]=@unitPrice,[ContentDescription]=@ContentDes,[AurhorDescription]=@autorDes");
            sql.Append(",[EditorComment]=@editComm,[TOC]=@tOC,[CategoryId]=@cateId,[Clicks]=@clicks ");
            sql.Append (" where  Id=@bookId");


            SqlParameter[] param = new SqlParameter[]{
                new SqlParameter("@bookId",book .Id),
                new SqlParameter("@title",book .Title ),
                new SqlParameter("@author",book.Author),
                new SqlParameter("@publisherId",book.Publisher.Id),
                new SqlParameter("@publishDate",book .PublishDate),
                new SqlParameter("@iSBN",book.ISBN),
                new SqlParameter("@wordsCount",book.WordCount),
                new SqlParameter("@unitPrice",book.UnitPrice),
                new SqlParameter("@ContentDes",book.ContentDescription),
                new SqlParameter("@autorDes",book.AurhorDescription),
                new SqlParameter("@editComm",book.EditorComment),
                new SqlParameter("@tOC",book.TOC),
                new SqlParameter("@cateId",book.Category.Id),
                new SqlParameter("@clicks",book.Clicks)
         };

            return SqlHelper.ExecuteSql(sql .ToString (),param);
    }

[ 本帖最后由 Sha_1224 于 2010-8-22 18:13 编辑 ]
#9
Issac_abc2010-08-28 09:50
最好用存储过程:同意四楼。
1