假设我有一个名为“test”的表,其中包含名为 和 的test_id
三test_name
列test_age
。我使用了一个名为的检索参数:al_test_id
来提示用户插入一个 id 并在数据库中搜索相应的 id 条目,如果找到,则将其显示给用户。现在,如果没有找到条目,那么我希望用户能够使用他/她作为检索参数输入的 id 插入新行。
我怎样才能做到这一点?
假设我有一个名为“test”的表,其中包含名为 和 的test_id
三test_name
列test_age
。我使用了一个名为的检索参数:al_test_id
来提示用户插入一个 id 并在数据库中搜索相应的 id 条目,如果找到,则将其显示给用户。现在,如果没有找到条目,那么我希望用户能够使用他/她作为检索参数输入的 id 插入新行。
我怎样才能做到这一点?
所以,这个问题有很多解决方案。这是一个。
在用户启动搜索时触发的事件中(注意 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() 会立即将该行注册为已更改,即使用户尚未执行任何操作。没有什么比电脑提示我在我没有做任何更改时保存更改更烦人的了。
祝你好运,
特里。