2

假设我有一个名为“test”的表,其中包含名为 和 的test_idtest_nametest_age。我使用了一个名为的检索参数:al_test_id来提示用户插入一个 id 并在数据库中搜索相应的 id 条目,如果找到,则将其显示给用户。现在,如果没有找到条目,那么我希望用户能够使用他/她作为检索参数输入的 id 插入新行。

我怎样才能做到这一点?

4

1 回答 1

3

所以,这个问题有很多解决方案。这是一个。

在用户启动搜索时触发的事件中(注意 ii_TestID 是一个实例变量,其他变量声明是本地的并留给您):

ii_TestID = Integer (sle_SearchTest.Text)
ll_RowCount = dw_Test.Retrieve (ii_TestID)
IF ll_RowCount = 0 THEN dw_Test.InsertRow(0)

我将假设 UI 中没有添加新测试结果的按钮,因此我们一次只处理一个。如果要保存:

li_ID = dw_Test.GetItemNumber (1, "test_id")
IF IsNull (li_ID) OR li_ID = 0 THEN dw_Test.SetItem (1, "test_id", ii_TestID)
dw_Test.Update()

为什么我要在最后一分钟才设置 test_id?所以我可以在窗口的 CloseQuery 事件中编写这样的代码:

IF dw_Test.ModifiedCount() > 0 or dw_Test.DeletedCount() > 0 THEN
   CHOOSE CASE MessageBox ("Huh?", "Would you like to save your changes before exiting?", Question!, YesNoCancel!)
      CASE 1
         EVENT ue_Save()
      CASE 2
         // do nothing
      CASE 3
         RETURN 1
   END CHOOSE
END IF

如果我在 InsertRow() 之后立即更改了 test_id,那么 ModifiedCount() 会立即将该行注册为已更改,即使用户尚未执行任何操作。没有什么比电脑提示我在我没有做任何更改时保存更改更烦人的了。

祝你好运,

特里。

于 2010-06-16T12:22:22.687 回答