我有3个edit、一个dbgrid,我想第一个edit输入自己的内容,但是要9位,第一位要是字母,其他8位是数字,
 第二个edit中的内容要自动从数据表中选出来,从以第一个edit内容为主健值的数据表中。
 第三个edit要自动显示系统的时间,之后这三个edit的内容输入到dbgrid中,解决者给200分,

解决方案 »

  1.   

    第一个edit的onkeypress事件中判断是否第一个是字母,后面的是数字
      if length(trim(edit1.text))=1 then
        begin
          if not ((key>='a') and (key<='z')) or ((key>='A') and (key<='Z')) then
            key=#0;
        end
      else
        begin
          if not (key>='0') and (key<='9') then
            key:=#0;
        end;
    第二个edit
      query1.close;
      query1.sql.clear;
      query1.sql.add('select fieldname from tablename where key='+trim(edit1.text));
      query1.open;
      if query1.eof<>query1.bof then//判断结果集是否为控
        edit2.text:=query1.fields[0].asstring;
      query1.close;
    第三个edit
      edit3.text:=datetimetostr(now);
    怎么给我200分阿?呵呵!
      

  2.   

    对了,上面fieldname是你edit2里面要显示的字段,key是你edit1对应的字段名,tablename是你要查询的表名
    最后
    query1.close;
    query1.sql.clear;
    query1.sql.add('insert into tablename (fieldname1,fieldname2,fieldname3) 
         values (edit1.text,edit2.text,edit3.text)');
    query1.execsql;或者
    table1.tablename:=tablename//你要写的表
    table1.fieldbyname('fieldname1').asstring:=edit1.text;
    table1.fieldbyname('fieldname2').asstring:=edit2.text;
    table1.fieldbyname('fieldname3').asstring:=edit3.text;
    table1.post;
    都可以
      

  3.   

    忘了,刚才你说要dbgrid可以这样
    dbgrid.datasource.dataset.locate('fieldname1',vararray(edit1.text),[]);
    edit2.text:=dbgrid.datasource.dataset.fieldbyname('fieldname2').asstring;
    dbgrid.datasource.dataset.fieldbyname('fieldname3').asstring:=edit3.text;
      

  4.   

    高手,我的第一个edit应该是只允许输入9位,多或者少都要提示输入错误,在重新输入,怎么解决??????
       再有我的第一个edit输入的内容必须是以经存在的一个数据表中的一个字段的内容,如果不存在也应该给提示说不存在,怎么解决????           请帮帮忙!!!谢谢了,
               我会多给分的,
      

  5.   

    你的问题可以这么解决
    edit1.keypress事件中判断如果长度超过9就不处理
    if length(edit1.text)>9 then
      key:=#0;
    第二个问题可以这么解决
    当输入完9个字符的时候到数据库中去查询locate函数是一个可以返回true/false的,可以判断返回值来确定是不是存在,不过locate函数使用上要注意必须存在主键,而且当数据库存在一些小的问题的时候会报出access violation的错,要注意!