数据格式字符串的问题

时间:2015-07-31 21:03:42

标签: asp.net vb.net sql-server-2008

好吧,我有这个.aspx代码:

<asp:GridView ID="GridView3" DataSourceID="test" runat="server" AutoGenerateColumns="False">
       <Columns>
               <asp:BoundField DataField="deuda" 
              HeaderText="deuda" ReadOnly="True"
              SortExpression="deuda" DataFormatString="{0:#,##0}" HtmlEncode="False" />
       </Columns>
</asp:GridView>

及其数据源有此查询:

set @lvl = 0;
set @saldo = 0;
WHILE @saldo &lt; (SELECT (80 * (sum(CASE WHEN a1.c11 &lt;&gt; 0 AND DATEADD(DAY, CONVERT(FLOAT(10), KDUD.C16), A1.C7) &lt; DATEADD(day, - 90, GETDATE())
 THEN ((a1.C17 / a1.C11) * a1.C20) END)) / 100) 
 FROM kdue a1 
 LEFT JOIN KDMM ON KDMM.C1 = 'U' AND A1.C3 = KDMM.C2 AND A1.C4 = KDMM.C3 AND A1.C5 = KDMM.C4 
 LEFT JOIN KDMS ON A1.C1 = KDMS.C1 
 LEFT JOIN KDUD ON A1.C2 = KDUD.C2 
 LEFT JOIN KDUV ON A1.C18 = KDUV.C2
  WHERE a1.c1 = '02-01') 
  BEGIN SET
   @saldo = @saldo + 
   (SELECT 
   sum(CASE WHEN a1.c11 &lt;&gt; 0 AND DATEADD(DAY, CONVERT(FLOAT(10), KDUD.C16), A1.C7) &lt; DATEADD(day, - 90, GETDATE()) THEN ((a1.C17 / a1.C11) * a1.C20) END) AS x
    FROM KDUE A1 
    LEFT JOIN KDMM ON KDMM.C1 = 'U' AND A1.C3 = KDMM.C2 AND A1.C4 = KDMM.C3 AND A1.C5 = KDMM.C4
     LEFT JOIN KDMS ON A1.C1 = KDMS.C1
      LEFT JOIN KDUD ON A1.C2 = KDUD.C2 
      LEFT JOIN KDUV ON A1.C18 = KDUV.C2
       WHERE a1.c1 = '02-01' GROUP BY kdud.c3 ORDER BY x DESC OFFSET @lvl ROWS FETCH NEXT 1 ROWS ONLY);
        SET @lvl = @lvl + 1 END 
        select replace(cliente,' ','')as cliente,replace(convert(varchar,round(p,0)),'.000000000','')as deuda from
(
SELECT TOP (@lvl) kdud.c3 as cliente, 
        (sum(CASE WHEN a1.c11 &lt;&gt; 0 THEN ((a1.C17 / a1.C11) * a1.C20) END)) AS p 
        FROM KDUE A1 
        LEFT JOIN KDMM ON KDMM.C1 = 'U' AND A1.C3 = KDMM.C2 AND A1.C4 = KDMM.C3 AND A1.C5 = KDMM.C4 
        LEFT JOIN KDMS ON A1.C1 = KDMS.C1 LEFT JOIN KDUD ON A1.C2 = KDUD.C2 
        LEFT JOIN KDUV ON A1.C18 = KDUV.C2 
        WHERE a1.c1 = '02-01' AND DATEADD(DAY, CONVERT(FLOAT(10), KDUD.C16), A1.C7) &lt; DATEADD(day, - 90, GETDATE()) 
        GROUP BY kdud.c3 ORDER BY p DESC)as x

返回名为deuda和cliente的2列,在我的Visual Basic 2013上的asp.net项目中我尝试使用向导将查询添加到数据源但是因为它添加了参数并且它们会弄乱我的查询我添加了手动 asp列并尝试应用数据格式字符串,但它只是忽略它... 数据源代码:

   <asp:SqlDataSource ID="test" runat="server" ConnectionString="<%$ ConnectionStrings:ServIndustrialConnectionString2 %>" SelectCommand="my query">

如何正确地将格式字符串应用于我的列?

1 个答案:

答案 0 :(得分:0)

好吧,我注意到我的asp代码没有任何问题,但在我的查询中,我将int值替换为varchar,这导致数据格式字符串出现故障,所以我改变了我的查询:

  replace(convert(varchar,round(p,0)),'.000000000','')as deuda from

到此:

 replace(int,replace(convert(varchar,round(p,0)),'.000000000',''))as deuda from