我写了一个数据查询模块,它的SQL属性如下:
insert into salary_other
(id,yearmonth,person,type,name,money,description)
values(:id,:year,:person,:type,:name,:money,:descrip)
当把它的ACTIVE属性变成TRUE时,提示有错如下:
key violation
[microsoft][odbc sql sevel driver][sql sevel]
无法将NULL值插入到‘TYPE’,表“Mydatabase.dbo.salary.other",该列不允许空值。Insert 失败。
请问这是怎么回事?
还有我做的登陆窗体为什么要输入两次正确的密码才能进入。源程序如下:
unit u_login;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons;type
  TF_login = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    i_user: TEdit;
    i_passwd: TEdit;
    B_login: TBitBtn;
    B_cancel: TBitBtn;
    procedure B_loginClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  F_login: TF_login;implementation
uses salary, u_datamodule;{$R *.dfm}procedure TF_login.B_loginClick(Sender: TObject);
var
  passwd:String;
begin
  With DM_main do
  begin
    Database.Connected:=True;
    passwd:=i_passwd.Text;
    Q_login.Params.ParamValues['USER']:=i_user.Text;
    Q_login.Params.ParamValues['PASSWD']:=passwd;
    Q_login.Open;
  if Q_login['COUNT']=1 then
   begin
     Q_login.Close;
      Close;
    end
    else
   begin  //认证失败
      Application.MessageBox('请确认用户名和密码,注意大小写!', '认证失败',MB_OK);
      Database.Connected:=False;
    end;
  end;
end;
procedure TF_login.FormShow(Sender: TObject);
begin
  DM_main.Database.Connected:=False;
  i_passwd.Text:='';
end;
end.

解决方案 »

  1.   

    1.你没有把实际的值插入。如果你没有漏写东西
    2。你应该是第一次做数据库程序吧,第一个登陆框不是你的。
    把Database.LoginPrompt:=false
      

  2.   

    是的我是一个新手,希望大家多指点一下,谢谢!
    能详细讲一点怎么才能把实际的值插入。我在程序中想插入
        Params[0].Value:=counter;
        Params[1].Value:=yearmonth;
        Params[2].Value:=person_id;
        Params[3].Value:=IntToStr(i_type.ItemIndex);
        Params[4].Value:=i_name.Text;
        Params[5].Value:=i_money.Value;
        Params[6].Value:=i_description.Text;
        ExecSQL;
      

  3.   

    帮忙啊!
    我写了一个数据查询模块,它的SQL属性如下:
    insert into salary_other
    (id,yearmonth,person,type,name,money,description)
    values(:id,:year,:person,:type,:name,:money,:descrip)
    当把它的ACTIVE属性变成TRUE时,提示有错如下:
    key violation
    [microsoft][odbc sql sevel driver][sql sevel]
    无法将NULL值插入到‘TYPE’,表“Mydatabase.dbo.salary.other",该列不允许空值。Insert 失败。
    请问这是怎么回事?