“access索引或主关键字不能包含一个空 (Null)值”是啥意思?怎么解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“access索引或主关键字不能包含一个空 (Null)值”是啥意思?怎么解决?相关的知识,希望对你有一定的参考价值。

1、这个提示的意思是你的Excel中的关键字段有空值。你要先点教师编号,输入某些数值,然后才可以编辑名字,工作日期等数据;

2、主键中不允许有重复值和空值的,主键可以是一个字段或是一组字段,一组字段叫联合主键;

3、ACCESS中主健或索引都不能超过10个,超过10个,它会有信息提示你的;

4、检查一下新的数据,要不把原始数据表的主码取消。

主健当然是不允有重复值,不然就不叫主健了,但空值还是可以的,不过最好设置两个相关的属性"必填字段”,和"允许空字符串",这两个属性按字面意思理解就是了。

参考技术A

在设计窗口中(建立并设计字段的那个窗口,要进入这个窗口需点击三角尺图标),将左下角的常规卡上的允许空字符串的否改成是,就行了。

参考技术B 我也是遇到同样情况,网上搜了一圈,无解,包括所有字段填满、删除导入的字段重新添加,都不顶。最后发现,在别的模式下显示时(我也不知道按什么键看到一个表),看到我的一条记录前面,有很多行空值。可能还是导入execl文件时,带进来多余的东西了。然后,重新打开execl,把我要的那部分复制,新建一个execl文件,只粘贴要的这部分(原来是有10来页的一个大表),然后导入,一切ok,主键都有了。

如何在鼠标左键按下时触发循环 autoclicker c++

【中文标题】如何在鼠标左键按下时触发循环 autoclicker c++【英文标题】:How to trigger loop when left mouse down autoclicker c++ 【发布时间】:2020-03-07 08:48:31 【问题描述】:

嘿,我试图让我的自动点击器只在我按住鼠标左键时点击。

void clikr()

  INPUT Input =0;
  int sleepzZz = 1000 / times;
  active = false;
  system(“cls”);
  while(1)

    if((GetAsyncKeyState(VK_LBUTTON) & 0x8000) != 0)
    
      Sleep(sleepzZz);
      Input.type = INPUT_MOUSE
      Input.mi.dwFlags =  MOUSEEVENTF_LEFTDOWN;
      ::SendInput(1, &Input, sizeof(INPUT))

      ::ZeroMemory(&Input, sizeof(INPUT));
      Input.type = INPUT_MOUSE;
      Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
      ::SendInput(1, &Input, sizeof(INPUT));


     

 

(我在手机上输入了这个,我很抱歉????) 基本上,循环会自行取消,因为它会发送 leftup。

我知道我可以将它绑定到另一个键,但是当我按住 leftdown 时我将如何让它工作

请帮忙

【问题讨论】:

【参考方案1】:

使用GetAsyncKeyStateGetKeyState 不适合这种情况。这是来自MSDN 的引用,指出您正在尝试做的事情不适合将这两个功能与SendInput 结合使用。

此函数不会重置键盘的当前状态。调用该函数时已按下的任何键都可能会干扰该函数生成的事件。

非常重要:您的目标应该是区分程序未模拟的输入和程序模拟的输入。 这并不意味着您应该使此代码复杂化并使用钩子验证输入是否合法(有关此方法的更多信息,请参见答案here)。您只想查看循环中是否生成了输入。

我想出了这个类似的解决方案,遗憾的是它仍然使用这两个函数,因为我不知道其他会测试输入的函数。 它并不完美,但它是我用简单代码所能得到的最接近的。

VOID WINAPI ClickLoop()

    /** wait for any LMB press. */
    while ((GetAsyncKeyState(VK_LBUTTON)&0x8000) == 0)
        Sleep(1);

    INT nCurrKeyState = GetKeyState(VK_LBUTTON);
    INT nPrevKeyState;

    do
    
        INPUT Input;
        ZeroMemory(&Input, sizeof(INPUT));
        Input.type = INPUT_MOUSE;


        Input.mi.dwFlags =  MOUSEEVENTF_LEFTUP;
        SendInput(1, &Input, sizeof(INPUT));

        Sleep(0); // how many miliseconds between the clicks.
        Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
        SendInput(1, &Input, sizeof(INPUT));


        // !! Do not set this number too low
        // !! Setting it too low might cause infinite loops
        //     and you cannot stop your clicks at first try.
        Sleep(70); // how many miliseconds the click is held.

        nPrevKeyState = nCurrKeyState;
        nCurrKeyState = GetKeyState(VK_LBUTTON);

        if ((GetAsyncKeyState(VK_LBUTTON)&0x8000) == 0)
            break;
    while (nCurrKeyState != nPrevKeyState);

在你的主要内容中,你可以有类似的东西:

int main()

    while(TRUE)
    
        printf("In click loop...\n");
        ClickLoop();
    

    return 0;

不过,这不是一个合适的解决方案,但除了GetAsyncKeyStateGetKeyState 之外,我不知道任何其他用于测试Windows 上的键的功能。它还有一个缺点,您不能将点击之间的时间设置为小于 70~80 毫秒,或者您可以打破它。

【讨论】:

以上是关于“access索引或主关键字不能包含一个空 (Null)值”是啥意思?怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章