create procedure procinsertKardTypeTable --新增 卡的类型能 时间:2005-4-4
@KardTypeId varchar(2) ,
@KardTypeName varchar(50)
as
begin
begin tran
insert KardTypeTable(KardTypeId,KardTypeName)
values (@KardTypeId,@KardTypeName)
if @@error<>0 or @@rowcount<>1
begin
raiserror('操作不成功,也许是因为存在相同的卡类型编号',16,1)
rollback tran
return
end
if @@error=0
commit tran
else
rollback tran
endgoprocedure TKaTypeSetForm.Button1Click(Sender: TObject);
begin ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='procinsertKardTypeTable';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text);
ADOStoredProc1.Parameters.ParamByName('@KardTypeName').Value:=trim(edit2.Text);
ADOStoredProc1.Prepared:=true;
try
ADOStoredProc1.ExecProc;
showmessage('新增卡类型成功');
except
on E:exception do
showmessage(E.Message);
end; end;
我在 edit1 和 edit2 中 分别 输入 01 和 xx
然后 单击 Button1 ,能把数据插入到表中我继续在 edit1 和 edit2 中 分别 输入 02 和 yy 出现下面的错误:
project gamesys.exe raised exception class eaccessviolation with messsage
'access violation at address 753cda1 in module 'sqloledb.dll' read of
address 00000018'. process stopped. use step or run to continue我真的不知道错在那里了?(注 KardTypeId 和 KardTypeName 没有任何限制)各位大哥,我是错在那里呢?盒子上的一位大哥说:ADOStoredProc1.ProcedureName改变了,那就是动态设置了,所以你得重新创建各个参数!可是我的 ADOStoredProc1.ProcedureName 没有改变啊?还有我也不知道怎么重新创建各个参数啊~谢谢 各位大哥!
@KardTypeId varchar(2) ,
@KardTypeName varchar(50)
as
begin
begin tran
insert KardTypeTable(KardTypeId,KardTypeName)
values (@KardTypeId,@KardTypeName)
if @@error<>0 or @@rowcount<>1
begin
raiserror('操作不成功,也许是因为存在相同的卡类型编号',16,1)
rollback tran
return
end
if @@error=0
commit tran
else
rollback tran
endgoprocedure TKaTypeSetForm.Button1Click(Sender: TObject);
begin ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='procinsertKardTypeTable';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text);
ADOStoredProc1.Parameters.ParamByName('@KardTypeName').Value:=trim(edit2.Text);
ADOStoredProc1.Prepared:=true;
try
ADOStoredProc1.ExecProc;
showmessage('新增卡类型成功');
except
on E:exception do
showmessage(E.Message);
end; end;
我在 edit1 和 edit2 中 分别 输入 01 和 xx
然后 单击 Button1 ,能把数据插入到表中我继续在 edit1 和 edit2 中 分别 输入 02 和 yy 出现下面的错误:
project gamesys.exe raised exception class eaccessviolation with messsage
'access violation at address 753cda1 in module 'sqloledb.dll' read of
address 00000018'. process stopped. use step or run to continue我真的不知道错在那里了?(注 KardTypeId 和 KardTypeName 没有任何限制)各位大哥,我是错在那里呢?盒子上的一位大哥说:ADOStoredProc1.ProcedureName改变了,那就是动态设置了,所以你得重新创建各个参数!可是我的 ADOStoredProc1.ProcedureName 没有改变啊?还有我也不知道怎么重新创建各个参数啊~谢谢 各位大哥!
ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='procinsertKardTypeTable';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftstring,pdinput,2,nil);
ADOStoredProc1.Parameters.CreateParameter('@KardTypeName',ftstring,pdinput,50,nil);
ADOStoredProc1.Parameters.ParamByName('@KardTypeId').Value:=trim(edit1.Text);
ADOStoredProc1.Parameters.ParamByName('@KardTypeName').Value:=trim(edit2.Text);编译时出现的错误是:
incompatible types:'olevariant' and 'pointer'我应该怎样修改呢?谢谢!
比如,我需要插入的数据是整型:
是不是这样啊:
ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftinteger,pdinput,2,strtoint(edit1.text));还是:
ADOStoredProc1.Parameters.CreateParameter('@KardTypeId',ftinteger,pdinput,2,edit1.text);请教 LZGUI 大哥 ,这里还需要 strtoint 吗?谢谢!