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


Uluç Karadeniz

Merhaba,


Eklenen sütun float tipinde ise ve ön taraftan değer girişi olmadan kaydediliyor ise LineDataArr text olduğu için 0 yerine boş tutuyor ve Tiger hata vererek kapanıyor. Aşağıdaki gibi boş olma durumunu kontrol edip 0'a manuel set etmeniz gerekli. Bir satır dolu bir satır boş olma ihtimali için LineDataArr[i] yerine LineDataArr[MyLineNo-1] kontrol edilmeli.


 if MyLineRef<>0 then
 CustTables[12].Search(2,2,MyLineRef)

 if LineDataArr3[MyLineNo-1] = "" then
 LineDataArr3[MyLineNo-1] = 0
 end if
 if LineDataArr4[MyLineNo-1] = "" then
 LineDataArr4[MyLineNo-1] = 0 
 end if
 if LineDataArr5[MyLineNo-1] = "" then
 LineDataArr5[MyLineNo-1] = 0 
 end if 
 
 
 if (DBErr <>0) then
 
 CustTables[12].NewRecord()
 CustTables[12].SetIntField("PARLOGREF",MyLineRef)
 CustTables[12].SetFltField("LME",LineDataArr3[MyLineNo-1])
 CustTables[12].SetFltField("PRIM",LineDataArr4[MyLineNo-1])
 CustTables[12].SetTxtField("DVZTURU",LineDataArr5[MyLineNo-1])
 else
 
 CustTables[12].SetFltField("LME",LineDataArr3[MyLineNo-1])
 CustTables[12].SetFltField("PRIM",LineDataArr4[MyLineNo-1])
 CustTables[12].SetTxtField("DVZTURU",LineDataArr5[MyLineNo-1])
 end if
 
 CustTables[12].UpdateRecord()
 
 end if




27/12/22 13:52

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