FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Reitero consulta para actualizar un campo con XBrowse
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Reitero consulta para actualizar un campo con XBrowse
Posted: Sat Feb 11, 2023 03:18 PM

Buenos dias.

reitero esta consulta, tratando de expresarme mejor.

Tengo una DBF que muestro con Xbrowse.

tengo un campo "costo" otro campo "Pedir" y otro campo "total"

Modifico el campo "Pedir" editando la celda y lo modifica bien y actualiza el xBrowse.

Necesito modificar el campo "Total" con la multiplicacion de PEDIR*COSTO y no logro (no se como) hacerlo.

asi intento e incluso hice una funcion aparte y no lo consigo.

Se Puede realizar?

Si alguien me orienta lo agradecere.

  oBrw:aCols[ 7 ]:nEditType  := EDIT_GET

  oBrw:aCols[ 7 ]:bEditValid := {|| if(1=1,(_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo_ArtFor->(Eof()),msginfo('jjjj'),refXbrw(_ArtFor->(Recno()))_ArtFor->(Eof()),.t.),.f.) }

  oBrw:aCols[ 7 ]:lAutoSave  := .T.



  oBrw:aCols[ 8 ]:nFooterType:= AGGR_TOTAL





  oBrw:MakeTotals()

*----------------

//-------------------------------------------------------------------------------------------------------------------------------------------------------------//

function RefXBrw(regi)

select _ArtFor

_ArtFor->(DbGoTop())

While !_ArtFor->(Eof())

      _ArtFor->Total := _ArtFor->Costo*_ArtFor->Pedir

     _ArtFor->(DbSkip())

end

_ArtFor->(DbGoTo(regi))

return NIL

//-------------------------------------------------------------------------------------------------------------------------------------------------------------//

Gracias-

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Reitero consulta para actualizar un campo con XBrowse
Posted: Sun Feb 12, 2023 03:39 AM

Cambia el bEditValid por bEditValue

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Reitero consulta para actualizar un campo con XBrowse
Posted: Sun Feb 12, 2023 04:38 PM

Cristobal.

Disculpa mi bruteza pero cambiando lo que indicas me muestra un numero que no se de donde sale.

lo estare aplicando mal.

esta es la funcion completa. necesito poder editar los valores de la columna PEDIR y al hacerlo en la columna TOTAL se muestre el resultado

de multiplicar PEDIR*COSTO y se muestre la suma de de la columna TOTAL al pie.

hasta aca puedo editar el campo PEDIR y se actualiza el mismo, el resto no lo logro realizar.

Si puedes darle una ojeada te agradezco. Seguro es algo muy simple que no se hacer.

//------------------------------------------------------------------------------------------------------------------------------------------------------------*/

function AbmOC()

local napu

local aBotones := {}

local oDlg, oBrw, cAlias := cGetNewAlias( "_ARTFOR" )

local oBr, oFont

local titgral := 'Stock'

local atitcol := ''

local acampos := {}

local lcampos

Private oBar

acampos := {|| {str(ArtFor->Articulo,4)+' '+ArtFor->Detalle+' '+ArtFor->Abrevia } }

lcampos := {|| str(ArtFor->Articulo,4)+' '+ArtFor->Detalle+' '+ArtFor->Abrevia }

atitcol := "C贸d. Detalle Abrevia"

aBotones := { {"Impre1.bmp" ,"Edito" , "Edito" , {||/EditCS(_ArtFor->Pedir),/oBrw:MakeTotals(),oBrw:SetFocus(),oBrw:Refresh() },VK_RETURN,"<RETURN>",.f.},;

                     {"Impre1.bmp"   ,"Imprime OC"     , "Imprime OC " , {|| lstOC(),oBrw:SetFocus(),oBrw:Refresh()                                                  },VK_R     ,"&lt;V&gt;"     ,.t.},;

                     {"Exit.bmp"     ,"Sale de Browse" , "Salir"       , {|| oDlg:end()                                                                              },VK_ESCAPE,"&lt;Escape&gt;",.t.} ;

                  }

SET DATE ITALIAN

SET CENTURY ON

XBrNumFormat( 'E', .t. )

SetBalloon( .t. )

dbcloseall()

use colorfw new

use tecnico new

use corregir index corregi1 new

use acciones index accione1 new

use RamFor index RamFor1, RamFor2 new

use RubFor index RubFor1, RubFor2 new

use ProvFor index ProvFor1, ProvFor2 new

use ArtFor index ArtFor1, ArtFor2, ArtFor3, ArtFor4, ArtFor5 new

use _ArtFor index _ArtFor1, _ArtFor2 new

zap

select ArtFor

ArtFor->(DbGoTop())

