DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 530071127qqcom
今日帖子: 4
在线用户: 1
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 13:33:41
标题:
急 急 浏览:2389
加入我的收藏
楼主: 我现在做和一个系统;遇到自动编号的问题,我看过技术文章中自动编号的内容,但不是我所需要的,所以在这里再向各位大师请教一下,比如我希望我输入教师的信息以后,按提交按钮,数据库会自动编号,(只是在前一个记录编号的基础上加一就可以了。
  我用的数据库是SQLSEVER2000个人版


----------------------------------------------
-
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 13:35:05
1楼: 我是用代码实现的!
----------------------------------------------
新手,想得到您的帮助!
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 13:43:59
2楼: 可以说具体一点吗?
写点程序给我看一下可以吗?
----------------------------------------------
-
作者:
男 cjrb (Thinking In 魂) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 13:51:48
3楼: select max(编号) as 最大编号 from table

把最大编号+1


----------------------------------------------
按此在新窗口浏览图片 充电..........
作者:
男 beginer (初学者) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 13:54:31
3楼: 我现在正好在写一个程序,遇到了你说的自动编号问题。我的表是这样的:

name    bank     bankID
XXX      MMM        1

当新增时,先判断:如果是第一条记录,就人为的为它取一个ID号,例如:1,然后使用INSERT方法插入第一条记录
adotable.insert;
adotable['name']:='XXX';
adotable['bank']:='mmm';
adotable['bankID']:=1;
adotable.post;
当不是第一条记录时,就让它的ID号:=数据表中ID号最大的+1。我又用了一个查询来得到最大的ID值。 这可能不是一个很好的方法,不过你可以参考一下。

----------------------------------------------
新手,想得到您的帮助!
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 13:55:15
3楼: 这个问题很容易实现的,似乎不需要费多少心思。
假定  1. 在教师信息表建一个字段bh  int型
      2. 每次进入编辑窗口时读取表中最大编号并保存到变量或属性中(如Form的Tag属性)或自定义一个属性
      3. 然后新增记录时保存有最大编号的变量或属性+1,新增教师的编号=+1后的变量或属性。
----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 14:24:30
4楼: 我也想到用这个方法!但我一直都不知道该用什么控件和什么方法来去到这个表编号字段的最大值!!!可以告诉我具体一点吗??
----------------------------------------------
-
作者:
男 cjrb (Thinking In 魂) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 14:37:30
5楼: procedure Open_SQL_Query(Some_Query:TQuery;SQL_Var:string);
begin
    Some_Query.Close;
    Some_Query.UnPrepare ;
    Some_Query.SQL.Clear;
    Some_Query.SQL.Add(SQL_Var);
    Some_Query.Prepare ;
    Some_Query.Open;
end;

---------
var
Temp_Query:TQuery;
BH_Var:String;
begin
  Temp_Query:=TQuery.create(nil);
  Open_SQL_Query(Temp_Query,'select max(编号) as 最大编号 from table');
  if  Temp_Query.eof and Temp_Query.bof then
     BH_Var:='00000001';
  else
  begin
    BH_Var:=Temp_Query.FieldByName('最大编号').asstring;
    BH_Var:=IntToStr(StrToInt(BH_Var)+1);
    WHILE Length(BH_Var)<8 Do
      BH_Var:='0'+BH_Var;
  end;
End;
    

----------------------------------------------
按此在新窗口浏览图片 充电..........
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 14:49:00
6楼: 我想问一下!你这段程序该怎么用在我的这个程序中
procedure TDInput.BitBtn1Click(Sender: TObject);
  begin
  adotable1.open;  //打开adotable1表//
  adotable1.Append;
  adotable1.FieldByName('cno').Value:=1;
  adotable1.FieldByName('cname').Value:=Edit1.Text;
  adotable1.FieldByName('csort').Value:=ComboBox1.Text;
  adotable1.post;


end;
----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 15:00:21
7楼: 我想问一下!你这段程序该怎么用在我的这个程序中
procedure TDInput.BitBtn1Click(Sender: TObject);
  begin
  adotable1.open;  //打开adotable1表//
  adotable1.Append;
  adotable1.FieldByName('cno').Value:=1;
  adotable1.FieldByName('cname').Value:=Edit1.Text;
  adotable1.FieldByName('csort').Value:=ComboBox1.Text;
  adotable1.post;


end;

----------------------------------------------
-
作者:
男 cjrb (Thinking In 魂) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 15:07:58
7楼: ---------
var
Temp_Query:TADOQuery;
BH_Var:String;
begin
  Temp_Query:=TADOQuery.create(nil);
  Temp_Query.clear;
  Temp_Query.add('select max(编号) as 最大编号 from table');
  try
    Temp_Query.open;
  except
    Messagedlg();
    Temp_Query.free;
  End;
  if  Temp_Query.eof and Temp_Query.bof then
     BH_Var:='00000001';
  else
  begin
    BH_Var:=Temp_Query.FieldByName('最大编号').asstring;
    BH_Var:=IntToStr(StrToInt(BH_Var)+1);
    WHILE Length(BH_Var)<8 Do
      BH_Var:='0'+BH_Var;
  end;
  Temp_Query.free;

  adotable1.open;  //打开adotable1表//
  adotable1.Append;
  adotable1.FieldByName('cno').Value:=BH_Var;
  adotable1.FieldByName('cname').Value:=Edit1.Text;
  adotable1.FieldByName('csort').Value:=ComboBox1.Text;
  adotable1.post;



End;

----------------------------------------------
按此在新窗口浏览图片 充电..........
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 15:10:06
8楼: 谢谢你们!!我试一下!你可以告诉我怎么联系你吗??
----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 15:38:37
9楼: 我用这个以后,为什么还是错误的呀!错误信息是
  [Error] luru.pas(233): Undeclared identifier: 'clear'
  [Error] luru.pas(234): Undeclared identifier: 'add'
  [Error] luru.pas(238): Not enough actual parameters
  [Error] luru.pas(243): ';' not allowed before 'ELSE'
  [Fatal Error] Project1.dpr(29): Could not compile used unit 'luru.pas'

请指点!急呀!

----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 15:41:49
10楼: 我用这个以后,为什么还是错误的呀!错误信息是
  [Error] luru.pas(233): Undeclared identifier: 'clear'
  [Error] luru.pas(234): Undeclared identifier: 'add'
  [Error] luru.pas(238): Not enough actual parameters
  [Error] luru.pas(243): ';' not allowed before 'ELSE'
  [Fatal Error] Project1.dpr(29): Could not compile used unit 'luru.pas'

请指点!急呀!

可以随便告诉我你的联系方式吗??
----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 15:55:57
11楼: 我用这个以后,为什么还是错误的呀!错误信息是
  [Error] luru.pas(233): Undeclared identifier: 'clear'
  [Error] luru.pas(234): Undeclared identifier: 'add'
  [Error] luru.pas(238): Not enough actual parameters
  [Error] luru.pas(243): ';' not allowed before 'ELSE'
  [Fatal Error] Project1.dpr(29): Could not compile used unit 'luru.pas'

请指点!急呀!

可以随便告诉我你的联系方式吗??我的联系方式是nestle_hcl@msn.com----------------------------------------------

----------------------------------------------
-
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 16:16:51
12楼: 这个应该可以

procedure TDInput.BitBtn1Click(Sender: TObject);
var
   tempADOQuery: TADOQuery;
   iBH: Integer;
begin
   // 找最大编号
        
      tempADOQuery := TADOQuery1.Create(nil);
      wiht tempADOQuery do
      begin
          ConnectionString := adotable1.ConnectionString;
          SQL.Text := 'Select Max(cno) as MaxID From ' + adotable1.TableName;
          Open;
          if Eof then
             iBH := 1
          else
             iBH := FieldByName('MaxID').AsInteger;
          Close;
      end;    
      tempADOQuery.Free;   
   

  adotable1.open;  //打开adotable1表//
  adotable1.Append;
  adotable1.FieldByName('cno').Value:= iBH;
  adotable1.FieldByName('cname').Value:=Edit1.Text;
  adotable1.FieldByName('csort').Value:=ComboBox1.Text;
  adotable1.post;
end;

----------------------------------------------
-
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 16:18:20
13楼: 补充

 // 找最大编号
        
      tempADOQuery := TADOQuery1.Create(nil);
      wiht tempADOQuery do
      begin
          ConnectionString := adotable1.ConnectionString;
          SQL.Text := 'Select Max(cno) as MaxID From ' + adotable1.TableName;
          Open;
          if Eof then
             iBH := 1
          else
             iBH := FieldByName('MaxID').AsInteger + 1;  // 这里要+1
          Close;
      end;    
      tempADOQuery.Free;   

----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 16:33:51
14楼: 怎么通不过呀!是tempADOQuery: TADOQuery;这一行错了吗??不应该是TADOQuery吧
是不是ADOQuery这样的呀!!

----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 16:39:03
15楼: 我又作了一点修改,是可以通过,程序也可以执行,但我一点击增加按钮是,系统又提示错误了,说是connection miss or miss connectionstring
是怎么回事呀??
----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 16:39:46
16楼: 我修改以后的程序是这样的!
var
   tempADOQuery: TADOQuery;
   iBH: Integer;
begin
   // 找最大编号

      tempADOQuery := TADOQuery.Create(nil);
      with tempADOQuery do
      begin
          ConnectionString := adotable1.ConnectionString;
          SQL.Text := 'Select Max(cno) as MaxID From ' + adotable1.TableName;
          Open;
          if Eof then
             iBH := 1
          else

             iBH := FieldByName('MaxID').AsInteger + 1;  // 这里要+1
          Close;
      end;
      tempADOQuery.Free;
  adotable1.open;  //打开adotable1表//
  adotable1.Append;
  adotable1.FieldByName('cno').Value:= iBH;
  adotable1.FieldByName('cname').Value:=Edit1.Text;

  adotable1.post;
end;

----------------------------------------------
-
作者:
男 hedong (hedong) ★☆☆☆☆ -
盒子活跃会员
2003/4/18 16:47:26
17楼: 这里有一定需要澄清,就是你的ADOTable与数据库连接是用ConnectionString还是
用ADOConnection控件进行连接的,如果是Connectionstring属性,则
      tempADOQuery := TADOQuery.Create(nil);
      with tempADOQuery do
      begin
          ConnectionString := adotable1.ConnectionString;   //  注意这句

如果是用ADOConnection控件进行连接的,则改为
           Connection := adotable1.Connection; 
即可。
       
实在不行你就在窗体上加一个ADOQuery,然后执行上面所写的SQL语句即可。

----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 16:49:20
18楼: 我用的是ADOConnection控件进行连接的,你这一行Connection := adotable1.Connection; 
应该放在那个地方呢???
----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 16:54:45
19楼: 我改了!是将原来的ConnectionString := adotable1.ConnectionString;
改为Connection := adotable1.Connection; 但我一按按钮又错了!提示说
is not a valid integer value

----------------------------------------------
-
作者:
男 nestle_hcl (gigi) ★☆☆☆☆ -
注册会员
2003/4/18 17:02:40
20楼: 已经通过了!!在这里谢谢各位大哥大姐给我的帮助!由于我的无知耽误你们那么宝贵的时间!很对不起!但我衷心感谢你们!我现在在做毕业设计,题目是自动排课系统!可能会遇到很多问题,希望到时候各位能给小弟一点帮助!谢谢!
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行42.96875毫秒 RSS