我想自动生成这种格式的账单编号 (INV1/23) 并且它必须以 1 递增

2024-06-19

我想以这种格式(INV1/23)自动生成帐单号码,而不使用oracle apex中的序列。请在plsql中编写查询。

我在此过程中使用了序列,但它对此不起作用。 它必须以表格形式显示在交互式报告上。就像当我输入有关账单的数据(例如订单号、订单日期、信用条款、信用天数和备注)时,它应该以我给定的格式自行生成。


仅生成发票号码的代码并不是解决方案。你很快就会遇到问题。

通过查看最后一个发票号码(而不是序列)来动态生成发票号码的一个问题是冲突。用户 1 打开表单,代码检查最后一个发票号码 (INV1/23) 并生成一个新发票号码 - 比如说 INV2/23。现在,用户 2 在另一个会话中打开该表单。该代码将生成相同的 INV2/23,因为最后保存的值是 INV1/23,然后当第二次使用保存时...将出现唯一约束违规。 我的建议是创建一个表,其中包含您想要的格式的生成发票号码(您的要求太模糊,无法为您提供代码),并使用一些代码来决定下一个要提取的号码,因此每个值仅使用一次。这还允许您重复使用孤立值(例如,当使用发票编号但随后交易被取消时)。我建议观看this https://www.youtube.com/watch?v=B5JltFoe5Ho来自 Connor 的视频解释了我刚才描述的解决方案。它适用于序列,但您可以对发票编号使用相同的逻辑。

这是代码。

create table invoice_numbers (
    id                             number generated by default on null as identity 
                                   constraint invoice_numbers_id_pk primary key,
    seq                            number,
    invoice_year                   number,
    state                          varchar2(10 char),
    invoice_num                    as ('INV'||seq||'/'||SUBSTR(invoice_year,3,2))

)
;

DECLARE
BEGIN
  FOR i IN 1..100 LOOP
    INSERT INTO invoice_numbers (seq,invoice_year, state) 
      values (i,2023,'free');
  END LOOP;
END;
/

select * from invoice_numbers;

CREATE OR REPLACE FUNCTION next_invoice_number (year_i NUMBER) RETURN VARCHAR2
IS
  l_invoice_num VARCHAR2(100);
  l_id NUMBER;
  CURSOR next_invoice_num IS
    SELECT invoice_num, id 
      FROM invoice_numbers
     WHERE invoice_year = year_i
       AND state = 'free'
       ORDER BY seq 
       FOR UPDATE SKIP LOCKED;       
BEGIN
  OPEN next_invoice_num;
  FETCH next_invoice_num INTO l_invoice_num, l_id;
  CLOSE next_invoice_num;
  UPDATE invoice_numbers SET state = 'used' WHERE id = l_id;
  RETURN l_invoice_num;
END;
/

然后在您的 apex 表单中,使用源(pl/sql 表达式)创建发票编号的提交前计算

next_invoice_number(extract (year from sysdate))

请注意,您应该只在提交之前计算发票号码 - 如果在表单上完成,则发票号码将被标记为“已使用”。因此,如果用户随后关闭屏幕而不保存发票,您将丢失该号码。