While !ArtFor->(Eof())

     select _ArtFor

     _ArtFor-&gt;(DbAppend())

     _ArtFor-&gt;Articulo := ArtFor-&gt;Articulo

     _ArtFor-&gt;Detalle  := ArtFor-&gt;Detalle

     _ArtFor-&gt;Abrevia  := ArtFor-&gt;Abrevia

     _ArtFor-&gt;Costo    := ArtFor-&gt;Costo

     _ArtFor-&gt;StockMin := ArtFor-&gt;StockMin

     _ArtFor-&gt;StockAct := ArtFor-&gt;StockAct

     _ArtFor-&gt;Pedir    := ArtFor-&gt;StockMin-ArtFor-&gt;StockAct

     _ArtFor-&gt;Total    := _ArtFor-&gt;Pedir*_ArtFor-&gt;Costo

     select ArtFor

     ArtFor-&gt;(DbSkip())

end

select _ArtFor

_ArtFor->(DbGoTop())

DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15

DEFINE BRUSH oBr RESOURCE "beige2"

  DEFINE DIALOG oDlg FROM 1, 30 TO 650, 1050 FONT oFont TITLE 'Generador de Orden de Compra' PIXEL



  @ 4,5 XBROWSE oBrw  ;

           COLUMNS "Articulo", "left(Detalle,35)", "Abrevia", "Costo", "StockAct", "StockMin", "Pedir","Total" ;

           HEADERS "C贸d.", "Detalle", "Abr.", "Costo", "Stock Act", "Stock Min", "Pedir","Total";

           COLSIZES -10,150,-10,-10,-10,-10,-10,-10 OF oDlg ;

           SIZE 500,283 PIXEL ;

           JUSTIFY .T.,.f.,.f.,.t.,.t.,.t.,.t.,.t. ;

           ALIAS cAlias AUTOSORT FOOTERS LINES CELL NOBORDER ;

           BACKGROUND aGrad VERTICAL



  oBrw:nStretchCol   := 2

  oBrw:nRowHeight    := 30

  oBrw:nMarqueeStyle := 4

  // anulo el doble color d los registros

  oBrw:lContrastClr  := .f.



  // quitar barra horizontal

  oBrw:lHScroll := .f.



  oBrw:bKeyDown:={|nKey,nFlag|iif(veo(@nApu,@oBrw,aBotones,nKey),eval(aBotones[nApu,4]),NIL)}





  oBrw:aCols[ 7 ]:nEditType  := EDIT_GET

  oBrw:aCols[ 7 ]:bEditValid := {|| if(1=1,(_ArtFor-&gt;Total := _ArtFor-&gt;Pedir*_ArtFor-&gt;Costo,msginfo('jjjj'),refXbrw(_ArtFor-&gt;(Recno())),_ArtFor-&gt;(Eof()),.t.),.f.) }

  oBrw:aCols[ 7 ]:lAutoSave  := .T.



  oBrw:aCols[ 8 ]:nFooterType:= AGGR_TOTAL





  oBrw:MakeTotals()

  oBrw:CreateFromCode()

  cGrad := PadR( GradStr( BrwGrad( oBrw ) ), 128 )

  ACTIVATE DIALOG oDlg CENTERED on INIT (BtnBarNew( oBrw, @oDlg, aBotones))

RELEASE BRUSH oBr

RELEASE FONT oFont

dbcloseall()

return nil

//-------------------------------------------------------------------------------------------------------------------------------------------------------------//

//-------------------------------------------------------------------------------------------------------------------------------------------------------------//

function RefXBrw(regi)

select _ArtFor

_ArtFor->(DbGoTop())

While !_ArtFor->(Eof())

      _ArtFor-&gt;Total := _ArtFor-&gt;Costo*_ArtFor-&gt;Pedir

     _ArtFor-&gt;(DbSkip())

end

_ArtFor->(DbGoTo(regi))

return NIL

//-------------------------------------------------------------------------------------------------------------------------------------------------------------//

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Reitero consulta para actualizar un campo con XBrowse
Posted: Sun Feb 12, 2023 11:38 PM
A los objetos columnas los puedes referenciar por su header o por su posicion en el browse
Code (fw): Select all Collapse
聽 聽 oBrw:oCol( "Total" ):bEditValue 聽 := { || oBrw:oCol( "Pedir" ):Value * oBrw:oCol( "Costo" ):Value }
聽 聽 oBrw:oCol( "Pedir" ):nEditType 聽 聽:= 1
que es lo mismo que
Code (fw): Select all Collapse
聽 聽 oBrw:oCol( 8 ):bEditValue 聽 := { || oBrw:oCol( 7 ):Value * oBrw:oCol( 4 ):Value }
聽 聽 oBrw:oCol( 7 ):nEditType 聽 聽:= 1
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Reitero consulta para actualizar un campo con XBrowse
Posted: Mon Feb 13, 2023 01:03 AM
Saludos, Crist贸bal.

