NaciO

Sipariş fişinin satırlarına eklenen bir kolona nasıl veri yazıp okuyabilirim?

  Tiger/Logo Object Designer (LOD)

Sipariş fişinin satırlarına eklenen bir kolona nasıl veri yazıp okuyabilirim?


uyarlama LOD Grid


NaciO

Onaylanmış Cevap

LOD ile yapılan uyarlamalarda, ek bilgi sistemi dediğimiz ve kod yazmadan ana tabloya (örneğin malzeme kartları tablosu ITEMS'a veya sipariş fişleri tablosu ORFICHE'e) bağlı bir tablo oluşturulup ek alanların buraya kaydedilmesine yönelik bir sistem mevcuttur. Ancak bu sistem sadece ana tabloya bağlı çalışmaktadır.

Dolayısıyla, eğer amacımız fiş satırına veya bağlı başka bir tabloya ek alan oluşturmak ise bu alanların yazma-değiştirme-okuma ve silme işlemlerini LOD'un script dilini kullanarak biz yönetmeliyiz.

Aşağıda yaratılan ek kolona nasıl veri yazılacağına dair basit bir örnek paylaşıyorum. Bu örnein çalışabilmesi için LOD içerisinden ORFLINE tablosuna bağlı 876 numaralı bir custom tablonun bulunması gerekir.

Sipariş Fişi için "Data Entry Form" üzerindeki event'larda yazılması gerekenler;

Sub FormShow()
    Call GetData()
End Sub

Sub BeforeSave(proceed as Integer)
    Call SetLineArray()
End Sub

Sub AfterSave()
    AppTables[12].GetIntFieldR(RecHandle,"LOGICALREF",gSETLOGREF)
    Call SetData(gSETLOGREF)
End Sub

Yukarıda adı geçen metodları GLOBAL module içerisinde tanımlıyoruz;


Dim LineDataArr(128) as string

gSETLOGREF=0

Sub GetData()
     MaxGridLine=MGridLines("OrderLineGrid")
     for i=0 to MaxGridLine-1
       GetGridRowHandle("OrderLineGrid",i,recH)
       AppTables[13].GetIntFieldR(recH,"LOGICALREF",intLineRef)
       CustTables[876].Search(2,2,intLineRef)
       if not (DBErr <>0) then
           CustTables[876].GetTxtField("A_STR",txtDummy)
           SetCellText("OrderLineGrid",i,10001,txtDummy)
       end if
     next i
End Sub

Sub SetData(intLogref as Long)
    i=0
    _breakpoint
    CreateQuery(Qry)
    tblName = Application.GetTableName(13, Application.CompanyId, Application.FiscPerdId)
    Qry.AddTable("A", tblName)
    Qry.AddSelField("A", "LOGICALREF,")
    Qry.AddSelField("A", "LINENO_")
    Str(gSETLOGREF,LogRefTxt)
    MyWhereCond = "ORDFICHEREF = " + LogRefTxt

    Qry.AddWhereCond(MyWhereCond,1)
    Qry.Execute()
    if Qry.Ready = 1 then
       res = Qry.First()
       Do while res = 1
          Qry.GetFieldValue(1, 1, MyLineRef)
          Qry.GetFieldValue(2, 1, MyLineNo)
          if MyLineRef<>0 then
                CustTables[876].Search(2,2,MyLineRef)
                if (DBErr <>0) then
                    CustTables[876].NewRecord()
                    CustTables[876].SetIntField("PARLOGREF",MyLineRef)
                    CustTables[876].SetTxtField("A_STR",LineDataArr[MyLineNo-1])
                else
                    CustTables[876].SetTxtField("A_STR",LineDataArr[MyLineNo-1])
                end if
                CustTables[876].UpdateRecord()
          end if
          res =  Qry.Next()
       Loop
    end if
End Sub

Sub SetLineArray()
      MaxGridLine=MGridLines("OrderLineGrid")
      i=0
      for i=0 to MaxGridLine-1
          GetCellText("OrderLineGrid",i,10001,LineDataArr[i])
      next i
End Sub

 


29/04/15 09:11

Cevap vermek için giriş yapmanız gerekmektedir.