我正在将 BDE 查询(Paradox)转换为 Firebird(2.5,而不是 3.x),并且其中有一个非常方便的转换:
select TRIM(' 1') as order1, CAST(' 1' AS INTEGER) AS order2 --> 1
select TRIM(' 1 bis') as order1, CAST(' 1 bis' AS INTEGER) AS order2 --> 1
Run Code Online (Sandbox Code Playgroud)
然后按转换值排序,然后修剪值(ORDER order2,order1)为我提供我需要的结果:
1
1 bis
2 ter
100
101 bis
Run Code Online (Sandbox Code Playgroud)
然而,在 Firebird 中,转换错误的整数会引发异常,并且我没有找到任何方法来提供相同的结果。我想我可以判断一个数字是否存在,如下所示,但我找不到提取它的方法。
TRIM(' 1 bis') similar to '[ [:ALPHA:]]*[[:DIGIT:]]+[ [:ALPHA:]]*'
Run Code Online (Sandbox Code Playgroud)
[编辑]
我必须处理文本在数字之前的情况,因此使用@Arioch'The 的触发器,我运行得很好:
SET TERM ^ ;
CREATE TRIGGER SET_MYTABLE_INTVALUE FOR MYTABLE ACTIVE
BEFORE UPDATE OR INSERT POSITION 0
AS
DECLARE I INTEGER;
DECLARE S VARCHAR(13); …Run Code Online (Sandbox Code Playgroud) 我正在使用IntraWeb应用程序搜索有关数据库连接的信息(在我的案例中为Firebird).
我特别需要知道在带有LockDataModule函数的TDataModule上使用数据库或使用UserSessionUnit上的数据库所涉及的差异.例如,如果没有用户使用服务器,我需要将数据库完全断开连接,并且最多连接30个用户.
我可能最糟糕的是必须连接到一些旧的paradox数据库,我需要一个可以处理它的结构(我知道我必须生成一个基于WebApplication.AppID来处理会话的文件夹).最糟糕的是......
提前感谢您提供给我的任何信息或有用链接^^
我有一个文件需要每天刷新,这样链接到一个rc文件:
docs.rc
file RCDATA "C:\folder\myfile.ext"
Run Code Online (Sandbox Code Playgroud)
我知道如果只在我的*.rc文件中进行更改,它会刷新资源本身.我发现确保资源刷新的唯一方法是删除它,编译,重新设置并再次编译.
任何建议,预编译命令或更好的东西?
谢谢 !
使用Delphi XE2 Enterprise.
[编辑]
当然我从项目代码中忘记了这一行:
{$R 'docs.res' 'docs.rc'}
Run Code Online (Sandbox Code Playgroud) 我需要从Delphi XE2下的现有Padadox数据库中提取数据(是的,我超过10年将它们分开......).
我需要根据包含以下值的字段(示例中的id)对结果进行排序:'1','2 a','100','1b','50 bis'...并得到:
- 1
- 1 b
- 2 a
- 50 bis
- 100
Run Code Online (Sandbox Code Playgroud)
也许这样的事情可以做到,但那些关键字不存在:
SELECT id, TRIM(TRIM(ALPHA FROM id)) as generated, TRIM(TRIM(NUMBER FROM id)) as generatedbis, etc
FROM "my.db"
WHERE ...
ORDER BY generated, generatedbis
Run Code Online (Sandbox Code Playgroud)
我怎么能用矛盾实现这样的排序......?
delphi ×3
delphi-xe2 ×2
firebird ×1
firebird2.5 ×1
intraweb ×1
paradox ×1
rc ×1
session ×1
sql ×1