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):

























