Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ASP查询返回_Asp.net_Sql - Fatal编程技术网

Asp.net ASP查询返回

Asp.net ASP查询返回,asp.net,sql,Asp.net,Sql,我有这个ASP页面。我正在尝试显示metalquery的结果,列出所有订单号。当我现在这样做时,它只显示第一个订单号。是否有方法显示查询中的所有订单号 <%@ Page Language="C#" Debug="true" %> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data.Odbc" %> <!DOCTYPE html PUBLIC "-//W3C//DTD

我有这个ASP页面。我正在尝试显示metalquery的结果,列出所有订单号。当我现在这样做时,它只显示第一个订单号。是否有方法显示查询中的所有订单号

<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data.Odbc" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<!-- webkit5 includes --!>
<!-- <meta content="yes" name="apple-mobile-web-app-capable" /> --!>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="minimum-scale=1.0, width=device-width, maximum-scale=0.6667, user-scalable=no" name="viewport" />
<link href="css/style.css" rel="stylesheet" media="screen" type="text/css" />
<script src="javascript/functions.js" type="text/javascript"></script>
<title>Open Inkjet Orders</title>
<meta content="keyword1,keyword2,keyword3" name="keywords" />
<meta content="Description of your page" name="description" />
</head>

<body>
<div id="topbar" class="transparent">
    <div id="leftnav">
        <a href="Home.aspx">
            <img alt="home" src="images/home.png">
        </a>
        <a href="OpenOrders.aspx">Open Orders</a>
    </div>
</div>

<div id="content">
<%
OdbcConnection cn;
OdbcCommand cmd;

String canvasQuery = "select count(distinct(info.orderid)) from orderinfo info, orderiteminfo item where info.orderstatus = 'Open' and info.orderid = item.orderid and item.deptcode in (35) and info.duedate = DATE(NOW())";
String wallWrapQuery = "select count(distinct(info.orderid)) from orderinfo info, orderiteminfo item where info.orderstatus = 'Open' and info.orderid = item.orderid and item.deptcode in (41) and info.duedate = DATE(NOW())";
String fineartQuery = "select count(distinct(info.orderid)) from orderinfo info, orderiteminfo item where info.orderstatus = 'Open' and info.orderid = item.orderid and item.deptcode in (03) and info.duedate = DATE(NOW())";
String metalQuery = "select distinct(info.orderid) from orderinfo info, orderiteminfo item where info.orderstatus = 'Open' and info.orderid = item.orderid and item.deptcode in (48) and info.duedate = DATE(NOW())";

int canvasOpen, wallWrapOpen, fineartOpen, metalOpen;


cn= new OdbcConnection("dsn=xxxx;UID=xxxx;PWD=xxxx");

cmd=new OdbcCommand(canvasQuery,cn);
cn.Open();
OdbcDataReader DbReader = cmd.ExecuteReader();

DbReader.Read();
canvasOpen = DbReader.GetInt32(0);

cmd=new OdbcCommand(wallWrapQuery,cn);
DbReader = cmd.ExecuteReader();
DbReader.Read();
wallWrapOpen = DbReader.GetInt32(0);

cmd=new OdbcCommand(fineartQuery,cn);
DbReader = cmd.ExecuteReader();
DbReader.Read();
fineartOpen = DbReader.GetInt32(0);

cmd=new OdbcCommand(metalQuery,cn);
DbReader = cmd.ExecuteReader();
DbReader.Read();
metalOpen = DbReader.GetInt32(0);

DbReader.Close();
cn.Close();

%>
    <span class="graytitle">Due Inkjet Orders</span>
        <ul class="pageitem">
            <li class="menu">

                    <span class="name">Canvas Dept: <%=canvasOpen%></span>

            </li>
            <li class="menu">
                <span class="name">Wall Cling Dept: <%=wallWrapOpen%></span>
            </li>
            <li class="menu">
                    <span class="name">Fine Art Dept: <%=fineartOpen%></span>
            </li>
            <li class="menu">
                    <span class="name">Metal Dept: <%=metalOpen%></span>
            </li>
            <li>
            </li>
        </ul>
</div>
</body>

</html>


必须一直调用Read()方法,直到它返回false

每个Read()调用只返回一条记录

试试这个:

while(DbReader.Read())
{
   metalOpen = DbReader.GetInt32(0);

%>
    <span class="graytitle">Due Inkjet Orders</span>
        <ul class="pageitem">
           <li class="menu">
                <span class="name">Canvas Dept: <%=canvasOpen%></span>
            </li>
            <li class="menu">
                <span class="name">Wall Cling Dept: <%=wallWrapOpen%></span>
            </li>
            <li class="menu">
                <span class="name">Fine Art Dept: <%=fineartOpen%></span>
            </li>
            <li class="menu">
                <span class="name">Metal Dept: <%=metalOpen%></span>
            </li>
            <li>
        </li>
        </ul>
    </span>
%>
}
DbReader.Close();
cn.Close();
while(DbReader.Read())
{
metalOpen=DbReader.GetInt32(0);
%>
到期喷墨订单
  • 帆布部:
  • 贴墙部:
  • 美术系:
  • 金属部:
%> } DbReader.Close(); cn.Close();
您需要添加一个循环来读取多条记录(并将metalOpen更改为
列表来存储多个值:

List<int> metalOpen = new List<int>();
cmd=new OdbcCommand(metalQuery,cn);
DbReader = cmd.ExecuteReader();
while(DbReader.Read())
{
   metalOpen.Add(DbReader.GetInt32(0));
}
List metalOpen=new List();
cmd=新的OdbcCommand(metalQuery,cn);
DbReader=cmd.ExecuteReader();
while(DbReader.Read())
{
metalOpen.Add(DbReader.GetInt32(0));
}
然后决定如何显示它们-最简单的方法是显示逗号分隔的列表:

        <li class="menu">
                <span class="name">Metal Dept: <%=string.Join(", ",metalOpen)%></span>
        </li>
  • 金属部:

  • 以下查询位于代码块的开头,指定一个查询,该查询可能返回零条、一条或多条记录,更准确地说是
    orderid
    字段:

    String metalQuery = "select distinct(info.orderid) from orderinfo info, orderiteminfo item where info.orderstatus = 'Open' and info.orderid = item.orderid and item.deptcode in (48) and info.duedate = DATE(NOW())";
    
    此块正在对源数据库执行此查询:

    cmd=new OdbcCommand(metalQuery,cn);
    DbReader = cmd.ExecuteReader();
    
    现在,您需要迭代每个结果。您可以通过使用
    .Read()
    方法来完成此操作。最妙的是,
    .Read()
    可以在结果集中有记录的情况下使用

    然后,您可以将
    .Read()
    迭代封装到While块上:

    while(DbReader.Read())
    {
        //Here goes your code
    }
    
    在您的情况下,它可能如下所示:

    while(DbReader.Read())
    {
        metalOpen = DbReader.GetInt32(0);
    %>
        <span class="name">Metal Dept: <%=metalOpen%></span>
    <%
    }
    
    while(DbReader.Read())
    {
    metalOpen=DbReader.GetInt32(0);
    %>
    金属部:
    
    您考虑在dbReader中循环浏览记录,而不是只显示第一个记录?您只显示1个值,因为这是您从代码中获得的全部内容。我建议使用一个转发器或某种ASP.NET控件,可以通过数据绑定显示查询结果。