如何获知表中某个字段的最大值?
能不能建一张表,第一个字段是id(也是主键),只是用来识别不同的记录的。但是在使用过程中我不必自己填这个字段,如果做了Table->Append之类的操作,该字段的值自动加1。这样可行吗?
如果不行的话,那我增加一条记录时,怎么知道前面记录的id值已经是多少了呢?
谢谢
问题点数:40、回复次数:15Top
1 楼annkie(无声的雨)回复于 2003-06-01 18:24:08 得分 40
可以,access的字段设计器可以设置其数据类型为自增编号。
ms sql可以设置数据类型为int或其他整型,在列的属性选择“标识”为“ 是 ”
Top
2 楼BlackSnail(粉红海蜗牛)回复于 2003-06-01 19:24:24 得分 0
我用的是SQLServer,按照你说的设置“标识”为“是”,但是Post时报“Field 'id' must have a value”。怎么回事呢?Top
3 楼annkie(无声的雨)回复于 2003-06-01 19:35:19 得分 0
你是如何操作的?
Append
Post?Top
4 楼BlackSnail(粉红海蜗牛)回复于 2003-06-01 19:44:30 得分 0
对,
Table1->Append();
Table1->FieldByName("course")->AsString=ComboBox1->Text;
Table1->FieldByName("type")->AsString="PD";
...(不包含对id字段的赋值)
Table1->Post();
Top
5 楼cnphw(阿伟)回复于 2003-06-01 19:49:24 得分 0
看来,我可以接分了,
在SqlServer 如你所说,需要设置设置“标识”为“是”,
那是第一步,
第二:要看你用什么控件与数据关联做编辑了
1。是Table 时,需要将所有字段加入AddField中,但是不要加入"自增字段"
2。是TQuery时,
我只说使用TUpdateSQL的情况,在TUpdate 里面注意不要自动生成SQl句子时,选中"自增字段"
如果你自己写Insert,update句子,不要包含“自增字段”
Top
6 楼annkie(无声的雨)回复于 2003-06-01 19:52:05 得分 0
我到是没有这样做过,你试试在Table1->Append()后加Table1->Edit();
我一般是使用sql语句更新的。
AnsiString sql = "insert into tablename(fieldname1,fieldname2,...) values(value1,value2,...)";
//...
Query->Close();
Query->SQL->Clear();
Query->SQL->Add(sql);
Query->ExecSQL();
//...Top
7 楼cnphw(阿伟)回复于 2003-06-01 19:52:26 得分 0
再告诉你一个经验,对SqlServer不要用Table,要多用TQuery或TADOQueryTop
8 楼BlackSnail(粉红海蜗牛)回复于 2003-06-01 19:53:08 得分 0
不好意思,我不太明白“将所有字段加入AddField中”是什么意思?可以解释一下吗?Top
9 楼cnphw(阿伟)回复于 2003-06-01 19:53:49 得分 0
annkie(无声的雨)你好Top
10 楼BlackSnail(粉红海蜗牛)回复于 2003-06-01 19:54:29 得分 0
OK,我试试,成功后马上加分,稍等五分钟....Top
11 楼cnphw(阿伟)回复于 2003-06-01 19:57:03 得分 0
双击Table后会出一个字段框,点右键会出现一个菜单,有Add Fields...的对话框,你可以看看Top
12 楼annkie(无声的雨)回复于 2003-06-01 20:01:42 得分 0
cnphw(a伟) :
hello!
对你这种情况:
在
Table1->Append()
之前获得当前最大Id值,然后自己赋值也可以的。
Table1->Last();
int maxID = Table1->FieldByName("Id")->AsInteger;
Table1->Append();
Table1->FieldByName("Id")->Value = maxID + 1;
//...
建议同上:尽量习惯使用sql语句操作数据库。
Top
13 楼BlackSnail(粉红海蜗牛)回复于 2003-06-01 20:01:48 得分 0
成功了,非常感谢,马上加分。Top
14 楼BlackSnail(粉红海蜗牛)回复于 2003-06-01 20:05:12 得分 0
对不起,cnphw(a伟),我没注意到你也在帮我解决问题,结贴后才发现有两位朋友回答我的问题,实在对不起。有办法补救吗?Top
15 楼cnphw(阿伟)回复于 2003-06-01 20:15:09 得分 0
没有关系Top




