dbnavigator
按下删除按钮后,我可以根据决定中止删除记录吗?我检查了beforeAction
事件
if Button = nbDelete then
//check if not OK then
Button := nbCancel;
Run Code Online (Sandbox Code Playgroud)
但它不起作用.任何帮助?
我正在使用 DelPhi XE2, anyDac Components
我正在使用Delphi XE2和AnyDac组件以及Advantage Database 10.在我的代码中,我使用的参数化查询如下:
q.SQL.Text := 'SELECT * FROM Table1 ' +
'LEFT JOIN Table2 ON (Table1.ID = Table1 .ID_Table2) ' +
'WHERE ' +
':0 BETWEEN Table1.StartAm AND Table1.EndeAm ' +
'AND Table2 = :1';
q.Params[0].Value := AStartDateTime;
q.Params[1].Value := AIDRessourcenGruppe;
q.Open;
Run Code Online (Sandbox Code Playgroud)
这最终会出现异常:
Exception der Klasse EADSNativeException mit der Meldung'[AnyDAC] [Phys] [ADS] Error 7200:AQE Error:State = 22018;
NativeError = 2112; [iAnywhere Solutions] [Advantage SQL Engine]分配错误'aufgetreten.
当然AStartDateTime是一个有效的delphi TDateTime值,AIDRessourcenGruppe是一个整数值.
有趣的是,这两个变体有效:
q.SQL.Text := 'SELECT * FROM Table1 ' +
'LEFT JOIN Table2 …
Run Code Online (Sandbox Code Playgroud) delphi parameters advantage-database-server delphi-xe2 anydac
我使用 AsWideString 将 Unicode 字符串传递给 TADQuery 参数。
ADQuery.Params.ParamByName('MyFld').AsWideString
Run Code Online (Sandbox Code Playgroud)
但是当字符串变得太长时,我收到错误:
[MyFld]. Max len = [8002], actual len = [10522]
Run Code Online (Sandbox Code Playgroud)
然后我决定使用 AsMemo 属性
ADQuery.Params.ParamByName('MyFld').AsMemo
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我的 Unicode 字符串无法正确显示。
解决这两个问题的方法是什么?
我使用Firebird和Delphi,我想通过线压缩实现通过互联网访问;但是我无法激活它。
我已按照本文档中的步骤获取新参数(我能找到的少数参数之一) How to enable WireCompression on Firebird 3.0 using FireDAC
在测试中,我使用 Windows server 2012 R2 Firebird:Firebird-3.0.4.33054_0_Win32(32 bits) 也复制到可执行文件夹。fbclient.dll zlib1.dll(idem 服务器和客户端)使用wirecompression=true 创建了firebird.conf。我在应用程序的 Firedac 中给出了 wirecompression=true 。
为什么我无法激活 P15:CZ 压缩?
Sending connection info for the example:
================================
Connection definition parameters
================================
DriverID=FB
Database=miservidor001:C:\sysdat\C100\gestdat03.fdb
User_Name=SYSDBA
PassWord=*****
WireCompression=true
================================
FireDAC info
================================
Tool = RAD Studio 10.2
FireDAC = 16.0.0 (Build 88974)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client info
================================
Loading driver FB ...
Brand = Firebird
Client version …
Run Code Online (Sandbox Code Playgroud) 我无法在没有错误的情况下执行以下脚本..它在delphi中针对firebird数据库运行.
var
vScript: TADScript;
begin
vScript := TADScript.Create(nil);
vScript.Connection := xConnection;
vScript.Transaction := xTransaction;
with vScript.Params.Add do
begin
Name := 'DEFVAL'; // also tried ':DEFVAL'
AsInteger := 1;
end;
with vScript.SQLScripts.Add do
SQL.Text := 'ALTER TABLE "PERSON" add "AGE" INTEGER DEFAULT :DEFVAL';
vScript.ValidateAll;
vScript.ExecuteAll;
end
Run Code Online (Sandbox Code Playgroud)
它给出了'令牌未知 - 第1行,第48列',参数(:DEFVAL)位置的错误
我已经尝试先分配sql文本然后调用Params.FindParam,但它不在列表中.这适用于查询.
不使用参数,只包含SQL字符串中的默认值,但此代码用作更大框架工作的一部分,该选项是最后的选择.
是否可以执行在参数数组中传递BLOB字段数据的Array DML INSERT
或UPDATE
语句?我问题中更重要的部分,如果可能的话,包含BLOB数据的Array DML命令是否仍然比逐个执行命令更有效?
我注意到TADParam
有一个AsBlobs
索引属性,所以我认为它可能是可能的,但我还没有尝试过这个,因为没有提及性能也没有示例显示这一点,因为索引属性的类型RawByteString
不太适合我的需要.
我正在使用FireDAC并使用SQLite数据库(Params.BindMode = pbByNumber
因此我使用INSERT
多个本机SQLite VALUES
).我的目标是尽可能快地存储大约10万条包含非常小的BLOB数据(每条记录大约1kB)的记录(以FireDAC的抽象成本计算).
使用FireDac,如何在ms sql server上获取最后插入的id?谢谢
anydac ×7
delphi ×7
firedac ×5
delphi-xe2 ×2
firebird ×2
dml ×1
firebird-3.0 ×1
parameters ×1
sql ×1
sql-server ×1
sqlite ×1
ttnavigator ×1