delphi中如何得到SQL表中记录总数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中如何得到SQL表中记录总数?相关的知识,希望对你有一定的参考价值。

sql语句如下:
select count(*) as record_count from table1;
现在在delphi中想引用那个record_count的值该如何写呢?

参考技术A 如果直接用select * from table1,可以用查询控件的reccount属性得到记录总数,对于你的语句,可以用查询的fieldbyname('record_count').asinteger得到整型的,.asstring得到字符串型的,根据使用要求来定
Fields[0].AsInteger
取查询的第一个字段的值
fields【字段名】也行
fieldbyname 和 fields 各有优劣 字段少时用fields,多的时候fields效率低些
参考技术B 如果直接用select * from table1,可以用查询控件的reccount属性得到记录总数,对于你的语句,可以用查询的fieldbyname('record_count').asinteger得到整型的,.asstring得到字符串型的,根据使用要求来定 参考技术C Fields[0].AsInteger 参考技术D label1.caption:=adoquery1.fieldbyname('record_count').asstring本回答被提问者采纳

如何从两个表中获取总数并使用该值进行计算? (sql, asp)

【中文标题】如何从两个表中获取总数并使用该值进行计算? (sql, asp)【英文标题】:How to get total from two tables and use the value for calculations? (sql, asp) 【发布时间】:2015-12-19 00:13:20 【问题描述】:

我想查找当前日期过去一周内 tblCreatedItems 和 tblInventory 中的总数。 tblCreatedItems 的总计显示得非常好。但是 tblInventory 的那个根本不显示。

我的桌子是: tblItem(项目 ID、项目名称、价格) tblCreatedItems(ItemID,数量) tblInventory(成分名称、价格、数量)

目前这是我的代码:

<% dim Con,rs, sql

set con = server.CreateObject("ADODB.Connection")
set rs = server.CreateObject("ADODB.Recordset")

Con.Open("DRIVER=Microsoft Access Driver (*.mdb, *.accdb); DBQ=" & Server.MapPath("Database/Name.accdb"))

sql = "SELECT  tblItem.Price, tblCreatedItems.Quantity, tblCustomer.OrderDate, Price InventoryPrice FROM tblCreatedItems,tblInventory, tblItem, tblCustomer WHERE tblCustomer.OrderDate BETWEEN Date() AND Date()-6 AND tblItem.ItemID=tblCreatedItems.ItemID AND tblCustomer.CustomerID=tblCreatedItems.CustomerID"

rs.open sql, Con
%>
<form name="InsertFinancialInformation" method="post" action="">
    <table class="Table" align="center" >
        <th colspan="4">Financial Information Entry</th>
        <tr><td colspan="4" bgcolor="#999999">Cost of Sales:</td></tr>
        <tr>
            <td>Opening Stock</td> 
            <td>Purchases</td>
            <td>Gross Profit</td>
        </tr>
        <tr>
        <%while not rs.eof%>
            <%
                dim Total

                Total = Total + (rs("Price")*rs("Quantity"))
            %>
            <% rs.movenext
               wend
            %>
            <td><input type="text" name="" value="<%response.write(Total)%>"/></td> 
            <td><input type="text" name="" value="
<%while not rs.eof%>
            <%
                dim InventoryTotal

                InventoryTotal = InventoryTotal + (rs("tblInventory.Price")*rs("tblInventory.Quantity"))
            %>
            <% rs.movenext
               wend
            %>
<%response.write(InventoryTotal)%>"/></td>
            <td><%response.write(Total-InventoryTotal)%></td>
</form>

【问题讨论】:

您的查询似乎根本不涉及 tblInventory。 可怕的表结构,考虑重组它们。出于某种原因,它被称为关系数据库管理系统(RDMS) 这两张表是用来存储的。所以主系统中不需要的任何信息在使用后都复制到这里。并且 ItemID 是 tblCreatedItems 中的 FK 哇,原来的问题中有一块拼图会很好。 【参考方案1】:

您的第一个循环正在遍历记录集,直到结束。然后你的第二个循环尝试做同样的事情。但是记录集已经在末尾,所以没有任何记录可以循环。您需要在第二个循环之前重新查询数据库或使用 rs.movefirst (我不太确定这是否是经典 asp 的有效命令)。

【讨论】:

是的,我刚才试过了,但它循环的次数超出了它应该循环的次数。所以它对另一个表中的每个项目都重复了。例如,表 1 有 6 条记录,表 2 将循环 6 次 那将是您的 SQL。看起来您正在一些表之间匹配 id,但不是库存表。这可能就是你呈指数循环的原因。 库存是每个单独的成分,所以我如何才能将它与不同的表相匹配。这张桌子不喜欢另一张桌子。我正在匹配 id 以从另一个表中获取该表中项目的信息。 您需要以某种方式构建一个查询,将您的库存表与客户表中的 OrderDate 链接起来。在建议实际查询之前,我们需要有关您的数据库架构的更多信息。

以上是关于delphi中如何得到SQL表中记录总数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从两个表中获取总数并使用该值进行计算? (sql, asp)

一条sql语句实现分页查询,且能返回记录总数

Firestore - 如何像我们在sql中所做的那样获取集合中的记录总数[重复]

如何显示每周发生并满足某些条件的记录总数 SQL

abap 如何得到内表中不重复的记录。

delphi中如何实现对sql数据库记录进行添加,删除,修改