smusba
14th September 2008, 09:54
Dear All,
I get the error report when I run this report.
"process 5: Error 100(duplicate value) on tdsls982786(Max
"Process 5: Cannot continue in tdsls0441m863(<11>)"
Please help me out
bdittmar
14th September 2008, 17:06
Dear All,
I get the error report when I run this report.
"process 5: Error 100(duplicate value) on tdsls982786(Max
"Process 5: Cannot continue in tdsls0441m863(<11>)"
Please help me out
Hello,
it looks like a customized session and report.
Duplicate Value appears when inserting a record that already exists.
Regards
smusba
15th September 2008, 12:24
Dear,
I didn't get your point. Can you eloborate more on this error. Thanx in advance.
zardoz
15th September 2008, 16:04
This error indicates that when you do an insert in table tdsls982 (that is a customized table, I think) you have already an index (not necessary the primary index, could be a secondary unique index) that is already present on the table, so you cannot insert because there are duplicates...
smusba
16th September 2008, 10:48
Dear Zardoz,
Can u help me to modify according to the error. Thanx in advance.
functions:
function delete999()
{
db.retry.point()
select tdsls982.*
from tdsls982 for update
selectdo
db.delete(ttdsls982,db.retry)
commit.transaction()
endselect
}
function read.main.table()
{
count = 0
cuno = ""
dqty = 0.0
damnt = 0.0
lqty = 0.0
lamta = 0.0
tlqty = 0.0
tlamta = 0.0
tdamnt = 0.0
tdqty = 0.0
custqty = 0.0
tqty = 0.0
item.amnt = 0.0
citem.amnt = 0.0
costp = 0.0
marg = 0.0
margp = 0.0
item = ""
sno = 0
kgs = 0.0
cukgs = 0.0
cumarg = 0.0
cucostp = 0.0
cumargp = 0.0
nuni = 0.0
gcost = 0.0
cono = get.compnr()
flag = 0
copr = 0.0
select tdsls040.*
from tdsls040
where tdsls040.cotp between :cotp.f and :cotp.t
and tdsls040.crep between :crep.f and :crep.t
and tdsls040.cuno between :cuno.f and :cuno.t
selectdo
if tdsls040.cotp = "590" or tdsls040.cotp = "650" then
else
cotp = tdsls040.cotp
select tcmcs042.*
from tcmcs042
where tcmcs042.cotp = :tdsls040.cotp
selectdo
nama = tcmcs042.dsca
endselect
crep = tdsls040.crep
select tccom001.*
from tccom001
where tccom001.emno = :tdsls040.crep
selectdo
nama1 = tccom001.nama
endselect
if tdsls040.cotp = "201" or tdsls040.cotp = "301" or tdsls040.cotp = "403" or
tdsls040.cotp = "501" then
select tdsls041.*
from tdsls041
where tdsls041.orno = :tdsls040.orno
and tdsls041.item between :item.f and :item.t
and tdsls041.odat between :odat.f and :odat.t
selectdo
select tiitm001.*
from tiitm001
where tiitm001.item = :tdsls041.item
selectdo
dsca = tiitm001.dsca
endselect
select tdsls045.*
from tdsls045
where tdsls045.orno = :tdsls041.orno
and tdsls045.pono = :tdsls041.pono
and tdsls045.item = :tdsls041.item
selectdo
endselect
db.retry.point()
|if torno = tdsls041.orno then
|else
srnb= 0
|endif
select tdsls982.*
from tdsls982 for update
as set with 1 rows
selectdo
tdsls982.orno = tdsls041.orno
tdsls982.pono = tdsls041.pono
tdsls982.srnb = 0
tdsls982.item = tdsls041.item
tdsls982.cotp = tdsls040.cotp
tdsls982.dqua = tdsls041.oqua
tdsls982.amnt = tdsls041.amta
tdsls982.crep = tdsls040.crep
tdsls982.cuno = tdsls040.cuno
tdsls982.ddat = tdsls041.odat
tdsls982.copr = tdsls045.copr
db.insert(ttdsls982,db.retry)
commit.transaction()
selectempty
tdsls982.orno = tdsls041.orno
tdsls982.pono = tdsls041.pono
tdsls982.srnb = 0
tdsls982.item = tdsls041.item
tdsls982.cotp = tdsls040.cotp
tdsls982.dqua = tdsls041.oqua
tdsls982.amnt = tdsls041.amta
tdsls982.crep = tdsls040.crep
tdsls982.cuno = tdsls040.cuno
tdsls982.ddat = tdsls041.odat
tdsls982.copr = tdsls045.copr
db.insert(ttdsls982,db.retry)
commit.transaction()
|torno = tdsls041.orno
endselect
count = count + 1
|rprt_send()
endselect
else
select tdsls045.*
from tdsls045
where tdsls045.orno = :tdsls040.orno
and tdsls045.item between :item.f and :item.t
and tdsls045.ddat between :odat.f and :odat.t
|order by tdsls045.item
selectdo
select tiitm001.*
from tiitm001
where tiitm001.item = :tdsls045.item
selectdo
dsca = tiitm001.dsca
endselect
select tdsls041.*
from tdsls041
where tdsls041.orno = :tdsls045.orno
and tdsls041.pono = :tdsls045.pono
and tdsls041.item = :tdsls045.item
selectdo
endselect
db.retry.point()
select tdsls982.*
from tdsls982 for update
as set with 1 rows
selectdo
tdsls982.orno = tdsls045.orno
tdsls982.pono = tdsls045.pono
tdsls982.srnb = tdsls045.srnb
tdsls982.item = tdsls045.item
tdsls982.cotp = tdsls040.cotp
tdsls982.dqua = tdsls045.dqua
tdsls982.amnt = tdsls045.amnt
tdsls982.crep = tdsls040.crep
tdsls982.cuno = tdsls040.cuno
tdsls982.ddat = tdsls045.ddat
tdsls982.copr = tdsls045.copr
db.insert(ttdsls982,db.retry)
commit.transaction()
selectempty
tdsls982.orno = tdsls045.orno
tdsls982.pono = tdsls045.pono
tdsls982.srnb = tdsls045.srnb
tdsls982.item = tdsls045.item
tdsls982.cotp = tdsls040.cotp
tdsls982.dqua = tdsls045.dqua
tdsls982.amnt = tdsls045.amnt
tdsls982.crep = tdsls040.crep
tdsls982.cuno = tdsls040.cuno
tdsls982.ddat = tdsls045.ddat
tdsls982.copr = tdsls045.copr
db.insert(ttdsls982,db.retry)
commit.transaction()
endselect
count = count + 1
|rprt_send()
endselect
endif
endif
endselect
select tdsls982.*
from tdsls982
where tdsls982.cotp between :cotp.f and :cotp.t
and tdsls982.item between :item.f and :item.t
and tdsls982.ddat between :odat.f and :odat.t
order by tdsls982.cotp,tdsls982.item
selectdo
if cotp = tdsls982.cotp then
else
item.amnt = 0.0
costp = 0.0
marg = 0.0
margp = 0.0
kgs = 0.0
nuni = 0.0
copr = 0.0
endif
|if cuno = tdsls982.cuno then
|else
| item.amnt = 0.0
| costp = 0.0
| marg = 0.0
| margp = 0.0
| kgs = 0.0
| nuni = 0.0
| copr = 0.0
|endif
if item = tdsls982.item then
else
item.amnt = 0.0
costp = 0.0
marg = 0.0
margp = 0.0
kgs = 0.0
nuni = 0.0
copr = 0.0
|copr = tdsls982.copr
endif
select tdsls041.*
from tdsls041
where tdsls041.orno = :tdsls982.orno
and tdsls041.pono = :tdsls982.pono
and tdsls041.item = :tdsls982.item
selectdo
tdsls041.pric = tdsls041.pric / tdsls041.cvps
dqua = (tdsls982.dqua * tdsls041.cvqs)
amnt = tdsls982.amnt
endselect
select tdsls040.*
from tdsls040
where tdsls040.orno = :tdsls982.orno
selectdo
if tdsls040.ccur = "SAR" then
amnt = amnt
else
amnt = tdsls040.rats * amnt
endif
endselect
kgs = kgs + dqua
cukgs = cukgs + dqua
item.amnt = item.amnt + amnt
citem.amnt = citem.amnt + amnt
copr = tdsls982.copr
costp = copr * kgs
gcost = gcost + costp
marg = (item.amnt - costp)
if item.amnt = 0.0 then
margp = 1
else
margp = (marg/item.amnt) * 100
endif
select tcmcs042.*
from tcmcs042
where tcmcs042.cotp = :tdsls982.cotp
selectdo
nama = tcmcs042.dsca
endselect
select tccom001.*
from tccom001
where tccom001.emno = :tdsls982.crep
selectdo
nama1 = tccom001.nama
endselect
select tccom010.*
from tccom010
where tccom010.cuno = :tdsls982.cuno
selectdo
|nama1 = tccom001.nama
endselect
select tdsls040.*
from tdsls040
where tdsls040.orno = :tdsls982.orno
selectdo
endselect
select tiitm001.*
from tiitm001
where tiitm001.item = :tdsls982.item
selectdo
|dsca = tiitm001.dsca
endselect
cuno = tdsls982.cuno
item = tdsls982.item
cotp = tdsls982.cotp
orno = tdsls045.orno
rprt_send()
endselect
}
zardoz
16th September 2008, 11:27
I never understand those lines:
db.retry.point()
select tdsls982.*
from tdsls982 for update
as set with 1 rows
selectdo
tdsls982.orno = tdsls045.orno
tdsls982.pono = tdsls045.pono
tdsls982.srnb = tdsls045.srnb
tdsls982.item = tdsls045.item
tdsls982.cotp = tdsls040.cotp
tdsls982.dqua = tdsls045.dqua
tdsls982.amnt = tdsls045.amnt
tdsls982.crep = tdsls040.crep
tdsls982.cuno = tdsls040.cuno
tdsls982.ddat = tdsls045.ddat
tdsls982.copr = tdsls045.copr
db.insert(ttdsls982,db.retry)
commit.transaction()
selectempty
tdsls982.orno = tdsls045.orno
tdsls982.pono = tdsls045.pono
tdsls982.srnb = tdsls045.srnb
tdsls982.item = tdsls045.item
tdsls982.cotp = tdsls040.cotp
tdsls982.dqua = tdsls045.dqua
tdsls982.amnt = tdsls045.amnt
tdsls982.crep = tdsls040.crep
tdsls982.cuno = tdsls040.cuno
tdsls982.ddat = tdsls045.ddat
tdsls982.copr = tdsls045.copr
db.insert(ttdsls982,db.retry)
commit.transaction()
endselect
It seems you select all the times the same record (there is no where condition) and the action is always insert, even if the record is found...
Maybe you have to add a where condition and put a db.update instead of the db.insert in selectdo section