当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 其实AutoInc字段很有价值,它提供了一个没有意义的唯一ID,在很多场合都需要。
 

 

    摘要: 今日开发遇到一个错误:delphi 7.1。使用ado连接sql server,book_adoquery有一个lookup字段,每当insert/append的时候ide就会弹出一个错误:an unknown error has occurred -- eoleexception跟踪发现错误来源于vcl locaterecord方法的flookupcursor.findfunction tcu......
    摘要: uses ..., typinfo; function tform1.isapropexist(ainst: tobject; const propname: string): boolean;var propinfo: ppropinfo;begin result := false; propinfo := getpropinfo(ainst, propname); if propinfo ......


Delphi连接关系数据库,不支持自动获取自增型字段的新值, 最好不用数据库的AutoInc字段,而是手工提供

其实autoinc字段很有价值,它提供了一个没有意义的唯一id,在很多场合都需要.

(注意,通常的物料代码,身份证号,卡号等等现实属性都有意义,可能需要修改,不能用来做主键!最好采用无意义主键) 【程序编程相关:ShadowStar CodeFast

【推荐阅读:类似Access查找中的记忆功能

【扩展信息:delphi实现批量缩略图生成工具开发代

但是delphi用ado(dbexpress我没有试过)连接关系数据库,在insert/apend post后,autoinc字段的值总为0(连access可以获得新值),这样在界面上不好看,而且不能刷新数据集,会出错,因为它与数据库不一致.

特别是需要主从关系的情况下,这样无法插入子表记录.若你真要这样,可以看john kaster

的一篇文章:how to use autoinc fields with datasnap

而且ms sql的autoinc字段有两种选择:复制的时候自增,复制的时候不自增.

我希望delphi有个开关,可以让开发者选择在post后立即用select @@identity 来填充新值.

但目前还不行,所以只有不用数据库提供的autoinc字段,自己写了.

一般一个数据库中会有多个autoinc id字段.

建一个表autoincid

两个字段:

idname varchar(16)   --  主键,存放其他各表autoinc id字段的字段名

 idvalue int         -- 当前id 值, 初始化为0

获取当前的某个autoinc字段的 id值

 


...   下一页
    摘要: 二、语句 首先要说一下begin ... end; 相当于c或者c++中的{ ... }。 (1)声明语句 常量:const 常量标识符[:类型]=常值; 变量:var 变量标识符:数据类型; (2)表达式语句 由运算符组成的合法语句 运算符优先级: 运算符 优先级 @ not 1 (最高) *,/,div,mod,and,shl,shr,as, 2 +,-,or,xor ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE