环境:
win7,delphi2010,mssql2005好像没有参数的,一个窗体,一个数据感知控件(DBEdit1)
NewRecord的时候,赋值
DBEdit1.Field.Value := 'DTED10-';
字段属性
[DjID] [nvarchar](20) NOT NULL
----------
就是这样啊,打开窗体后,在控件 DBEdit1 中输入什么或者更改什么,都出现这样的错误提示:
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
----------
也试过不用数据感知控件(DBEdit1),改用使用Edit1(TEdit),当 Post 的时候还是出现这样的错误提示。
但是很郁闷,提示之后,再 post ,却又可以 post 进去了。字段属性应该没有什么问题啊?为什么呢?还有哪儿没有注意的问题?谢谢大家了。
win7,delphi2010,mssql2005好像没有参数的,一个窗体,一个数据感知控件(DBEdit1)
NewRecord的时候,赋值
DBEdit1.Field.Value := 'DTED10-';
字段属性
[DjID] [nvarchar](20) NOT NULL
----------
就是这样啊,打开窗体后,在控件 DBEdit1 中输入什么或者更改什么,都出现这样的错误提示:
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
----------
也试过不用数据感知控件(DBEdit1),改用使用Edit1(TEdit),当 Post 的时候还是出现这样的错误提示。
但是很郁闷,提示之后,再 post ,却又可以 post 进去了。字段属性应该没有什么问题啊?为什么呢?还有哪儿没有注意的问题?谢谢大家了。
使用的是adotable
把你所有字段类型和用edit控件的post代码贴出来看看
Mx: TADOTable;
在 Zb.State in [DsEdit,DsInsert] 下,以下任何一个字段的更改(还没有Post),都是这个错误提示。
delphi字段----mssql2005字段类型:
DBEdit1:TDBEditEh----[DjID] [nvarchar](20) NOT NULL,
DBEdit4:TDBDateTimeEditEh----[kdDateTime] [smalldatetime] NULL CONSTRAINT [DF_ExpOrders_kdDateTime] DEFAULT (getdate()),
DBEdit6:TDBDateTimeEditEh----[iDate] [smalldatetime] NULL,
DBEdit8:TDBEdit----[Nation] [nvarchar](50) NULL,
OrdersMemo1:TDBMemo----[More] [ntext] NULL,
OrdersMemo2:TDBMemo----[reMark] [ntext] NULL,
//-我把代码贴出来吧。很乱的,不够勇气面对。其实真的没有什么参数,就只有一个“DjNo”
//-以上是前面一个窗体DBgridEh的OnDblClick事件
procedure Tfrm_ExpKdZb.ac_EditExecute(Sender: TObject);
begin
if zbRcd<>0 then
begin
frm_ExpKdEdit:=Tfrm_ExpKdEdit.Create(Application);
frm_ExpKdEdit.Tag :=1;
frm_ExpKdEdit.DjNo := OrdersGrid.Fields[0].Value;
frm_ExpKdEdit.ShowModal;
frm_ExpKdEdit.Free;
OpenDataSet;
end
else
application.MessageBox('没有单据可以操作','提示',MB_OK);
end;
//-以上是前面一个窗体DBgridEh的OnDblClick事件//-以下是出错窗体的主要代码。F8跟踪过,出错的时候也没有停留在一个固定的地方
//-反正是DBEdit或者DBEditEh或者DBMemo的任何一个更改,就弹出参数类型不正确的错误提示
public
DjNo:string;
//-这个 DjNo 是本窗口的定义。procedure Tfrm_ExpKdEdit.FormShow(Sender: TObject);
begin
self.Cursor := crHourGlass;
OpenDataSet; JiansuoNO.Text:=Zb.FieldByName('JiansuoNO').AsString;
NeiBuNO.Text:=Zb.FieldByName('NeiBuNO').AsString;
ShengChanNO.Text:=Zb.FieldByName('ShengChanNO').AsString;
case tag of
0:
begin
Zb.insert;
end;
1:
begin
Zb.Edit;
end;
2:
begin
Zb.ReadOnly;
if zb.FieldByName('SysUserName').AsString<>dm.SysUserName then
begin
ToolButton7.Enabled:=False;
ToolButton8.Enabled:=False;
ToolButton9.Enabled:=False;
ToolButton10.Enabled:=False;
DBEdit1.ReadOnly:=True;
DBEdit6.ReadOnly:=True;
DBEdit8.ReadOnly:=True;
DBEdit7.ReadOnly:=True;
DBGridEh1.ReadOnly:=True;
OrdersMemo2.ReadOnly:=True;
OrdersMemo1.ReadOnly:=True;
end; end; end; self.Cursor := crDefault;
end;procedure Tfrm_ExpKdEdit.ShowControl;
begin;
{}
if (Zb.State in [DsEdit,DsInsert]) then
begin self.ac_Add.Enabled:=false;
self.ac_Edit.Enabled:=false;
self.ac_Del.Enabled :=false;
self.ac_Print.Enabled:=false;
self.ac_RepSet.Enabled :=false;
self.ac_Save.Enabled :=true;
self.ac_Cancel.Enabled :=true; end
else
begin self.ac_Edit.Enabled:=true;
self.ac_Del.Enabled :=true;
self.ac_Print.Enabled:=false;
self.ac_RepSet.Enabled :=false;
self.ac_Save.Enabled :=false;
self.ac_Cancel.Enabled :=false;
end;
end;procedure Tfrm_ExpKdEdit.sZbDataChange(Sender: TObject; Field: TField);
begin
setControlValue;
if mx.Active then
Mx.Close;
Mx.Open;
MxRcd:=Mx.RecordCount;end;procedure Tfrm_ExpKdEdit.OpenDataSet;
begin
if tag=0 then
sqlStr_zb := ' kdDateTime >= '+''''+FormatDateTime('yyyy-mm-dd',now())+'''' +
' and kdDateTime <=' +''''+FormatDateTime('yyyy-mm-dd',now()+1)+''''+''
else
sqlStr_zb := ' DjID='+''''+DjNo+'''';
if Zb.Active then
Zb.Close;
Zb.Filter:='';
Zb.Filtered:=False;
Zb.Filter:=sqlStr_zb;
Zb.Filtered:=true;
Zb.Open;
zbRcd := Zb.RecordCount;
if Zb.FieldByName('iState').AsInteger<>0 then
begin
self.Panel5.Visible:=true;
self.Panel5.Caption :='此单作废';
end
else
self.Panel5.Visible :=false;
end;
procedure Tfrm_ExpKdEdit.dsAdoZbStateChange(Sender: TObject);
begin
ShowControl;
end;procedure Tfrm_ExpKdEdit.ac_AddExecute(Sender: TObject);
begin
Zb.insert;
end;procedure Tfrm_ExpKdEdit.ac_SaveExecute(Sender: TObject);
begin
Zb.Post;
end;procedure Tfrm_ExpKdEdit.ac_EditExecute(Sender: TObject);
begin
if Zb.FieldByName('SysUserName').AsString<>dm.SysUserName then
begin
showmessage('抱歉,您似乎不是本单的订货人,不能编辑。');
end
else
begin if zbRcd<>0 then
Zb.Edit
else
Application.MessageBox('当前子表中没有数据可以操作!','提示',MB_OK);
end;
end;procedure Tfrm_ExpKdEdit.ac_CancelExecute(Sender: TObject);
begin
Zb.Cancel;
end;procedure Tfrm_ExpKdEdit.ac_DelExecute(Sender: TObject);
begin
if Zb.FieldByName('SysUserName').AsString<>dm.SysUserName then
begin
showmessage('抱歉,您似乎不是本单的订货人,不能删除。');
end
else
begin if ((zbRcd<>0) and (Audit.RecordCount=0)) then
begin
if Application.MessageBox('你真的要删除本订单吗?','提示',MB_YESNO)=IDNO then
abort;
Zb.Delete;
end
else
Application.MessageBox('当前没有单据可以删除,或者已经添加了评审人。','提示',MB_OK); end;
end;
procedure Tfrm_ExpKdEdit.ZbNewRecord(DataSet: TDataSet);
var Sql:string;
begin
dbedit1.Field.AsString := 'DTED' + Formatdatetime('yy',now())+'-';
dbedit4.Field.AsDateTime:=now();
DBEdit6.Field.AsDateTime:=now()+14;
end;procedure Tfrm_ExpKdEdit.N1Click(Sender: TObject);
begin
if Zb.FieldByName('SysUserName').AsString<>dm.SysUserName then
begin
showmessage('抱歉,您似乎不是本单的订货人,不能编辑。');
end
else
begin
mx.insert;
end;
end;procedure Tfrm_ExpKdEdit.N2Click(Sender: TObject);
begin
if Zb.FieldByName('SysUserName').AsString<>dm.SysUserName then
begin
showmessage('抱歉,您似乎不是本单的订货人,不能编辑。');
end
else
begin
if mxRcd<>0 then
begin
mx.Edit;
end
else
Application.MessageBox('当前子表中没有数据可以操作!','提示',MB_OK);
end;
end;procedure Tfrm_ExpKdEdit.N3Click(Sender: TObject);
begin
if Zb.FieldByName('SysUserName').AsString<>dm.SysUserName then
begin
showmessage('抱歉,您似乎不是本单的订货人,不能删除。');
end
else
begin
if mxRcd<>0 then
mx.Delete
else
Application.MessageBox('当前子表中没有数据可以删除!','提示',MB_OK);
end;
end;procedure Tfrm_ExpKdEdit.N4Click(Sender: TObject);
begin
mx.Post;
end;procedure Tfrm_ExpKdEdit.N5Click(Sender: TObject);
begin
mx.Cancel;
end;procedure Tfrm_ExpKdEdit.ZbBeforePost(DataSet: TDataSet);
begin
Zb.FieldByName('DeptName').AsString:=dm.DeptName;
Zb.FieldByName('SysUserName').AsString:=dm.SysUserName;
Zb.FieldByName('DeptID').AsInteger:=dm.DeptID;
end;procedure Tfrm_ExpKdEdit.ZbBeforeDelete(DataSet: TDataSet);
var rs:TADODataSet;
begin
dm.AdoConn.Execute('delete from ExpordersItems where DjID='''+Trim(DBEdit1.Field.Value)+'''');
end;
或者你的 DBGrideh 的原始状态是被其他控件覆盖 (在其他控件下面) 后面才显示出来的?
这个问题困扰了俺好久........目前还没有完全解决.
改了部分 DBGrideh 的代码.问题是解决了.但是感觉还是不完美....
很少来这. QQ149220741