发新话题
打印

insert的问题

insert的问题

页面放了一个panel,里面一个edit,一个button,然后在button的onclick事件里加了个函数,如下
               function insertdb($sender, $params)
               {
               $this->Table1->Open();
               $this->Table1->Append();
               $this->Table1->ID=45;
               $this->Table1->MINGCHENG=$this->Edit1->Text;
               $this->Table1->SHIFOUZHUCE=2;
               $this->Table1->Post();
               $this->Table1->Close();
               }

运行的时候出现问题,提示无法将null插入到'ID'中(这里我的ID为pk),错误如下:
Callstack #0 File: C:\test\unit4.php Line: 47(这里47行为$Unit4->loadResource(__FILE__);)
  |_Callstack #1 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1698
    |_Callstack #2 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1745
      |_Callstack #3 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1410
        |_Callstack #4 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\stdctrls.inc.php Line: 3439
          |_Callstack #5 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\classes.inc.php Line: 1306
            |_Callstack #6 File: C:\test\unit4.php Line: 30(这里30行为$this->Table1->Post();)
              |_Callstack #7 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\db.inc.php Line: 1405
                |_Callstack #8 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\db.inc.php Line: 816
                  |_Callstack #9 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\dbtables.inc.php Line: 881
                    |_Callstack #10 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\adodb\adodb.inc.php Line: 1834
                      |_Callstack #11 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\adodb\drivers\adodb-oci8.inc.php Line: 769
                        |_Callstack #12 File: D:\program files\CodeGear\Delphi for PHP\1.0\vcl\adodb\adodb.inc.php Line: 907

根据错误提示查看源码,发现dbtables.inc.php Line: 881之前有段代码,
if (is_array($this->_keyfields))
                {
                    reset($this->_keyfields);
                    while(list($key, $fname)=each($this->_keyfields))
                    {
                        unset($this->fieldbuffer[$fname]);
                    }
                }
}

(此为881行)$insertSQL = $this->Database->_connection->AutoExecute($this->TableName, $this->fieldbuffer, 'INSERT');

在这里将keyfield的值都销毁了,当然插不进去了,搞不懂为什么要加这段代码?往高手解惑

[ 本帖最后由 echo 于 2007-10-23 16:51 编辑 ]

TOP

尝试下 把$this->Table1->Close();屏蔽掉?

TOP

发新话题