1)我想實現:直接在dbgrid中輸入數值(只有一個字段),在輸入時如何判斷輸入是否有重復,並發出警告。
2)如何得到dbgrid中某一字段的數值(不是數據庫表内的值)?請高手指點一二!

解决方案 »

  1.   

    那就不要用dbgrid吧,用stringgrid好了,什么都是自己控制,多好
      

  2.   

    你说的基本上不太可能,因为dbgrid是直接连到表或数据集上的,如果你能够在dbgrid上输入,只要焦点移动,就提交了,所以你说的功能不可能实现
      

  3.   

    你可以把值从数据库里读出来,再写到stringgrid里呀。反之亦然。
      

  4.   

    我可能沒說清楚:我的意思是在數據寫入數據庫前判斷是否有重復的數值. qtercel(嗷嗷) 提議不錯,可以試一試.
      

  5.   

    第二個問題誰知道怎麽做嗎?
    如何直接從dbgrid中取得數值?
      

  6.   

    在table控件的Beforepost事件
    procedure TForm1.Table1BeforePost(DataSet: TDataSet);
    begin
      with table2 do
      begin
        databasename:='c:\';
        tablename:='renshi.dbf';
        indexfieldnames:='bianhao';
        if not active then open;      {判断数据库是否打开}
        Refresh;         {刷新数据库}
        setkey;       {设置数据库为搜索状态}
        fieldbyname('bianhao').asstring:=dbedit1.text; {设置输入的编号 字段内容为搜索的标准}
        gotokey;  {移动到搜寻的记录上,完成搜索}
        if gotokey then   {如果找到搜索的记录,则gotokey返回true}
        begin
              showmessage('输入的编号已存在!请重新输入');
             abort;           {终止该操作}
        end;
      end;
    以上是对关键字的重復判斷,如不是关键字就将GOTOKEY改为用locate函数对以上程序做些修改就可以了