FireBird(Interbase)
c_huabo
这个作者很懒,什么都没留下…
展开
-
一个奇怪的SQL(左连接和内连接)
有两个SQL:实现查询所有供电所下所有线路的线损总计select a.f_deptno,a.f_deptname,sum(f_buy) sumbuy,sum(f_sale) sumsale,sum(f_buy)-sum(f_sale) loss,(sum(f_buy)-sum(f_sale))/sum(f_buy) lossratefrom tb_dept a left join vb_lin原创 2009-05-11 14:42:00 · 727 阅读 · 0 评论 -
解决DBGridEh遍历记录后不移动当前行位置的方法
解决DBGridEh遍历记录后不移动当前行位置的方法原创 2010-07-30 11:55:00 · 4454 阅读 · 1 评论 -
DBGridEh3.6和DBGridEh5.2的区别
DBGridEh3.6和DBGridEh5.2的区别,如果一个数据库字段用1和0 表示是否选择之类的Boolean类型,在DBGridEh里这个字段可设为原创 2010-09-06 11:09:00 · 1160 阅读 · 0 评论 -
FireBird数据库设计技巧
FireBird数据库以它的短小而精悍著称,其性能可以和大型的MSSQL SERVER、Oracle相媲美,具有其它优秀数据库的一些特点,而它自身又有一些它的特点,因此在设计数据库时也有一些和其它数据库的技巧。原创 2010-09-20 11:18:00 · 1221 阅读 · 0 评论 -
Firebird数据库备份与恢复
<br />Firebird数据库备份:把下面的一行保存为备份.bat文件,在备份时只要双击运行即可,非常方便<br />gbak.exe -b 192.168.4.146:Data.FDB D:/Data.fbk -user sysdba -password masterkey<br />当原来的数据库有很多数据时,可能超过10G,这时备份会非常花时间,可以先把数据库的元数据备份下来,根据需要再用sql把要用的表导入即可:<br />gbak.exe -b -m 192.168.4.3:pim D:/pi原创 2010-09-08 13:44:00 · 8414 阅读 · 1 评论 -
FireBird数据库嵌入版备份方法
FireBird数据库嵌入版备份方法原创 2010-12-09 09:41:00 · 1502 阅读 · 0 评论 -
"unable to load fbembed.dll"解决方法
<br />Firebird嵌入版的实施记录<br />使用Firebird的嵌入版只要把所需的几个DLL文件放在可执行文件目录下,就可以不要安装FB服务,使用起来方便,达到绿色软件的目的,按照Readme的说明,只要把fbembed.dll、icudt30.dll、icuuc30.dll和数据库文件放在同一个目录下,在程序里设置数据库的连接VendorLib的名称为fbembed.dll的完整名称(包括路径),这样就可以正常运行程序,但经测试,老是提示"unable to load fbembed.dll原创 2010-10-29 13:25:00 · 6114 阅读 · 2 评论 -
FireBird备份为空库的简单方法
<br />把下列文件保存为批处理文件“备份为空库.bat“,在以后要把使用了很久的数据库清空时,可以双击运行即可:gbak.exe -b -m TestMeter.fdb testmeter.fbk -user sysdba -password masterkey;备份元数据,包括所有表、存储过程、触发器<br />if exist new.fdb del new.fdb;先删除要创建的新数据库文件<br />f:/fb213/bin/isql.exe -q -i Create.sql;创建一个新的数据库原创 2010-10-29 13:46:00 · 1888 阅读 · 0 评论 -
Firebird使用支招
<br />1、在FireBird中,使用条件时一定要用括号括起来,如while (i<=9) do begin ... end;<br /> <br />2、在Delphi中使用SQL语句时,SQL中的字符参数一定要用单引号引起来,如sql:=format('Execute Procedure P_Insert(<br />原创 2011-02-14 14:55:00 · 947 阅读 · 0 评论 -
D7下Int64类型的参数传递方法
如果在数据库设计中要用到Int64类型的字段,在程序在动态查询到这个字段,传递参数时会出现问题,因为D7还没支持Query1.Params.ParameterByName('f_FiledName').AsInt64这种用法,估计是D7的一个Bug吧,但必须要用这种类型怎么办?原创 2011-02-18 12:59:00 · 829 阅读 · 0 评论 -
巧用Dos生成Firebird Sql执行
用FireBird的Isql工具可以在Dos下批量执行Sql脚本,先建立一个Sql文件,保存为input.sql 假如有大量的要执行的Sql文件,分别把它们保存为input1.sql input2.sql ...,然后建立一个bat 文件 sdcs1.bat文件,里面内容如下:f:/fb/bin/isql.exe -user sysdba -password master原创 2009-09-04 09:31:00 · 2067 阅读 · 3 评论 -
存储过程与Insert哪个更快
Execute Procedure p_InsCmResult (6,400006432,2008-11-20 1:00:00,199.9);为什么上面的存储过程的执行还没有下面的Insert 快?INSERT INTO TC_CENTERCMRESULT (F_CENTERID, F_METERNO, F_TIME, F_READING) VALUES (6,400006原创 2009-08-31 10:40:00 · 1361 阅读 · 0 评论 -
SQL Error:library routine called out of sequence.
在Lazarus+ZEOSDBO连接数据库后,进行打开、修改操作SQLite数据库,本机运行正常,可是在测试机上一跑,老是提示“SQL Error:library routine called out of sequence.”以为是动态库的问题,鼓捣了好长时间,才发现是自已把数据库路径设为绝对路径,它当然找不到数据库了,设为相对路径后,运行OK!原创 2011-11-21 14:22:13 · 7199 阅读 · 0 评论 -
"sql statement not set"和"preparestatement:Dynamic sql error"
今天试了一下Lazarus的FB操作能力,反得提示“sql statement not set”,因为SQLQuery是用来插入数据的,所以sql属性没有设置,而是动态赋值:Insert...但是老提示上面的错,刚开始以为是插入也需要一个默认的sql,其实是自已搞错了,sql语句设了,但没有赋值过去;还有一个错,老是报“preparestatement:Dynamic sql error”,原创 2011-12-28 11:56:11 · 1497 阅读 · 0 评论 -
发现一个ClientDataSet的超好用的方法MergeChangeLog
发现一个ClientDataSet的超好用的方法MergeChangeLog,暂时没时间来详述,先记下来!原创 2011-12-31 15:07:49 · 3108 阅读 · 0 评论 -
FireBird的两个误区:动态参数传递出错Incorrect values within SQLDA structure
动态参数Incorrect values within SQLDA structure原创 2010-06-04 11:40:00 · 1741 阅读 · 0 评论 -
FireBird下存储过程TimeStamp数据类型参数的传递方法
在Firebird下使用动态参数,配合Format格式输出时,当数据库字段为TimeStamp时,sql用Format('Execute procedure p_InsertTable(''s'')',[FormatDateTime('yyyy-mm-dd hh:mm:ss',Now)]);其SQL为:Execute procedure p_InsertTable('2010- 7-14 15:22:52');也就是用字符型参数传给Timestamp字段,但要用'单引号引起来,不然的话数据库识别不了,报错.原创 2010-07-14 15:37:00 · 3314 阅读 · 1 评论 -
Firebird主从表存储过程的两种写法
有三个表:tb_employee,tb_customer,tb_movemaster,分别表示一个公司的业务员、公司的客户和公司的销售主文件表,它们是父表和子表的关系:CREATE TABLE TB_EMPLOYEE ( F_ID INTEGER NOT NULL, F_DEPTNO INTEGER, F_EMPLOYEENO INT原创 2010-05-14 09:46:00 · 2635 阅读 · 0 评论 -
Unable to find record. No key specified错误解决
"Unable to find record. No key specified错误解决如果表有主键,在ClientDataSet 里主键字段的ProviderFlag属性设为pfInKeyOK 不过,在DBExpress里,使用SQL DataSet 和SQL Query 组件的话,SQL语句里的表名用大写,不然会出Table Unknow的错。让我郁闷了好几天原创 2009-06-10 16:06:00 · 3410 阅读 · 2 评论 -
FireBird批量数据导入
创建一个bat 文件:input.bat 内容如下, f:/fb/bin/isql.exe -user sysdba -password masterkey 127.0.0.1:e:/pim_ym -q -input d:/work/ym/sdcs1/400006429.sql;@echo 400006429 >>sdcs1_ok.txtf:/fb/bin/isql.exe -原创 2009-08-31 12:54:00 · 5413 阅读 · 0 评论 -
一个易误的左连接sql
Select m.*, f_MeterID, f_Date, f_Reading, f_DayQutyfrom sp_Meter(:LineID) m Left Join TC_CMR_Day r on m.MeterID = r.f_MeterID where f_Date = :DateOrder by f_Date与 Select m.*, f_MeterID, f_Date,原创 2009-07-03 16:51:00 · 690 阅读 · 0 评论 -
解决DBGridEh字段为空NULL时的第三状态显示为非选中状态方法
DBGridEh在字段没有值时,选择字段会出现选中和非选中状态的第三状态,其界面显示好像已选中 一样,这样很不好,想把值为空时默认为非选中状态的方法:在DBGridEh的DrawColumnCell事 件中加入下面代码: if Column.FieldName=F_USED then //去除DBGridEh值为空时的第三状态的 i原创 2009-10-12 09:23:00 · 1919 阅读 · 0 评论 -
record not found or changed by another user 没有主键的表解决(外篇)
在FireBird中,使用ClientDataset+DatasetProvider+DBEXPress组件开发,如果表没有主键,ClientDataset的IndexName设为 Default_Order,DatasetProvider的UpdateMode设为upWherechaned时,在存取记录时只能修改。要能正确更新,需为表增加一个 Unique约束,然后在Clien原创 2009-11-10 15:53:00 · 1176 阅读 · 0 评论 -
record not found or changed by another user 解决
record not found or changed by another user 解决方法 我在使用三层结构时,有一张表没有主键,用ClientDataset+DatasetProvider+SQLQuery修改数据时,反复提示“record not found or changed by another user”,把ClientDataset的Indexname原创 2009-11-10 14:52:00 · 4640 阅读 · 1 评论 -
在IBExpert中跨库查询不同数据库表、不同版本数据库
原来开发时使用的数据库版本太高,使用的是FB2.11,而在把原来的低版本(FB2.0)的数据库的数据导入后,放到机器上运行,却发现怎么 也登录不了,装了FB2.11后,还是提示unsupported on-disk structure for file ;found 11.1,support 11.0,没办法,可能是 FB2.11还是存在bug,重新安装了FB2.0后,建了一个库,原创 2010-01-27 22:20:00 · 3277 阅读 · 0 评论 -
数据库字段值取法与Format的引用
数据库字段值有多种取法, Query[字段名] Query.FieldValues[字段名] Query.FieldByName(字段名).Value Query.FieldByName(字段名).AsInteger 等等,只是在它们的有些地方用法不一样,如在Format中,用Query[字段名]当赋值用,会有编译错误,另外在不知道原创 2009-12-05 01:56:00 · 876 阅读 · 0 评论 -
错误:"SQL Server Error:Table unknow tb_temp At line 1,column 30"之解决
错误:"SQL Server Error:Table unknow tb_temp At line 1,column 30"之解决方法: 很多人用Firebird+DBExpress+ClientDataset+Dataprovider开发两层、三层MIS,但对DBExpress组件不熟,以此以为这个组件有 问题,太冤了,不过对于ADO用多了,转过来要设一大堆。在使用多表查询时原创 2009-12-09 13:34:00 · 1829 阅读 · 0 评论 -
delphi 程序执行完了会自动退出···难道会选择最近的Exit?
一个奇怪的问题,当条件为False时,还是掉进了过程里: ret:=IsBoxFull(StrToInt(E_BoxNo.Text),RG_Box); if ret=true then begin if Application.MessageBox(该箱表数已满,是否打印条形码!,系统提示,MB_YesNo)=IDYES Then begin原创 2009-12-10 10:45:00 · 2649 阅读 · 2 评论 -
"unknow ISC Error 0"解决方法
"unknow ISC Error 0"解决方法: 使用DBExpress开发FireBird数据库,如果使用了时间动态参数,如果参数的数据类型使用不对,如果使用一般的时间数据类型ftDateTime,会 产生上面的错误,因为FireBird数据库是使用TimeStamp表示时间,所以动态参数的数据类型也有相应的ftTimeStamp。查看Help可以看 到,f原创 2010-03-07 21:30:00 · 1864 阅读 · 0 评论 -
关于Client Library is missing or invalid.的解决办法
关于Client Library is missing or invalid.的解决办法 今天,真是气人,写好的文章点保存,提示失败,只好重新再打一编,昨天在IB Expert 中执行一个创建数据库的脚本,可是提示上面的 错误,以前也遇到过一回,后来不知怎么的好了,仔细查看了一下选项,发现有一个Option->Environment,下面有User interface、 I原创 2010-01-05 10:04:00 · 4053 阅读 · 0 评论 -
Accecc violation at address 0443E00B in module 'dbexpint.dll' 解决
Accecc violation at address 0443E00B in module dbexpint.dll 解决 今天在用DBExpress时,由于SQLQuery里SQL语句里的表号没有用大写,于是导致出现上面的提示,忽然想起以前遇到的情况,把表名改为大写,更新 成功,要是把它做得智能点就好了,给我还以为是Dbexpint.dll文件坏了.原创 2010-05-11 15:08:00 · 1287 阅读 · 0 评论 -
"Expected backup version 1..8. found @1"Firebird 数据库恢复错误解决
在用FB2.11时,用gbak.exe -b 127.0.0.1:data.fdb D:/data.fbk -user sysdba -password masterkey备份一个数据库后,然后用 gbak -c d:/data.fbk d:/data2.fdb -user sysdba -pas masterkey恢复,竟然出现"Expected backup version 1..8.原创 2010-05-13 10:18:00 · 1243 阅读 · 0 评论 -
"ERROR:Malformed string"错误的解决方法
在使用Firebird数据库时,由于不同版本的差异,在进行数据备份和恢复的时候,如果数据库创建是用2.13创建,而在使用时用了高版本的服务,在重新备份和恢复时会提示这个错误:"ERROR:Malformed string",恢复以后数据的库表可以恢复成功,而有些存储过程,由于使用了中文,可能恢复失败,说明2.13和2.5版本在中文或者是存储过程方面还是有差异的,这时可以把服务换成以前的版本;就可以原创 2012-11-21 11:16:28 · 16410 阅读 · 0 评论