我的數據庫存儲器代碼如下:
CREATE PROCEDURE fPurch_store(@StringItem char)
as
set nocount on
declare @fStoreapp varchar (20)
declare @fStore_po varchar (20)
declare @fStore_item varchar (20)
declare @fStore_custome varchar (20)
declare @fStore_pudate datetime
declare @fStore_outdate datetime
declare @fStore_indate datetime
declare @fStore_pri varchar(30)
declare @fStore_name varchar(30)
declare @fStore_dec varchar(50)
declare @fStore_num float(8)
declare @fStore_total float(8)
declare @fStore_until varchar(8)
declare @fStore_store float(8)
declare @fStore_memo varchar(100)
-- select from purcheseapp where purchese=@StringItem
begin tran
declare crTstore cursor LOCAL for
select
purcheseapp, purchese_po, purchese_item, purchese_customer,purchese_date,
purchese_date, purchese_codeno, purchese_name, purchese_dec, purchese_num,
purchese_total, purchese_until, purchese_total, purchese_memo
from purcheseapp where purcheseapp=@stringItem
open crTstore
fetch next from crTstore into
@fStoreapp, @fStore_po, @fStore_item , @fStore_custome, @fStore_outdate,
@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_num,
@fStore_total, @fStore_until, @fStore_store, @fStore_memo
-- WHILE @@FETCH_STATUS = 0
begin
insert into purchese_store(
Storeapp,Store_po, Store_item,Store_custome,Store_outdate,Store_indate,
Store_pri,Store_name,Store_dec,Store_total,Store_until,Store_store,
Store_memo)
values(
@fStoreapp, @fStore_po,@fStore_item , @fStore_custome,@fStore_outdate,
@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_total,
@fStore_until, @fStore_store, @fStore_memo)
end
fetch next from crTstore into
@fStoreapp, @fStore_po, @fStore_item , @fStore_custome, @fStore_outdate,@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_num,
@fStore_total, @fStore_until, @fStore_store, @fStore_memo
close crTstore
deallocate crTstore
--WHILE @@FETCH_STATUS <> 0
if @@error<>0
begin
Rollback Tran
end
else
begin
Commit Tran
end
SET NOCOUNT OFF
GO
在delphi中是這樣調用的
begin
ADOStoredProc2.Parameters.Clear;
ADOStoredProc2.Parameters.Add;
ADOStoredProc2.Parameters[0].Name :='@StringItem';
ADOStoredProc2.Parameters.ParamByName('@StringItem').Value:=string(edit2.Text);
ADOStoredProc2.execproc;
end;
但運行是它總是寫入一筆空值,我在存儲器中硬賦值給@stringItem卻只能寫入一筆記錄,而Purcheseapp中明明有三筆記錄,後面兩筆自動掉失,其原因經我分析為:在DELPHI中賦值沒有真正賦給存儲器中的@stringItem,在存儲器中游標肛代碼中只能讀取第一筆記錄,不能提取下一筆。這樣造成每次運行時只是寫入一筆空記錄,請高手幫忙解決此問題,分不夠可以再加,我現在只有這麼多分,謝謝!!!!
CREATE PROCEDURE fPurch_store(@StringItem char)
as
set nocount on
declare @fStoreapp varchar (20)
declare @fStore_po varchar (20)
declare @fStore_item varchar (20)
declare @fStore_custome varchar (20)
declare @fStore_pudate datetime
declare @fStore_outdate datetime
declare @fStore_indate datetime
declare @fStore_pri varchar(30)
declare @fStore_name varchar(30)
declare @fStore_dec varchar(50)
declare @fStore_num float(8)
declare @fStore_total float(8)
declare @fStore_until varchar(8)
declare @fStore_store float(8)
declare @fStore_memo varchar(100)
-- select from purcheseapp where purchese=@StringItem
begin tran
declare crTstore cursor LOCAL for
select
purcheseapp, purchese_po, purchese_item, purchese_customer,purchese_date,
purchese_date, purchese_codeno, purchese_name, purchese_dec, purchese_num,
purchese_total, purchese_until, purchese_total, purchese_memo
from purcheseapp where purcheseapp=@stringItem
open crTstore
fetch next from crTstore into
@fStoreapp, @fStore_po, @fStore_item , @fStore_custome, @fStore_outdate,
@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_num,
@fStore_total, @fStore_until, @fStore_store, @fStore_memo
-- WHILE @@FETCH_STATUS = 0
begin
insert into purchese_store(
Storeapp,Store_po, Store_item,Store_custome,Store_outdate,Store_indate,
Store_pri,Store_name,Store_dec,Store_total,Store_until,Store_store,
Store_memo)
values(
@fStoreapp, @fStore_po,@fStore_item , @fStore_custome,@fStore_outdate,
@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_total,
@fStore_until, @fStore_store, @fStore_memo)
end
fetch next from crTstore into
@fStoreapp, @fStore_po, @fStore_item , @fStore_custome, @fStore_outdate,@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_num,
@fStore_total, @fStore_until, @fStore_store, @fStore_memo
close crTstore
deallocate crTstore
--WHILE @@FETCH_STATUS <> 0
if @@error<>0
begin
Rollback Tran
end
else
begin
Commit Tran
end
SET NOCOUNT OFF
GO
在delphi中是這樣調用的
begin
ADOStoredProc2.Parameters.Clear;
ADOStoredProc2.Parameters.Add;
ADOStoredProc2.Parameters[0].Name :='@StringItem';
ADOStoredProc2.Parameters.ParamByName('@StringItem').Value:=string(edit2.Text);
ADOStoredProc2.execproc;
end;
但運行是它總是寫入一筆空值,我在存儲器中硬賦值給@stringItem卻只能寫入一筆記錄,而Purcheseapp中明明有三筆記錄,後面兩筆自動掉失,其原因經我分析為:在DELPHI中賦值沒有真正賦給存儲器中的@stringItem,在存儲器中游標肛代碼中只能讀取第一筆記錄,不能提取下一筆。這樣造成每次運行時只是寫入一筆空記錄,請高手幫忙解決此問題,分不夠可以再加,我現在只有這麼多分,謝謝!!!!
解决方案 »
- 谁能帮助把这个代码转成C++?谢谢
- printer打印的边界设置问题?
- 如果实现在工具栏中的闪烁提示
- 7本delphi的书,170元包邮,UP有分! [email protected]
- 如何从面板上删除一个控件
- http://www.qqst.com/film/film.asp?id=fanhongbin1979 全国最优秀的免费电影网站之一,进来顶多后悔一时,不进来可能会后悔终生哦:)
- TreeView控件的TreeNode能不能保存额外的数据?
- 除了这儿大家还常去哪儿交流?
- 比较两个相同的 结构的表 每字段里的内容否相同,最优算法。
- 有谁做过用堆栈解析表达式
- 怎样使ListBox的Item折行显示文本
- 简单的关于选定DBGrid中的记录的问题.多谢赐教!
as
set nocount on
declare @fStoreapp varchar (20)
declare @fStore_po varchar (20)
declare @fStore_item varchar (20)
declare @fStore_custome varchar (20)
declare @fStore_pudate datetime
declare @fStore_outdate datetime
declare @fStore_indate datetime
declare @fStore_pri varchar(30)
declare @fStore_name varchar(30)
declare @fStore_dec varchar(50)
declare @fStore_num float(8)
declare @fStore_total float(8)
declare @fStore_until varchar(8)
declare @fStore_store float(8)
declare @fStore_memo varchar(100)
-- select from purcheseapp where purchese=@StringItem
begin tran
declare crTstore cursor LOCAL for
select
purcheseapp, purchese_po, purchese_item, purchese_customer,purchese_date,
purchese_date, purchese_codeno, purchese_name, purchese_dec, purchese_num,
purchese_total, purchese_until, purchese_total, purchese_memo
from purcheseapp where purcheseapp=@stringItem
open crTstore
fetch next from crTstore into
@fStoreapp, @fStore_po, @fStore_item , @fStore_custome, @fStore_outdate,
@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_num,
@fStore_total, @fStore_until, @fStore_store, @fStore_memo
while @@Fetch_status=0
begin
insert into purchese_store(
Storeapp,Store_po, Store_item,Store_custome,Store_outdate,Store_indate,
Store_pri,Store_name,Store_dec,Store_total,Store_until,Store_store,
Store_memo)
values(
@fStoreapp, @fStore_po,@fStore_item , @fStore_custome,@fStore_outdate,
@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_total,
@fStore_until, @fStore_store, @fStore_memo) fetch next from crTstore into
@fStoreapp, @fStore_po, @fStore_item , @fStore_custome, @fStore_outdate,@fStore_indate, @fStore_pri , @fStore_name, @fStore_dec, @fStore_num,
@fStore_total, @fStore_until, @fStore_store, @fStore_memo
end close crTstore
deallocate crTstore
if @@error<>0
begin
Rollback Tran
end
else
begin
Commit Tran
end
SET NOCOUNT OFF
GO
begin
ADOStoredProc2.Parameters.Clear;
ADOStoredProc2.Parameters.Add;
ADOStoredProc2.Parameters[0].Name :='@StringItem';
ADOStoredProc2.Parameters.ParamByName('@StringItem').Value:=string(edit2.Text);
ADOStoredProc2.execproc;
end;