select
CODE,
NAME,
STGRPCODE,
(
select
TOP 1 S.DEFINITION_
from
LG_301_SPECODES S
WHERE
(
(
(S.CODETYPE = 4)
AND (S.SPECODETYPE = 0)
)
OR (
(S.CODETYPE = 4)
AND (S.SPECODETYPE > 0)
)
OR (
(S.CODETYPE > 4)
)
)
AND (
(
(S.CODETYPE = 4)
AND (S.SPECODETYPE <= 0)
)
OR (
(S.CODETYPE < 4)
)
)
AND S.SPECODE = I.STGRPCODE
) STGRPCODE_A,
SPECODE,
(
select
TOP 1 S.DEFINITION_
from
LG_301_SPECODES S
WHERE
S.SPECODE = I.SPECODE
AND S.SPETYP1 = 1
AND S.CODETYPE = 1
AND S.SPECODETYPE = 1
) SPECODE_A,
SPECODE2,
(
select
TOP 1 S.DEFINITION_
from
LG_301_SPECODES S
WHERE
S.SPECODE = I.SPECODE2
AND S.SPETYP2 = 1
AND S.CODETYPE = 1
AND S.SPECODETYPE = 1
) SPECODE2_A,
SPECODE3,
(
select
TOP 1 S.DEFINITION_
from
LG_301_SPECODES S
WHERE
S.SPECODE = I.SPECODE3
AND S.SPETYP3 = 1
AND S.CODETYPE = 1
AND S.SPECODETYPE = 1
) SPECODE3_A,
SPECODE4,
(
select
TOP 1 S.DEFINITION_
from
LG_301_SPECODES S
WHERE
S.SPECODE = I.SPECODE4
AND S.SPETYP4 = 1
AND S.CODETYPE = 1
AND S.SPECODETYPE = 1
) SPECODE4_A
from
LG_301_ITEMS I
Tag: specode
LOGO LOD SATINALMA FATURASINA MALZEME ÖZELKODU4 GETİRME
Talep: Logo object designer uyarlamada Logo satınalma faturasına, satır eğer malzeme ise ilgili malzemenin tablosundan özelkod4 (specode4) getirme talebi.
İşlem(Tiger 3 2.71) :
Önce InvoiceGrid grid componentine tıklayıp colattribs içinden MalzemeOzelKodu eklendi:

Formshow eventi:
Sub FormShow()
MGridName="InvoiceGrid"
MaxGridLine=MGridLines("InvoiceGrid")-1
for i=0 to MaxGridLine
GetGridRowHandle("InvoiceGrid",i,recH)
AppTables[9].GetIntFieldR(recH,"STOCKREF",intSTOCKREF)
AppTables[9].GetIntFieldR(recH,"LINETYPE",intLineType)
if intSTOCKREF>0 and intLineType=0 then
str(intSTOCKREF,STRSTOCKREF)
TableName = Application.GetTableName(1, Application.CompanyId, Application.FiscPerdId)
SPECODE4= G_GETTOP1TORESULT(TableName,false,4 ,"SPECODE4","LOGICALREF="+STRSTOCKREF)
SetCellText(MGridName,i,10071,SPECODE4)
end if
next i
End Sub
Controlexit eventi(malzeme kodu / malzeme açıklamasına girince):
Sub ControlExit(ctrl as String, index as Integer)
If ctrl="InvoiceGrid" and (Index=2 or Index=3) Then
MGridName="InvoiceGrid"
GridRow=MGridRow(MGridName)
GetCellText(MGridName,GridRow,16,TUR)
if TUR="Malzeme" Then
GetCellText(MGridName,GridRow,1,KODU)
TableName = Application.GetTableName(1, Application.CompanyId, Application.FiscPerdId)
SPECODE4= G_GETTOP1TORESULT(TableName,false,4 ,"SPECODE4","CODE='"+KODU+"'")
SetCellText(MGridName,GridRow,10071,SPECODE4)
end if
END if
End Sub
G_GETTOP1RESULT fonksiyonu(Ben Globalde kullanıyorum)
Function G_GETTOP1TORESULT(TableName as String,isCustTable as bool,RESULTFIELDTYPE as int ,SelectField as String,Where as String)
' Fielttype Alan türü. 1 Integer 2 Date(Logo formatı tarih ) 3 Float 4 Text
'TableName = Application.GetTableName(TableId, Application.CompanyId, Application.FiscPerdId)
'TableName = Application.GetCustTableName(1, Application.CompanyId, Application.FiscPerdId)
CreateQuery(MyQry1)
MyQryTable1=TableName
MySqlTxt1 = "Select top 1 "+SelectField+" From " + MyQryTable1 + " WITH(NOLOCK) WHERE "+Where
MyQry1.SetSQLText(MySqlTxt1)
If MyQry1.ExecuteDirect() Then
Res = MyQry1.First()
if Res = 0 then
if RESULTFIELDTYPE=4 then
FResult = ""
else
FResult = 0
end if
end if
Do While Res=1
MyQry1.GetFieldValue(1, RESULTFIELDTYPE, FResult)
Res=MyQry1.Next()
Loop
End if
MyQry1.Clear()
result=FResult
End Function
Not: Eğer tiger tarafında lodda eklenen kolon görünmez ise bu işlem yapılır (upgrade formsa tıklanır) test edilebilir(Her adımın yedekleme yaparak ilerlenmesini tavsiye ederim):