请注意,您每年都需要一些代码来填充invoice_numbers 表,并需要一些代码来检查您是否没有用完数字。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我想自动生成这种格式的账单编号 (INV1/23) 并且它必须以 1 递增 的相关文章

  • 如何添加可以在我的生命游戏程序中获得生成的功能?

    我试图让我的程序显示 首先在控制台中测试 单元格改变其形式的每个步骤的计数 因此计数应该从 0 开始 并在每次单元格改变其形式时递增 我尝试了这个 使用 count 但它不会增加 1 而是给我随机数 任何帮助都感激不尽 import jav
  • 如何在foreach循环中增加一个数字?

    我想从数据库中获取一些数据并以 HTML 表格的形式显示 我希望表格的第一列显示行数 例如 1 2 3 4 这是我的 foreach 循环 i 0 foreach sql as sql echo tr echo td i td echo t
  • 程序生成 3000 个正方形

    我需要构建一个包含 3000 个正方形的小部件 手动执行此操作会花费很长时间 也许你们中的一些人知道生成 square 类 3000 次的最简单方法 我还需要能够改变每个方块的内容 例如颜色 标题等 谢谢朋友 div class squar
  • python 列表元素明智条件增量

    我已经搜索了一段时间了 基本上我正在尝试按元素有条件地按另一个列表增加一个元素列表 我的代码如下 但是有更好的方法吗 列表理解 地图 我认为像 这样的逐元素运算符来自http www python org dev peps pep 0225
  • 使用loopback.js和MongoDB自动增量

    我想使用环回自动增加 mongodb 文档数量 我在mongo中做了函数 function getNextSequence name var ret db counters findAndModify query id name updat
  • 为什么我们不能递增 (++) 或递减 (--) 数字文字

    例如 在下面的 JavaScript 代码中 为什么我们在使用变量时不会收到错误 但在使用数字文字时却收到错误 在节点 v6 9 5 上运行 let x 2 console log x 2 let y 2 console log y 3 c
  • spring data couchbase中的id是如何自动生成的?

    我想在 spring data couchbase 中为我的文档创建 ID 自动生成 Spring 文档对此有步骤 https docs spring io spring data couchbase docs current refere
  • Oracle Apex - REST 数据源 - 嵌套 JSON 数组 - 同步两个表 - 在哪里编写 SQL

    这个问题是后续问题另一个问题 https stackoverflow com questions 75183126 oracle apex 22 21 rest data source nested json array discovery
  • Oracle Apex 22.21 - REST 数据源 - 嵌套 JSON 数组 - 通过触发器同步两个表 - PLSQL 错误问题

    这个问题是后续问题另一个问题 https stackoverflow com questions 75192510 oracle apex rest data source nested json array sync two tables
  • Google表格公式中的数字增量

    在 Google Sheets 数据库中 我建立了一个公式 以便为一系列公司分配参考号 每个公司都应该有其唯一的编号 其形式为RET00XX其中 XX 代表唯一的公司编号 我希望这些数字是连续的 从 1 开始 然后继续 1 每当在数据库中插
  • 用字母递增字符串?

    我需要从 增加一个字符串aaa to zzz并在控制台中写下每个增量 增量是一个词吗 事情会是这样的 aaa aab aac aaz aba abb abc abz aca acb 等等 到目前为止 我已经通过这样做增加了一个字母 Stri
  • C++:计算游戏中的总帧数

    不是一个很好的标题 但我不知道该起什么名字 无论如何 我正在计算游戏中的总帧数 这样我就可以计算平均 FPS long int 万一游戏持续很长时间 我该怎么做才能确保我的long int不会增加超过其限制吗 如果超过极限会发生什么 Tha
  • ORA-01403: 在 Oracle APEX 中使用主从 IG 时未找到数据

    在 Oracle APEX 5 1 中 我有一个交互式网格主详细信息页面 以下一系列步骤 用户有时会执行 会创建未处理的异常 ORA 01403 未找到数据 用户在主部分中创建无效记录 并在详细部分中创建相应记录 用户尝试保存 行处理 并由
  • C# 和 C++ 中 ++i 运算符的区别

    我用 C 和 C 编写了以下代码 int i 0 i 11 此 C 编译器出现错误后 The left hand side of an assignment must be a variable property or indexer 但是
  • 三个不同表的内连接

    我在 Oracle APEX 工作 我想从三个不同的表中生成报告 患者 病史 治疗 通过INNER JOIN 表格如下 患者 Par Id Pk Pat Name Pat Gender 历史记录 His Id Pk Pat id Fk Tr
  • Oracle Apex - REST 数据源 - 嵌套 JSON 数组 - 触发两个表 - 删除函数错误 ORA-04091

    这个问题是另一个问题的后续所以问题 https stackoverflow com questions 75219903 oracle apex rest data source nested json array trigger two
  • 如何使用增量值向 Pyspark 中的 DataFrame 添加列?

    我有一个名为 df 的 DataFrame 如下所示 Atr1 Atr2 Atr3 A A A B A A C A A 我想向其中添加一个具有增量值的新列并获取以下更新的 DataFrame Atr1 Atr2 Atr3
  • 需要同步仅增量计数器吗?

    我使用整数作为计数器 该整数只会增加 并且肯定有多个线程会同时增加它 当没有其他线程尝试访问其值时 在程序执行结束时读取该计数器的值 我假设我不必为这种仅增量计数器使用锁或任何类型的同步 这是正确的吗 如果这有什么区别的话 我用 Java
  • 如何从实体框架中的 .edmx 文件生成数据库?

    我不得不突然转而使用 Code First Entity Framework 4 1 一开始我对这个框架一无所知 但在过去的 8 个小时里 我现在对阅读博客和文章感到更加自在 特别是这个博客 http blogs msdn com b ad
  • 如何从 Javascript 访问 Oracle Apex 变量?

    我正在使用 Oracle APEX 但不确定如何从外部 javascript 文件访问以下变量 该文件可能位于应用程序服务器上或存储在共享组件 gt 静态文件中 APP ID APP PAGE ID APP SESSION 如何从 java

