做一个图书管理系统,现要把数据导入数据库中“图书信息”的表中,表的主键是“书号”
由于导入书号相同的话,要更改数据库中该书的库存。我的代码是这样:
一直没实现导入和去重的功能,如果后面加上dw_1update()的话,主键相同的导入就发生错误了。
该怎么办?高手请详细……我才学这个。
integer n,m1,m2,current_row,i,is_num,n1
string s_sn
dw_1.settransobject(sqlca)
n1=dw_1.rowcount()
dw_1.insertrow(0)
dw_1.accepttext()
for i = 1 to n1
is_num=0
s_sn=dw_1.getitemstring(i,"书名")
n=dw_1.GetItemNumber(i,"数量")
select count(书名) into :is_num from 图书信息 where 书名=:s_sn using sqlca;
select 图书信息.数量,图书信息.库存 into :m1 :m2 from 图书信息 where 图书信息.书名=:s_sn using sqlca;
if is_num>0 then
m1=m1+n
m2=m2+n
update 图书信息
set 图书信息.数量=: m1, 图书信息.库存=: m2
where 图书信息.书名=:s_sn;
else
MessageBox('xitongtishi','hai')
dw_1.scrolltorow(i)
update 图书信息
set 图书信息.库存=: n
where 图书信息.书名=:s_sn;
end if
next
------解决方案--------------------
else后面应该是Insert而不是update了
或者是循环找重复的书名的行,在更新库存后delete该行。最后剩下的就是不重复书名的数据了,update就可以了
------解决方案--------------------
dw_1.insertrow(0)
这句干什么