FireDac错误 314-but DLLs在程序目录中
我在尝试访问mySQL数据库时会得到: [firedac] [phys] [mysql] -314.无法加载供应商库[libmysql.dll 或libmysqlld.dll] 以前没有发生过此(不变的)代码,但是,我已经升级到Windows 10,不得不重新安装Delphi Xe8,因此显然这是系统配置问题. 为了尝试解决问题,我将这两个文件复制到C:\ Windows \ Sysytem32. 当它似乎不起作用时,我将它们复制到\ win32 \ debug,这是生成的.exe所居住的地方. 我想我在做一些愚蠢的事情,但看不到什么. 解决方案 正确的解决方案是将驱动程序文件(例如,libmysql.dll)放在您的应用程序文件夹中,或将安装位置放在FDDrivers.ini文件中: [MySQL] Vendor=\libmysql.dll (文档的最新版本似乎使用 vendorlib 而不是 vendor 在IN​​I文
2 2023-12-07
编程技术问答社区
如何在Firebase-Delphi XE 10上存储数据
从Embarcadero delphi Xe 10连接到Google的Firebase DBAA的最佳方法是什么? 我不确定如何从Anydac做到这一点. 或者,如果存在一个组件(我在搜索上找不到一个) 有帮助吗? 谢谢你 解决方案 firebase 被Google收购,现在可以提供许多工具和功能(云消息传递,身份验证,实时数据库,存储,托管等...) 如果您正在寻找实时存储和同步应用程序数据的服务,则适用于实时数据库.实时数据库:"一个云托管的NOSQL数据库.数据存储为JSON,以毫秒为单位的连接设备同步,并在您的应用程序脱机时可用." . Firebase为Android,iOS和Web(JavaScript)提供SDK库.此外,还可以提供一个REST API接口,并以 robert love 在上一篇文章中说,其他解决方案 有一个开源项目,称为 firebase4delphi .它提供了Delphi中对REST API的访问. 其他解决方案 与此同时
12 2023-11-17
编程技术问答社区
TFDMoniFlatFileClientLink不定期地不追踪到文件
i在表单上有一个TFDMoniFlatFileClientLink,将文件名设置为d:\temp\monitor.txt,tracing = true,TFDConnection.Params.MonitorBy=mbFlatFile.这有时有效,有时不会追踪任何内容.没有创建文件. 使用Win7 32位应用程序测试,设计时间TFDConnection to Firebird或Oracle. Delphi Tokyo 10.2.1 发生了什么事? 解决方案 这是一个非常奇怪的错误: 事实证明,TFDMoniFlatFileClientLink记得删除并放置后的文件名,然后不追踪. 复制: 删除TFDMoniFlatFileClientLink,可选地保存项目,再次将A TFDMoniFlatFileClientLink放在表单上,​​设置tracing = true.它神奇地记住了文件名d:\temp\monitor.txt(在哪里?),然后不跟踪或
14 2023-10-24
编程技术问答社区
从FireDac存储过程中检索输出参数
我已经在火鸟数据库中定义了此存储过程: create or alter procedure GET_MSG ( IDLNG smallint, IDMSG integer) returns ( MSG varchar(200) character set UTF8) as begin IF (:IDMSG > 40000) THEN BEGIN IF (:IDLNG = 1) THEN BEGIN SELECT NOMBRE01 FROM XMSG2 WHERE ID_XMSG2 = :IDMSG INTO :MSG; EXIT; END IF (:IDLNG = 2) THEN BEGIN SELECT NOMBRE02 FROM XMSG2 WHERE ID_XMSG2 = :IDMSG INTO :MSG; EXIT; END END ELSE BEGIN
22 2023-09-30
编程技术问答社区
AnyDac aka FireDac不能生成更新查询
我已经使用了Unidac很长时间了,因此决定继续前往FireDac,因为它在继续前进后具有良好的异步方法,我看到我的数据编辑不再有效,这给了我一个错误: [FireDac] [Phys] -330.无法生成更新查询.更新表不确定. 我在这里要做的是我有一个TFDStordProc组件,该组件从数据库中获取所有数据并让我对其进行编辑,而我可以通过Unidac轻松编辑数据而没有任何问题: StoredProc.Edit; StoredProcCreatedID.Value := SomeValue; StoredProc.Post; 且奏效,但是使用AnyDac,我尝试手动指定可更新的可更新,这导致了另一个问题: [firedac] [phys] [odbc] [Microsoft] [SQL Server本地客户端11.0] [SQL Server]无效列名称'createdId'. 我正在使用Microsoft SQL Server 2012 FireD
20 2023-09-26
编程技术问答社区
Delphi西雅图FireDAC.Phys.MSSQL未找到
我对Embarcadero Seattle遇到了问题.我是Delphi的新手,我正在调试别人的代码.我不得不在另一台计算机上进行设置,而不是以前用于该项目的计算机. [dcc32致命错误] salesordordmain.pas(14):f2613单位'firedac.phys.mssql'找不到. TFDPHYSSSQLDRIVERLINK不在工具完成.我已经将其重置,并且没有出现.我已经检查了FireDac软件包,并且该组件不在那里.到目前为止,我还没有任何运气来找出如何下载/安装组件. 此外,我从 https://www.microsoft.com/en-us/download/details.aspx?id=52676 请参阅此处的问题: = 0B58G8S8EDN7SNEO1MHFFRER2UEU 我正在运行Windows 7 64位和网络SQL Server 2008 R2.任何帮助我弄清楚如何解决这个问题的帮助将不胜感激. 解决方案 我
8 2023-09-26
编程技术问答社区
Delphi EMS FireDAC: 无法打开数据集[FDMemTable]
我正在使用Delphi中使用EMS(即未来iOS应用程序)的简单客户端服务器应用程序. 这个问题是我以前的问题的延续. 这是我的我遵循Marco提出的建议. 的建议. 问题:现在,当我将参数从客户端传递到服务器时,我有一个错误. Project EMS_Test_Client_Project.exe raised exception class EFDException with message '[FireDAC][Comp][DS]-206. Cannot open dataset [FDMemTable]. A DataTable or a DataView must be supplied. Hint: if that is TFDMemTable, use CreateDataSet or CloneCursor to open dataset'. 在此我有一个 image1 tfdmemtable属性(datstableamame: qrowpara
4 2023-09-24
编程技术问答社区
在底层查询中用REPLACE打开TClientDataSet时内存不足
我的Delphi代码打开A TFDQuery(FireDac),然后通过A TDataSetProvider打开TClientDataSet:TDataSetProvider: ClientDataSetData.Close; with QueryData do begin Close; SQL.Clear; SQL.Add(ASelectSQL); Open; end; ClientDataSetData.Open; ASelectSQL包含此SQL: SELECT TT_NIV_ID, TT_NIV, REPLACE(TT_NIV_NAME, '|', '!') as TT_NIV_NAME2 FROM TT_SYS_PRJ_NIV ClientDataSetData.Open在具有42200记录的数据集上给出了不足的内存错误. 如果我检查结果数据(在Delphi代码中),我会看到TT_NIV_NAME2是长度为8000的字符串!
30 2023-09-24
编程技术问答社区
Delphi EMS FireDAC: 如何使用EMS将参数从客户端传到服务器?
我正在使用EMS(即:对于未来的iOS应用程序)在Delphi中使用. 在客户端单元上,我有EMSProvider和EMSFireDACClient,它通过数据库从数据库(MSSQL)获取数据. 在服务器单元上,我有FDConnection和TFDQuery处理我的数据库.到目前为止,一切都很好. 问题:现在我需要将某些参数从客户端传递到服务器,并获取结果数据.我应该如何使用EMS? EMS? 中的任何功能或过程 关于源代码,所有内容都是通过相应组件来处理的.因此编码部分非常小. 预先感谢. 解决方案 EMS呼叫就像一个休息电话.您可以在路径中传递更多的URL参数(直接处理) - 请参阅bia iD获取项目的默认实现)和作为额外的查询参数.这些在请求对象中.要通过它们,请在客户端中使用自定义端点. 这是一些更多信息: 服务器声明: [ResourceSuffix('{item}')] procedure GetItem(const A
8 2023-09-24
编程技术问答社区
当得到 "数据对变量来说太大 "的错误时,如何正确访问FireDAC数据集的VARCHAR(MAX)参数值?
我们的应用程序更新并使用SQL Server 2014访问数据. i有一个表,其中最后一列('contents')以VARCHAR(MAX). 创建 我们正在使用Delphi Xe8,并且正在使用Firedac TFDQuery组件来更新此列. ..... FDquery.ParamByName('Contents').AsString:=Contents; FDquery.ExecSQL; 运行此更新时,我会收到以下错误: 带有消息[FireDac] [Phys] [ODBC] -345提出的例外.数据太大而无法变量[内容]. max len = [8002],实际len = [13829]提示:将tfdparam.size设置为更大的值. 'contents'可以是长度不同的字符串. 浏览网络,我发现的唯一合理简单的解决方案是更改查询如下: FDquery.ParamByName('Contents').AsWideMemo:=Conte
92 2023-09-23
编程技术问答社区
TFDQuery.Prepare无法确定MS SQL SERVER上INSERT查询的参数类型
我打开具有参数的MS SQL Server的TFDConnection: DriverID=MSSQL Password=test User_Name=test Server=VS2003-2008 Database=test Single Connection=TRUE Max Cursors=256 USE OLEDB=TRUE i然后创建一个TFDQuery(运行时间),将其连接到上面,用参数化的插入查询填充: insert into TT_ACT (TT_ACT_ID,TT_PARENT_ID,TT_FROMDATE,TT_TODATE,TT_NAME,TT_NR,TT_CODE,TT_GROUP...) values (:TT_ACT_ID,:TT_PARENT_ID,:TT_FROMDATE,:TT_TODATE,:TT_NAME,:TT_NR,:TT_CODE,:TT_GROUP,...) 然后我致电准备查询并获取: [FireDAC][Phys]
12 2023-09-23
编程技术问答社区
尝试从使用Unicode/createUtf16创建的SQLite DB打开tfdquery失败,而错误"期望:字符串实际:宽:宽:',为什么?
我决定将我的C ++构建器项目从StringFormat=Choose和OpenMode=CreateUTF8>的sqlite默认转移到Unicode版本: SQLiteFDConnection->Params->Values["StringFormat"]=_T("Unicode"); SQLiteFDConnection->Params->Values["OpenMode"]=_T("CreateUTF16"); // NOTE: The same thing happens if I create it with: //SQLiteFDConnection->Params->Values["OpenMode"]=_T("CreateUTF8"); 我这样做是因为VARCHAR字段不会占据日语字符(由??产生). 但是,我什至无法使用这两个设置打开新的数据库,而没有得到此错误: 项目提出的异常类EdatabaseError带有消息" table1:键入字段不匹配
8 2023-09-22
编程技术问答社区
在SQLite、FireDac、Delphi中插入记录时内存不足
我有一个Delphi应用程序,该应用程序将约200,000个记录(约1GB)插入SQLite数据库中,通过FireDac Component Tfdtable.当它插入时,我可以看到应用程序内存的增加,直到我获得"内存错误"为止.我猜想它可以通过缓存和分页有所应有的作用,但我找不到任何解决方法,而没有每1000次左右关闭数据库.想法? 编辑... 对不起,措辞稀薄的问题... 代码很简单,所以我没有包括它,但基本上是这样的: procedure DoIt; begin myDB.Insert; myDBField1.AsString := StringOfChar('-',1000); myDB.Post; end; 现在,我希望随着字符串复制到DB缓存,内存可能会增加.如果我使用getMemorymanagerstate()查看分配,则实际上可以看到.我希望在某个时候,随着数据写入光盘,缓存中的内存将被冲洗.但是,似乎并非如此.它一直在继续前进,直到我遇到"
26 2023-09-22
编程技术问答社区
ON CONFLICT(id) DO UPDATE SET对DELPHI 10.3.1中的FireDAC不起作用。
附加了第二个数据库后,我尝试在第一个数据库表中使用冲突(ID)插入和更新数据.字段ID是第一表的主要键. FDQuery1.EXECSQL('ATTACH ''D:\Update2019.DB'' AS DBUpdate'); FDQuery1.SQL.Text:= 'INSERT INTO acts (id,title) SELECT id,title FROM DBUpdate.acts'+ ' WHERE (DBUpdate.acts.id >100)'+ ' ON CONFLICT(id) DO UPDATE SET'+ ' title=excluded.title;' FDQuery1.ExecSQL; 我收到错误消息:"错误接近":"语法错误" 当我删除位置时(dbupdate.acts.id> 100条件 错误消息为:"错误" do":语法错误. 相同的查询在sqlitestudio中正常工作.
26 2023-09-22
编程技术问答社区
如何在运行时使用FieldDefs创建一个新的SQLite文件和表?
我正在使用Delphi Seattle在全新的SQLite文件中创建全新表格,仅使用FieldDefs和非视觉代码.我可以使用execsql('create Table ....')语法创建表,但不能如下所示(我会得到'no stane table'mytable',当我执行CreateAtaset呼叫时会升高).我想让一些解决方案可以让我使用fieldDefs.该代码在示例上进行建模.但是我注意到,关于CreateAtaset的注释仅适用于TFDMemtable.在不使用ExecSQL的情况下创建SQLITE表的运行时间方法吗? procedure Test; const MyDBFile = 'c:\scratch\hope.db'; var Connection : TFDConnection; DriverLink : TFDPhysSQLiteDriverLink; Table : TFDTable; begin DeleteFile( MyDBFil
8 2023-09-22
编程技术问答社区
Delphi Firedac无法识别sqlite3的新ALTER功能
sqlite3版本3.25及更高版本允许我"ALTER TABLE myTable RENAME COLUMN oldColName TO newColName".但是当我在Delphi代码中执行此操作时,我会收到一个错误"near RENAME",但是它可以从命令行或其他实用程序中运行新的sqlite3.dll. 这有效: HerdConnection.ExecSQL('ALTER TABLE myTable RENAME TO NewNameTable'); 这失败了: HerdConnection.ExecSQL('ALTER TABLE myTable RENAME COLUMN oldcolName TO NewColName'); 由于我安装了新的sqlite3.dll驱动程序,因此列Re-Name确实有效,但在我的Delphi Code(Delphi 10.2 10.2 Update 2) 我怀疑firedac随附的sqlite3驱动程序不是
4 2023-09-22
编程技术问答社区
SQLite FireDAC的尾部空格
我正在使用delphi xe7与firedac一起访问sqlite. 当我将数据放入文本字​​段中时,任何尾随空间或#0字符都会被截断. 我可以在sqlite或firedac中更改某些东西以保留尾随的空白吗? // The trailing spaces after Command don't come back from SQLite. fFireDACQuery.ParamByName(kSQLFieldScriptCommands).AsString := 'Command '; 解决方案 禁用 财产.该属性被描述为: tfdformatoptions.strstrim 控制从字符串值中删除尾随空间,零 来自二进制值的字节. 似乎您想存储二进制数据而不是文本.如果正确,请更好地定义您的字段数据类型,例如AS 此类字段的参数值您然后以这种方式访问​​: var Data: RawByteString; begi
6 2023-09-21
编程技术问答社区
TFDQuery和SQLite。字段的类型不匹配,期望的是。LargeInt 实际: WideString
使用Delphi 10.2,Sqlite和Teecharts.我的sqlite数据库有两个字段,其中创建了: CREATE TABLE HistoryRuntime ('DayTime' DateTime, Device1 INTEGER DEFAULT (0)); i使用TFDQuery访问表格qryGrpahRuntime,并在以下sql: 中访问该表 SELECT DayTime AS TheDate, Sum(Device1) As DeviceTotal FROM HistoryRuntime WHERE (DayTime >= "2017-06-01") and (DayTime
10 2023-09-21
编程技术问答社区
FireDac添加下划线1以区分2列名称与同名
我有一个连接2个表的选择,因此有这些表格中的列,因此现在在检索结果时,FireDac将下划线1添加到第二列名称中,以区分2 Select * from Table1 inner join Table2 on Table1.id = Table2.id 从具有相似名称的字段获得记录时,我必须这样做... Dataset.FieldByName('Name').asInteger Dataset.FieldByName('Name_1').asInteger 我想知道是否存在将_1更改为其他的设置,我想更改的原因是我们曾经使用Interbase,仅添加了1. 解决方案 我不知道这种配置.我能想到的唯一选项是不使用SELECT *,而是选择您实际上的列,并使用相同列名称的别名,例如. SELECT Table1.Name, Table2.Name AS Name1, ... from Table1 inner join Table2 on Table1.i
4 2023-09-18
编程技术问答社区
索引在FDQuery中不起作用
我有一个将数据馈送到网格的fdquery. 当用户单击列时,我希望网格在该列上订购. 因为我希望能够对多列进行排序,所以我无法使用网格的AutoSort选项. 我在概念证明中尝试了以下代码. 但是它不起作用. procedure TForm31.JvDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer; Field: TField); const sDesc = 1; sASC = 2; sNone = 0; var i: integer; SortClause: string; AField: TField; AIndex: TFDIndex; begin case Field.Tag of sDesc: Field.Tag:= sASC; sASC: Field.Tag:= sNone; sNone: Field.Tag:= sDesc; end; So
4 2023-09-07
编程技术问答社区