FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour XBROWSE --> ArrayData --> MaraiDB Rowset
Posts: 336
Joined: Mon Dec 07, 2009 02:49 PM
XBROWSE --> ArrayData --> MaraiDB Rowset
Posted: Sun Sep 21, 2025 09:07 AM
Dear Antonio

The below XBROWSE usage datasource as ArrayData which is created by TArraydata using MariaDB rowset.

How to assign values to the ArrayData column via XBROWSE control for the current record similar TDataRow v ?

tried below code but its not working.. As Data Access Layer Diagram
                        oBrwInv:aArrayData:FieldGet( "prd_id" ) := 1
                        oBrwInv:aArrayData:FieldGet( "prd_name")  := 'Abc'
Please guide on the XBROWSE definition column names array when datasource is TArrayData which is generated from MariaDB Rowset.
 //TArrayData is created from MariaDB Rowset
 aInvRows := TArrayData():New( oApp:oDBConn, Q_INV_DET_BYID(  STR(nTranId)  ) ) 
 
 //Is aInvCols correct paramter to provide column names
 

    aInvCols :=  {"prd_name ", "batch_no",  "batch_mrp" , "batch_rate" , "bill_qty"  ,"free_qty" ,"schm_percent" ,"schm_amount" , "disc_percent1" ,"disc_amt1" ,"prd_net_amount" } 
    aInvHdrs :=     { "Item ", "Batch No",  "M.R.P." , "Rate" ,     "Bill" , "Free" ,  "%",   "Amt.(-)",    "%" ,  "Amt.(-)" ,  "Amount" }
    aInvColSizes := {270    ,          110,         90 ,      90,         63,     63 ,  45 ,         72 ,   45   ,     72   ,    100    }
    aInvColPict  := {NIL    ,         NIL, "@Z 99999.99" , "@Z 99999.99" , "@Z 9,999" , "@Z 9,999" , "@Z 99.99" , "@Z 99,999.99"  , "@Z 99.99" , "@Z 99,999.99" , "@Z 99,99,999.99"  }
    @ 130, 020 XBROWSE oBrwInv SIZE 1130, 350 PIXEL OF oWnd FONT oApp:oFontGet  ;
        DATASOURCE aTInvRows ;
        COLUMNS aInvCols;
        HEADERS aInvHdrs;
        PICTURES aInvColPict ;
        COLSIZES aInvColSizes  ;
        CELL LINES NOBORDER FASTEDIT FOOTERS
		
		
     WITH OBJECT oBrwInv:aCols[ 1 ]

        :nEditType     = EDIT_GET
        :bGetChange := < | k, f, o |
                        
                        oBrwInv:aArrayData:FieldGet( "prd_id" ) := 1
                        oBrwInv:aArrayData:FieldGet( "prd_name")  := 'Abc' 
                        //popSaleEditInvRecDlg( oBrwTxnPrd , oBrwTxnBFM , aVTxnM , aTTRec)
                        //BFMSumUpd( oBrwTxnBFM, oBrwTxnPrd )
                        //InvCalcNetAmt( oBrwTxnBFM, oBrwTxnPrd,  aVTxnM, aTTRec[ IDX_VT01_ROUND_YN  ]  )
                        //oBrwTxnPrd:GoToCol( oBrwTxnPrd:aCols[ TXN_INV_PRD_BATCH_NO ] )
                        oBrwInv:RefreshCurrent()
                        oBrwInv:SetFocus()
                        oWnd:Update()

                        >

     END
Thanks

Shridhar

FWH 24.04, BCC 7 32 bit, MariaDB
Posts: 336
Joined: Mon Dec 07, 2009 02:49 PM
Re: XBROWSE --&gt; ArrayData --&gt; MaraiDB Rowset
Posted: Sun Sep 21, 2025 09:12 AM
Dear All ,

Please ignore this refer below link.

https://forums.fivetechsupport.com/viewtopic.php?t=45961
Thanks

Shridhar

FWH 24.04, BCC 7 32 bit, MariaDB
Posts: 6984
Joined: Fri Oct 07, 2005 07:07 PM
Re: XBROWSE --&gt; ArrayData --&gt; MaraiDB Rowset
Posted: Sun Sep 21, 2025 10:35 AM
Maybe this can help - from AI ? Best regards, Otto
What’s happening / where it breaks:

The data source is TArrayData():New(…). To set field values you need FieldPut(), not FieldGet() (which only reads).

In aInvCols there’s a trailing space in "prd_name " → it won’t match the field name.

In DATASOURCE aTInvRows there’s likely a typo (above it’s aInvRows).

For cell edits, :bOnPostEdit or :bSetGet are often more robust than :bGetChange (though it can work depending on the setup).

// 1) Spaltennamen ohne Tail-Space
aInvCols := {"prd_name", "batch_no", "batch_mrp", "batch_rate", "bill_qty", "free_qty", ;
             "schm_percent", "schm_amount", "disc_percent1", "disc_amt1", "prd_net_amount"}

// 2) Richtige Datenquelle einsetzen (ohne Tippfehler)
@ 130,020 XBROWSE oBrwInv SIZE 1130,350 PIXEL OF oWnd FONT oApp:oFontGet ;
   DATASOURCE aInvRows ;   // nicht aTInvRows
   COLUMNS aInvCols ;
   HEADERS aInvHdrs ;
   PICTURES aInvColPict ;
   COLSIZES aInvColSizes ;
   CELL LINES NOBORDER FASTEDIT FOOTERS

// 3) Werte setzen: FieldPut statt FieldGet
WITH OBJECT oBrwInv:aCols[1]
   :nEditType  := EDIT_GET
   :bOnPostEdit := { |oCol, xOld, xNew| ;
      oBrwInv:aArrayData:FieldPut( "prd_id",    1 ) , ;
      oBrwInv:aArrayData:FieldPut( "prd_name", "Abc" ), ;
      oBrwInv:RefreshCurrent(), ;
      NIL }
END
Posts: 336
Joined: Mon Dec 07, 2009 02:49 PM
Re: XBROWSE --&gt; ArrayData --&gt; MaraiDB Rowset
Posted: Sun Sep 21, 2025 10:51 AM
Dear Otto ,

Thanks a lot for the solution..! Now I came to know that the FieldPut method accept FieldName which I did not know. Thanks in advance..!!
METHOD FieldPut( nFld, uValue )
Thanks

Shridhar

FWH 24.04, BCC 7 32 bit, MariaDB
Posts: 336
Joined: Mon Dec 07, 2009 02:49 PM
Re: XBROWSE --&gt; ArrayData --&gt; MaraiDB Rowset
Posted: Sun Sep 21, 2025 12:15 PM
Dear Otto ,

But not able to execute the below method to get Field Value. Could you please provide method to get field value.
oBrwInvD:aArrayData:FieldPos("prd_id")
Thanks

Shridhar

FWH 24.04, BCC 7 32 bit, MariaDB

Continue the discussion