我写了一个数据查询模块,它的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.
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.
2。你应该是第一次做数据库程序吧,第一个登陆框不是你的。
把Database.LoginPrompt:=false
能详细讲一点怎么才能把实际的值插入。我在程序中想插入
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;
我写了一个数据查询模块,它的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 失败。
请问这是怎么回事?