随机推荐

  • CakePHP 与 Lucene

    我正在尝试使用 cakephp 实现 Lucene 并遵循本指南http jamienay com 2010 01 zend search lucene datasource for cakephp http jamienay com 20
  • 基于 Web.Config 使用的 GAC 程序集版本

    Good Day 我有一个在 GAC 中使用自定义程序集的项目 为了能够使用它 我在中添加了对我的项目的引用 C WINDOWS Microsoft NET assembly GAC MSIL JOHN CommonLib v4 0 1 0
  • 使用 Python Win32Com.Client 发送电子邮件发送错误

    我有我的脚本通过 Python win32com client 在 Outlook 上发送消息 我可以创建电子邮件并格式化我的正文 但是当我尝试这样做时newmail Send 我收到一个我无法弄清楚的错误 下面是我的代码以及错误 obj
  • 什么是已弃用的推送转场? (iOS 8)[重复]

    这个问题在这里已经有答案了 我不知道在这种情况下已弃用意味着什么 我是编程新手 正在 Xcode 6 中制作我的前几个应用程序 今天我正在制作一个待办事项列表应用程序 当连接到用户可以输入新待办事项以添加到主表的场景时 我被邀请使用推送转场
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • 如何在Java 8中实现Elvis运算符?

    我有一个经典的 Elvis 运算符 案例 其中我调用每个可能返回 null 的方法并将它们链接在一起 thing nullableMethod1 a nullableMethod2 b nullableMethod3 在 Java 8 中
  • Django查询集基于外键值的特定顺序

    对于棒球网站 我有两个模型 位置模型和球员模型 位置被命名为投手 捕手 一垒 二垒 三垒等 class Position models Model name models CharField max length 100 slug mode
  • React-chartjs-2 圆环图导出为 png

    我使用react chartjs 2库创建了一个甜甜圈图和条形图 现在我想将此图表导出为 png 即在用户单击时将图表下载为 png 我尝试了很多方法但未能成功 其中之一是使用 html2canvas 库并获取屏幕截图 但这会降低图表的质量
  • mongodb从不同数据库中选择

    我有大约 200 个 mongodb 数据库 每个数据库都有一个名为 Group 的集合 在该集合中有一个名为 meldingId 的字段 是否可以进行一个 mongodb 查询来查找不同数据库中的所有值 我设法通过 selectDB da
  • 如何从 Cursor 获取行 ID

    如何从游标获取行 ID 我不认为 Cursor 直接暴露了这一点 SQLiteDatabase insert 返回新插入行的行 ID 或者在 Android 中 惯例是有一个名为 id 包含表的主自动增量键 所以cursor getLong
  • rxjs 主题应该在课堂上公开吗?

    假设我有两个类 您可以在其中观察一些可观察量 第一个例子 公共主题 class EventsPub public readonly onEnd new Subject
  • Pandas:将增量数字添加到一列的重复值的后缀,这些重复值按另一列的值分组并按索引排序

    我试图将下划线和增量数字添加到按索引排序的任何重复值以及由另一列定义的组内 例如 我希望 化学 列中的重复值具有下划线和增量数字 并按索引排序并按 循环 列分组 df pd DataFrame 1 1 1 1 1 1 2 2 2 2 2 2
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • Facebook edge.create 事件未在类似框上触发

    我有一个带有简单 Facebook 类似按钮的页面 我需要知道用户何时喜欢该页面 因此我使用 edge create 事件来执行此操作 一切正常 我现在需要向页面添加一个 Like Box 插件来给客户的 Facebook 页面点赞 并且当
  • 闪存应用程序的国际化

    我正在使用 Flash 应用程序 非 Flex 并且我想支持国际化 在flex中有一个很好的抽象ResourceManager 您可以在其中为每个语言环境提供资源包 动作脚本有等效的吗 怎么样全球化 http www servebox or
  • 设置 SWT Shell 的默认字体

    有没有办法为整个 Shell 设置默认字体 以便任何新控件都将使用相同的字体 看来现在我必须为我创建的每个控件设置字体 这导致了太多的冗余 默认使用的字体由平台选择 请参阅中的其他信息 类字体 SWT 标准小部件工具包 http book
  • 使用 C++ 访问 Azure blob 存储 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 AbstractTableModel 获取 JTable 中选定的行

    我有一个JTable using AbstractTableModel我在哪里有一个JCheckBox在第一列中用于选择行 现在 我需要从已检查的表中获取选定的行 现在 我按顺序从第一行遍历到最后一行并获取所有选择的行 如下所示 List
  • 我应该在 Promise.all 中使用 wait 吗?

    我正在构建快速中间件 以对数据库进行两次异步调用 以检查用户名或电子邮件是否已在使用中 这些函数返回的承诺没有捕获 因为我想将数据库逻辑与 req res next 逻辑分开 并且我有集中的错误处理 需要next作为一个论点 在我对本地环境
  • 我想自动生成这种格式的账单编号 (INV1/23) 并且它必须以 1 递增

    我想以这种格式 INV1 23 自动生成帐单号码 而不使用oracle apex中的序列 请在plsql中编写查询 我在此过程中使用了序列 但它对此不起作用 它必须以表格形式显示在交互式报告上 就像当我输入有关账单的数据 例如订单号 订单日