Camilo:
Code (fw): Select all Collapse
Aqui est谩 otro ejemplo parcial de como hacerlo:
function XBrwFactuDBF()
聽 聽local oDlg, oBrw, cAlias

聽 聽DbCreate("Tempo",{ {"Codigo" 聽 , "N", 聽4,0 } ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 {"Descrip" 聽, "C", 15,0 } ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 {"Cantidad" , "N", 10,0 } ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 {"Precio" 聽, "N", 10,2 } ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 {"ValorTot" , "N", 10,2 } })

聽 聽dbUseArea(.t.,,"Tempo","Tempo",.f.)

聽 聽DbSelectArea("Tempo")
聽 聽DbAppend()

聽 聽cAlias := Alias()

聽 聽DEFINE DIALOG oDlg SIZE 800,450 PIXEL TITLE "INVOICE"

聽 聽@ 10,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
聽 聽 聽 聽 聽 聽DATASOURCE cAlias ;
聽 聽 聽 聽 聽 聽COLUMNS "CODIGO", "DESCRIP", "CANTIDAD", "PRECIO", "VALORTOT" ;
聽 聽 聽 聽 聽 聽HEADERS "CODIGO", "DESCRIP", "CANTIDAD", "PRECIO", "VALORTOT" ;
聽 聽 聽 聽 聽 聽PICTURES "9999", nil, "9,999", "9,999,99, 999,999.99" ;
聽 聽 聽 聽 聽 聽CELL LINES FOOTERS NOBORDER FASTEDIT

聽 聽oBrw:nEditTypes := { EDIT_GET, EDIT_NONE, EDIT_GET, EDIT_GET, EDIT_NONE, EDIT_NONE, EDIT_NONE }

聽 聽WITH OBJECT oBrw:Codigo 
聽 聽 聽 :bEditValid 聽 聽 := { |oGet| oGet:VarGet() > 0 }
聽 聽 聽 :bOnChange 聽 聽 聽:= { |oCol| oBrw:Descrip:Value := "Codigo " + Str(oBrw:Codigo:Value,4) }
聽 聽END

聽 聽WITH OBJECT oBrw:Cantidad
聽 聽 聽 :bEditWhen 聽 聽 聽:= { || ! Empty( oBrw:Codigo:Value ) }
聽 聽 聽 :bOnChange 聽 聽 聽:= { || oBrw:MakeTotals(), oBrw:RefreshFooters() }
聽 聽 聽 :bEditValid 聽 聽 := { |oGet| oGet:VarGet() > 0 }
聽 聽END

聽 聽WITH OBJECT oBrw:Precio 
聽 聽 聽 :bEditWhen 聽 聽 聽:= { || ! Empty( oBrw:Codigo:Value ) .and. ! Empty( oBrw:Cantidad:Value ) }
聽 聽 聽 :bOnChange 聽 聽 聽:= { || oBrw:MakeTotals(), oBrw:RefreshFooters() } 
聽 聽 聽 :bEditValid 聽 聽 := { |oGet| oGet:VarGet() > 0 }
聽 聽END

聽 聽WITH OBJECT oBrw:ValorTot
聽 聽 聽 :bEditValue 聽 聽 := { || oBrw:Cantidad:Value * oBrw:Precio:Value }
聽 聽 聽 :cEditPicture 聽 := "999,999,999.99"
聽 聽 聽 :nFooterType 聽 聽:= AGGR_SUM
聽 聽END

聽 聽oBrw:bPastEof 聽 聽 聽:= { || If( Empty( oBrw:ValorTot:Value ), nil, ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ( (cAlias)->(DbAppend()),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:GoDown(),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:GoLeftMost(),;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oBrw:Refresh() ) ) ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽}

聽 聽oBrw:nHeadStrAligns := AL_CENTER

聽 聽oBrw:CreateFromCode()

聽 聽ACTIVATE DIALOG oDlg CENTERED ;
聽 聽 聽 聽 聽 聽 ON INIT ( oBrw:SetFocus() )

聽 聽Tempo->(DbCloseArea())
聽 聽Ferase("Tempo.dbf")
return nil
Francisco J. Alegr铆a P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Reitero consulta para actualizar un campo con XBrowse
Posted: Mon Feb 13, 2023 01:24 AM

Muchas gracias Cristobal y Francisco por su tiempo. Lo pruebo y comento. GRACIAS!!!

Posts: 212
Joined: Wed Apr 07, 2021 03:56 PM
Re: Reitero consulta para actualizar un campo con XBrowse
Posted: Mon Feb 13, 2023 12:39 PM

Cristobal y Francisco.

Perfecto. GRACIAS!!!!

Jos茅 Camilo

Continue the discussion