Reitero consulta para actualizar un campo con XBrowse

Reitero consulta para actualizar un campo con XBrowse

Postby José Camilo » Sat Feb 11, 2023 3: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-
José Camilo
 
Posts: 180
Joined: Wed Apr 07, 2021 3:56 pm

Re: Reitero consulta para actualizar un campo con XBrowse

Postby cnavarro » Sun Feb 12, 2023 3: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Reitero consulta para actualizar un campo con XBrowse

Postby José Camilo » Sun Feb 12, 2023 4: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 ,"<V>" ,.t.},;
{"Exit.bmp" ,"Sale de Browse" , "Salir" , {|| oDlg:end() },VK_ESCAPE,"<Escape>",.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->(DbAppend())
_ArtFor->Articulo := ArtFor->Articulo
_ArtFor->Detalle := ArtFor->Detalle
_ArtFor->Abrevia := ArtFor->Abrevia
_ArtFor->Costo := ArtFor->Costo
_ArtFor->StockMin := ArtFor->StockMin
_ArtFor->StockAct := ArtFor->StockAct
_ArtFor->Pedir := ArtFor->StockMin-ArtFor->StockAct
_ArtFor->Total := _ArtFor->Pedir*_ArtFor->Costo
select ArtFor
ArtFor->(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->Total := _ArtFor->Pedir*_ArtFor->Costo,msginfo('jjjj'),refXbrw(_ArtFor->(Recno())),_ArtFor->(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->Total := _ArtFor->Costo*_ArtFor->Pedir
_ArtFor->(DbSkip())
end
_ArtFor->(DbGoTo(regi))
return NIL
//-------------------------------------------------------------------------------------------------------------------------------------------------------------//
José Camilo
 
Posts: 180
Joined: Wed Apr 07, 2021 3:56 pm

Re: Reitero consulta para actualizar un campo con XBrowse

Postby cnavarro » 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: Select all  Expand view

    oBrw:oCol( "Total" ):bEditValue   := { || oBrw:oCol( "Pedir" ):Value * oBrw:oCol( "Costo" ):Value }
    oBrw:oCol( "Pedir" ):nEditType    := 1
 


que es lo mismo que

Code: Select all  Expand view

    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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Reitero consulta para actualizar un campo con XBrowse

Postby FranciscoA » Mon Feb 13, 2023 1:03 am

Saludos, Cristóbal.

Camilo:
Code: Select all  Expand view
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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Reitero consulta para actualizar un campo con XBrowse

Postby José Camilo » Mon Feb 13, 2023 1:24 am

Muchas gracias Cristobal y Francisco por su tiempo. Lo pruebo y comento. GRACIAS!!!
José Camilo
 
Posts: 180
Joined: Wed Apr 07, 2021 3:56 pm

Re: Reitero consulta para actualizar un campo con XBrowse

Postby José Camilo » Mon Feb 13, 2023 12:39 pm

Cristobal y Francisco.

Perfecto. GRACIAS!!!!

José Camilo
José Camilo
 
Posts: 180
Joined: Wed Apr 07, 2021 3:56 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests