Burak

LGridList Satır Set Etme Sorunu

  Tiger/Logo Object Designer (LOD)

Merhaba;


Aşağıda belirteceğim kodlar ile LGridList nesnesine veri yazabiliyorum. 

Ancak satın alma faturaları için oluşturduğum LGridList nesnesinde, 5. indeks ve sonrası 'Index out of Range' hatası alıyorum (İndekse ulaşınca SetMGridRow  satırında)

Sadece ilk satıra yazılı kalarak bir sonra ki satırlara geçmiyor. 

5. indekste hata vermesine rağmen diğer satırları da çalıştırmıyor.

Döngü bittiğinde tek satır görüyorum.

Ayrıca LGridList 'lgsCellEdit' olmasına rağmen hücrelere de müdahale edemiyorum.


Yeni form oluşturdum, yeni LGridList oluşturdum, farklı versiyonların kütüphanelerinden de 'Upgrade Forms' işlemini uyguladım ancak sonuç değişmedi. 


Yardımlarınızı bekliyorum.


İyi çalışmalar.



SUB IrsaliyeleriGetir()

    ClearMGrid("gridListIrsaliye")    

    STR(_clientRef,_clientRef_Str)

    STR(_invoiceLogRef,_invoiceLogRefStr)
   
    _sqlText = " "
    _sqlText = _sqlText + " IF EXISTS ( SELECT  STF.LOGICALREF "
    _sqlText = _sqlText + " ,STF.FICHENO "
    _sqlText = _sqlText + " ,SUM(STL.AMOUNT) "
    _sqlText = _sqlText + " FROM    " + tableSTFICHE + " STF "
    _sqlText = _sqlText + " LEFT JOIN " + tableSTLINE + " STL ON STL.STFICHEREF = STF.LOGICALREF "
    _sqlText = _sqlText + " WHERE   STF.RECVREF = " + _clientRef_Str + " AND "
    _sqlText = _sqlText + " (STF.WFSTATUS = 0 OR (STF.WFSTATUS = " + _invoiceLogRefStr + " AND STF.WFSTATUS <> 0 )) AND STF.TRCODE IN (7,8) "
    _sqlText = _sqlText + " GROUP BY STF.LOGICALREF "
    _sqlText = _sqlText + " ,STF.FICHENO ) "
    _sqlText = _sqlText + " SELECT 1 "
    _sqlText = _sqlText + " ELSE "
    _sqlText = _sqlText + " SELECT 0 "

    CreateQuery(_query)
   
    _query.SetSQLText(_sqlText)
   
    _query.ExecuteDirect()

    _query.First()
   
    _query.GetFieldValue(1,1,_control)
       
    _query.Clear()

    IF _control = 1 THEN
   
        _sqlText = " "
        _sqlText = _sqlText + " SELECT  STF.LOGICALREF "
        _sqlText = _sqlText + " ,STF.FICHENO "
        _sqlText = _sqlText + " ,SUM(STL.AMOUNT) "
        _sqlText = _sqlText + " ,STF.WFSTATUS "
        _sqlText = _sqlText + " ,STF.LOGICALREF "
        _sqlText = _sqlText + " FROM    " + tableSTFICHE + " STF "
        _sqlText = _sqlText + " LEFT JOIN " + tableSTLINE + " STL ON STL.STFICHEREF = STF.LOGICALREF "
        _sqlText = _sqlText + " WHERE   (STF.RECVREF = " + _clientRef_Str + " AND "
        _sqlText = _sqlText + " STF.WFSTATUS = 0 OR (STF.WFSTATUS = " + _invoiceLogRefStr + " AND STF.WFSTATUS <> 0 ))  AND STF.TRCODE IN (7,8)"
        _sqlText = _sqlText + " GROUP BY STF.LOGICALREF,STF.WFSTATUS,STF.FICHENO "
        _sqlText = _sqlText + " ,STF.FICHENO "
   
        CreateQuery(_query)
       
        _query.SetSQLText(_sqlText)
       
        IF _query.ExecuteDirect() THEN
       
            _res = _query.First()
           
            _row = 0
           
            DO WHILE _res = 1

                _query.GetFieldValue(1,1,_stficheLogRef)
                _query.GetFieldValue(2,4,_stficheNo)    
                _query.GetFieldValue(3,3,_amount)    
                _query.GetFieldValue(4,1,_wfStatus)    
                _query.GetFieldValue(5,1,_irsRef)
           
                InsertGridRow("gridListIrsaliye",1)    
                SetMGridRow  ("gridListIrsaliye",_row)  
                   
                SetCellInt   ("gridListIrsaliye",_row,10003,_stficheLogRef)    
                SetCellText  ("gridListIrsaliye",_row,10001,_stficheNo)    
                SetCellFloat ("gridListIrsaliye",_row,10002,_amount)  
                SetCellInt   ("gridListIrsaliye",_row,10006,_irsRef)
                               
                IF _wfStatus > 0 THEN

                    SetCellInt("gridListIrsaliye",_row,10004,1)

                ELSE
               
                    SetCellInt("gridListIrsaliye",_row,10004,0)

                END IF
                   
                InvalidateGrid("gridListIrsaliye")    
                RefreshControl("gridListIrsaliye",1)
                                                   
                _row = _row + 1  
                               
                _res = _query.Next()
           
            LOOP
           
            _breakpoint
                           
        END IF
   
        _query.Clear()    
   
    END IF
                                       
END SUB




LGridList LOD


NaciO

Onaylanmış Cevap

SetMGridRow satırında hata ile karşılaşılmasından, aslında kolon indexi değil satır numarası ile ilgili sıkıntı yaşadığınızı anlıyorum. Kodunuzda aşağıdaki durumları kontrol ediniz;

1 - InsertMGridRow metodunun 2. parametresi, üzerine konumlanılan satırın öncesine veya sonrasına satır insert etmektedir. Satır değerlerini yazmaya çalıştığınız noktada yeni insert edilmiş satır üzerinde konumlanabildiğinizi kontrol etmelisiniz.

2 - row değişkeninin satır count değerini aşıp aşmadığını kontrol ediniz.

3 - kontrolleriniz esnasında kolonlardan birisine row değişkeninizi yazdırırsanız problemin neyin aşımından kaynaklandığını daha kolay tespit edebilirsiniz.


08/03/17 13:57


Burak

Günaydın Hocam;


MGridRow ile kontrol ettiğim de satır eklenmiyor. 0 da takılı kalıyor. Muhtemelen LGridList'in "Cell Edit" durumuna geçemeyişinden kaynaklanıyor. Aynı kodları buton ile yeni bağımsız bir forma taşıdığımda sorun çözüldü. Ama dediğiniz gibi satırı kontrol ettiğim de, artırmadığını gördüm. 


09/03/17 09:42

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